vite-plugin-solid 3.0.0-next.1 → 3.0.0-next.3

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.
@@ -136,6 +136,7 @@ function solidPlugin(options = {}) {
136
136
  let projectRoot = process.cwd();
137
137
  let isTestMode = false;
138
138
  let isBuild = false;
139
+ let base = '/';
139
140
  let solidPkgsConfig;
140
141
  return {
141
142
  name: 'solid',
@@ -239,8 +240,42 @@ function solidPlugin(options = {}) {
239
240
  },
240
241
  configResolved(config) {
241
242
  isBuild = config.command === 'build';
243
+ base = config.base;
242
244
  needHmr = config.command === 'serve' && config.mode !== 'production' && options.hot !== false && !options.refresh?.disabled;
243
245
  },
246
+ configureServer(server) {
247
+ if (!needHmr) return;
248
+ // When a module has a syntax error, Vite sends the error overlay via
249
+ // WebSocket but the failed import triggers invalidation in solid-refresh.
250
+ // This propagates up to @refresh reload boundaries (e.g. document-level
251
+ // App components in SSR), causing a full-reload that overrides the overlay.
252
+ // We suppress update/full-reload messages that immediately follow an error.
253
+ const hot = server.hot ?? server.ws;
254
+ if (!hot) return;
255
+ let lastErrorTime = 0;
256
+ const origSend = hot.send.bind(hot);
257
+ hot.send = function (...args) {
258
+ const payload = args[0];
259
+ if (typeof payload === 'object' && payload) {
260
+ if (payload.type === 'error') {
261
+ lastErrorTime = Date.now();
262
+ } else if (lastErrorTime && (payload.type === 'full-reload' || payload.type === 'update')) {
263
+ if (Date.now() - lastErrorTime < 200) return;
264
+ lastErrorTime = 0;
265
+ }
266
+ }
267
+ return origSend(...args);
268
+ };
269
+ },
270
+ hotUpdate() {
271
+ // solid-refresh only injects HMR boundaries into client modules, so
272
+ // non-client environments have no accept handlers. Without this, Vite
273
+ // would see no boundaries and send full-reload messages that race with
274
+ // client-side HMR updates.
275
+ if (this.environment.name !== 'client') {
276
+ return [];
277
+ }
278
+ },
244
279
  resolveId(id) {
245
280
  if (id === runtimePublicPath) return id;
246
281
  if (id === VIRTUAL_MANIFEST_ID) return RESOLVED_VIRTUAL_MANIFEST_ID;
@@ -251,8 +286,9 @@ function solidPlugin(options = {}) {
251
286
  if (!isBuild) return DEV_MANIFEST_CODE;
252
287
  const manifestPath = path.resolve(projectRoot, 'dist/client/.vite/manifest.json');
253
288
  if (fs.existsSync(manifestPath)) {
254
- const json = fs.readFileSync(manifestPath, 'utf-8');
255
- return `export default ${json};`;
289
+ const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf-8'));
290
+ manifest._base = base;
291
+ return `export default ${JSON.stringify(manifest)};`;
256
292
  }
257
293
  return DEV_MANIFEST_CODE;
258
294
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/lazy-module-url.ts","../../src/index.ts"],"sourcesContent":["import type { PluginObj, types as t } from '@babel/core';\n\nexport const LAZY_PLACEHOLDER_PREFIX = '__SOLID_LAZY_MODULE__:';\n\n/**\n * Detects whether a CallExpression argument is `() => import(\"specifier\")`\n * and returns the specifier string if so.\n */\nfunction extractDynamicImportSpecifier(node: t.Node): string | null {\n if (node.type !== 'ArrowFunctionExpression' && node.type !== 'FunctionExpression') return null;\n\n let callExpr: t.CallExpression | null = null;\n if (node.body.type === 'CallExpression') {\n callExpr = node.body;\n } else if (\n node.body.type === 'BlockStatement' &&\n node.body.body.length === 1 &&\n node.body.body[0].type === 'ReturnStatement' &&\n node.body.body[0].argument?.type === 'CallExpression'\n ) {\n callExpr = node.body.body[0].argument;\n }\n if (!callExpr) return null;\n\n if (callExpr.callee.type !== 'Import') return null;\n if (callExpr.arguments.length !== 1) return null;\n\n const arg = callExpr.arguments[0];\n if (arg.type !== 'StringLiteral') return null;\n\n return arg.value;\n}\n\n/**\n * Babel plugin that detects `lazy(() => import(\"specifier\"))` calls\n * and injects a placeholder as the second argument. The placeholder\n * is resolved to a real path by the Vite transform hook using this.resolve().\n */\nexport default function lazyModuleUrlPlugin(): PluginObj {\n return {\n name: 'solid-lazy-module-url',\n visitor: {\n CallExpression(nodePath, state) {\n if (!state.filename) return;\n const { node } = nodePath;\n\n if (node.callee.type !== 'Identifier' || node.callee.name !== 'lazy') return;\n\n const binding = nodePath.scope.getBinding('lazy');\n if (!binding || binding.kind !== 'module') return;\n const bindingPath = binding.path;\n if (\n bindingPath.type !== 'ImportSpecifier' ||\n bindingPath.parent.type !== 'ImportDeclaration'\n )\n return;\n const source = (bindingPath.parent as t.ImportDeclaration).source.value;\n if (source !== 'solid-js') return;\n\n if (node.arguments.length >= 2) return;\n if (node.arguments.length !== 1) return;\n\n const specifier = extractDynamicImportSpecifier(node.arguments[0] as t.Node);\n if (!specifier) return;\n\n node.arguments.push({\n type: 'StringLiteral',\n value: LAZY_PLACEHOLDER_PREFIX + specifier,\n } as t.StringLiteral);\n },\n },\n };\n}\n","import * as babel from '@babel/core';\nimport solid from 'babel-preset-solid';\nimport { existsSync, 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 lazyModuleUrl, { LAZY_PLACEHOLDER_PREFIX } from './lazy-module-url.js';\nimport path from 'path';\nimport type { Alias, AliasOptions, FilterPattern, Plugin } from 'vite';\nimport { createFilter, version } 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\nconst isVite6 = +version.split('.')[0] >= 6;\n\nconst VIRTUAL_MANIFEST_ID = 'virtual:solid-manifest';\nconst RESOLVED_VIRTUAL_MANIFEST_ID = '\\0' + VIRTUAL_MANIFEST_ID;\n\nconst DEV_MANIFEST_CODE = `export default new Proxy({}, {\n get(_, key) {\n if (typeof key !== \"string\") return undefined;\n return { file: \"/\" + key };\n }\n});`;\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.\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 * @deprecated use `refresh` instead\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 * Remove 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 * Remove the last closing tag from template strings. Enabled by default even when `omitNestedClosingTags` is disabled.\n * Can be disabled for compatibility for some browser-like environments.\n *\n * @default true\n */\n omitLastClosingTag?: boolean;\n\n /**\n * Remove unnecessary quotes from template strings.\n * Can be disabled for compatibility for some browser-like environments.\n *\n * @default true\n */\n omitQuotes?: 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 * Enable dev-mode compilation output. When true, the compiler emits\n * additional runtime checks (e.g. hydration mismatch assertions).\n * Automatically set to true during `vite dev` — override here to\n * force on or off.\n *\n * @default auto (true in dev, false in build)\n */\n dev?: boolean;\n };\n\n\n refresh: Omit<RefreshOptions & { disabled: boolean }, 'bundler' | 'fixRender' | 'jsx'>;\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 let isTestMode = false;\n let isBuild = false;\n let solidPkgsConfig: Awaited<ReturnType<typeof crawlFrameworkPkgs>>;\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 explicitly 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 isTestMode = userConfig.mode === 'test';\n\n if (!userConfig.resolve) userConfig.resolve = {};\n userConfig.resolve.alias = normalizeAliases(userConfig.resolve && userConfig.resolve.alias);\n\n 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', '@solidjs/web']\n : [];\n\n const userTest = (userConfig as any).test ?? {};\n const test = {} as any;\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 userTest.setupFiles === 'string'\n ? [userTest.setupFiles]\n : userTest.setupFiles || [];\n\n if (!userTest.environment && !options.ssr) {\n test.environment = 'jsdom';\n }\n\n if (\n !userTest.server?.deps?.external?.find((item: string | RegExp) =>\n /solid-js/.test(item.toString()),\n )\n ) {\n test.server = { deps: { external: [/solid-js/] } };\n }\n if (!userTest.browser?.enabled) {\n // vitest browser mode already has bundled jest-dom assertions\n // https://main.vitest.dev/guide/browser/assertion-api.html#assertion-api\n const jestDomImport = getJestDomExport(userSetupFiles);\n if (jestDomImport) {\n test.setupFiles = [jestDomImport];\n }\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: isVite6\n ? undefined\n : [\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 ...(!isVite6 ? { ssr: solidPkgsConfig.ssr } : {}),\n ...(test.server ? { test } : {}),\n };\n },\n\n // @ts-ignore This hook only works in Vite 6\n async configEnvironment(name, config, opts) {\n config.resolve ??= {};\n // Emulate Vite default fallback for `resolve.conditions` if not set\n if (config.resolve.conditions == null) {\n // @ts-ignore These exports only exist in Vite 6\n const { defaultClientConditions, defaultServerConditions } = await import('vite');\n if (config.consumer === 'client' || name === 'client' || opts.isSsrTargetWebworker) {\n config.resolve.conditions = [...defaultClientConditions];\n } else {\n config.resolve.conditions = [...defaultServerConditions];\n }\n }\n config.resolve.conditions = [\n 'solid',\n ...(replaceDev ? ['development'] : []),\n ...(isTestMode && !opts.isSsrTargetWebworker && !options.ssr ? ['browser'] : []),\n ...config.resolve.conditions,\n ];\n\n // Set resolve.noExternal and resolve.external for SSR environment (Vite 6+)\n // Only set resolve.external if noExternal is not true (to avoid conflicts with plugins like Cloudflare)\n if (isVite6 && name === 'ssr' && solidPkgsConfig) {\n if (config.resolve.noExternal !== true) {\n config.resolve.noExternal = [\n ...(Array.isArray(config.resolve.noExternal) ? config.resolve.noExternal : []),\n ...solidPkgsConfig.ssr.noExternal,\n ];\n config.resolve.external = [\n ...(Array.isArray(config.resolve.external) ? config.resolve.external : []),\n ...solidPkgsConfig.ssr.external,\n ];\n }\n }\n },\n\n configResolved(config) {\n isBuild = config.command === 'build';\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 if (id === VIRTUAL_MANIFEST_ID) return RESOLVED_VIRTUAL_MANIFEST_ID;\n },\n\n load(id) {\n if (id === runtimePublicPath) return runtimeCode;\n if (id === RESOLVED_VIRTUAL_MANIFEST_ID) {\n if (!isBuild) return DEV_MANIFEST_CODE;\n const manifestPath = path.resolve(projectRoot, 'dist/client/.vite/manifest.json');\n if (existsSync(manifestPath)) {\n const json = readFileSync(manifestPath, 'utf-8');\n return `export default ${json};`;\n }\n return DEV_MANIFEST_CODE;\n }\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)) {\n return null;\n }\n\n id = id.replace(/\\?.*$/, '');\n\n if (!(/\\.[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 // We need to know if the current file extension has a typescript options tied to it\n const shouldBeProcessedWithTypescript =\n /\\.[mc]?tsx$/i.test(id) ||\n 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 'decorators',\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, dev: replaceDev, ...(options.solid || {}) }]],\n plugins: [\n [lazyModuleUrl],\n ...(needHmr && !isSsr && !inNodeModules ? [[solidRefresh, {\n ...(options.refresh || {}),\n bundler: 'vite',\n fixRender: true,\n // TODO unfortunately, even with SSR enabled for refresh\n // it still doesn't work, so now we have to disable\n // this config\n jsx: false,\n }]] : []),\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\n let code = result.code || '';\n\n // Resolve lazy() moduleUrl placeholders using Vite's resolver\n const placeholderRe = new RegExp(\n '\"' + LAZY_PLACEHOLDER_PREFIX + '([^\"]+)\"',\n 'g',\n );\n let match;\n const resolutions: Array<{ placeholder: string; resolved: string }> = [];\n while ((match = placeholderRe.exec(code)) !== null) {\n const specifier = match[1];\n const resolved = await this.resolve(specifier, id);\n if (resolved) {\n const cleanId = resolved.id.split('?')[0];\n resolutions.push({\n placeholder: match[0],\n resolved: '\"' + path.relative(projectRoot, cleanId) + '\"',\n });\n }\n }\n for (const { placeholder, resolved } of resolutions) {\n code = code.replace(placeholder, resolved);\n }\n\n return { 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\nexport type ViteManifest = Record<\n string,\n {\n file: string;\n css?: string[];\n isEntry?: boolean;\n isDynamicEntry?: boolean;\n imports?: string[];\n }\n>;\n"],"names":["LAZY_PLACEHOLDER_PREFIX","extractDynamicImportSpecifier","node","type","callExpr","body","length","argument","callee","arguments","arg","value","lazyModuleUrlPlugin","name","visitor","CallExpression","nodePath","state","filename","binding","scope","getBinding","kind","bindingPath","path","parent","source","specifier","push","require","createRequire","import","runtimePublicPath","runtimeFilePath","resolve","runtimeCode","readFileSync","isVite6","version","split","VIRTUAL_MANIFEST_ID","RESOLVED_VIRTUAL_MANIFEST_ID","DEV_MANIFEST_CODE","getExtension","index","lastIndexOf","substring","replace","containsSolidField","fields","keys","Object","i","key","getJestDomExport","setupFiles","some","test","undefined","find","e","solidPlugin","options","filter","createFilter","include","exclude","needHmr","replaceDev","projectRoot","process","cwd","isTestMode","isBuild","solidPkgsConfig","enforce","config","userConfig","command","dev","root","mode","alias","normalizeAliases","crawlFrameworkPkgs","viteUserConfig","isFrameworkPkgByJson","pkgJson","exports","nestedDeps","userTest","userSetupFiles","environment","ssr","server","deps","external","item","toString","browser","enabled","jestDomImport","conditions","dedupe","replacement","optimizeDeps","configEnvironment","opts","defaultClientConditions","defaultServerConditions","consumer","isSsrTargetWebworker","noExternal","Array","isArray","configResolved","hot","refresh","disabled","resolveId","id","load","manifestPath","existsSync","json","transform","transformOptions","isSsr","currentFileExtension","extensionsToWatch","extensions","allExtensions","map","extension","includes","inNodeModules","solidOptions","generate","hydratable","shouldBeProcessedWithTypescript","extensionName","extensionOptions","typescript","plugins","sourceFileName","presets","solid","lazyModuleUrl","solidRefresh","bundler","fixRender","jsx","ast","sourceMaps","configFile","babelrc","parserOpts","babelUserOptions","babel","babelOptions","Promise","mergeAndConcat","result","transformAsync","code","placeholderRe","RegExp","match","resolutions","exec","resolved","cleanId","placeholder","relative","entries"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/lazy-module-url.ts","../../src/index.ts"],"sourcesContent":["import type { PluginObj, types as t } from '@babel/core';\n\nexport const LAZY_PLACEHOLDER_PREFIX = '__SOLID_LAZY_MODULE__:';\n\n/**\n * Detects whether a CallExpression argument is `() => import(\"specifier\")`\n * and returns the specifier string if so.\n */\nfunction extractDynamicImportSpecifier(node: t.Node): string | null {\n if (node.type !== 'ArrowFunctionExpression' && node.type !== 'FunctionExpression') return null;\n\n let callExpr: t.CallExpression | null = null;\n if (node.body.type === 'CallExpression') {\n callExpr = node.body;\n } else if (\n node.body.type === 'BlockStatement' &&\n node.body.body.length === 1 &&\n node.body.body[0].type === 'ReturnStatement' &&\n node.body.body[0].argument?.type === 'CallExpression'\n ) {\n callExpr = node.body.body[0].argument;\n }\n if (!callExpr) return null;\n\n if (callExpr.callee.type !== 'Import') return null;\n if (callExpr.arguments.length !== 1) return null;\n\n const arg = callExpr.arguments[0];\n if (arg.type !== 'StringLiteral') return null;\n\n return arg.value;\n}\n\n/**\n * Babel plugin that detects `lazy(() => import(\"specifier\"))` calls\n * and injects a placeholder as the second argument. The placeholder\n * is resolved to a real path by the Vite transform hook using this.resolve().\n */\nexport default function lazyModuleUrlPlugin(): PluginObj {\n return {\n name: 'solid-lazy-module-url',\n visitor: {\n CallExpression(nodePath, state) {\n if (!state.filename) return;\n const { node } = nodePath;\n\n if (node.callee.type !== 'Identifier' || node.callee.name !== 'lazy') return;\n\n const binding = nodePath.scope.getBinding('lazy');\n if (!binding || binding.kind !== 'module') return;\n const bindingPath = binding.path;\n if (\n bindingPath.type !== 'ImportSpecifier' ||\n bindingPath.parent.type !== 'ImportDeclaration'\n )\n return;\n const source = (bindingPath.parent as t.ImportDeclaration).source.value;\n if (source !== 'solid-js') return;\n\n if (node.arguments.length >= 2) return;\n if (node.arguments.length !== 1) return;\n\n const specifier = extractDynamicImportSpecifier(node.arguments[0] as t.Node);\n if (!specifier) return;\n\n node.arguments.push({\n type: 'StringLiteral',\n value: LAZY_PLACEHOLDER_PREFIX + specifier,\n } as t.StringLiteral);\n },\n },\n };\n}\n","import * as babel from '@babel/core';\nimport solid from 'babel-preset-solid';\nimport { existsSync, 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 lazyModuleUrl, { LAZY_PLACEHOLDER_PREFIX } from './lazy-module-url.js';\nimport path from 'path';\nimport type { Alias, AliasOptions, FilterPattern, Plugin } from 'vite';\nimport { createFilter, version } 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\nconst isVite6 = +version.split('.')[0] >= 6;\n\nconst VIRTUAL_MANIFEST_ID = 'virtual:solid-manifest';\nconst RESOLVED_VIRTUAL_MANIFEST_ID = '\\0' + VIRTUAL_MANIFEST_ID;\n\nconst DEV_MANIFEST_CODE = `export default new Proxy({}, {\n get(_, key) {\n if (typeof key !== \"string\") return undefined;\n return { file: \"/\" + key };\n }\n});`;\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.\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 * @deprecated use `refresh` instead\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 * Remove 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 * Remove the last closing tag from template strings. Enabled by default even when `omitNestedClosingTags` is disabled.\n * Can be disabled for compatibility for some browser-like environments.\n *\n * @default true\n */\n omitLastClosingTag?: boolean;\n\n /**\n * Remove unnecessary quotes from template strings.\n * Can be disabled for compatibility for some browser-like environments.\n *\n * @default true\n */\n omitQuotes?: 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 * Enable dev-mode compilation output. When true, the compiler emits\n * additional runtime checks (e.g. hydration mismatch assertions).\n * Automatically set to true during `vite dev` — override here to\n * force on or off.\n *\n * @default auto (true in dev, false in build)\n */\n dev?: boolean;\n };\n\n\n refresh: Omit<RefreshOptions & { disabled: boolean }, 'bundler' | 'fixRender' | 'jsx'>;\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 let isTestMode = false;\n let isBuild = false;\n let base = '/';\n let solidPkgsConfig: Awaited<ReturnType<typeof crawlFrameworkPkgs>>;\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 explicitly 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 isTestMode = userConfig.mode === 'test';\n\n if (!userConfig.resolve) userConfig.resolve = {};\n userConfig.resolve.alias = normalizeAliases(userConfig.resolve && userConfig.resolve.alias);\n\n 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', '@solidjs/web']\n : [];\n\n const userTest = (userConfig as any).test ?? {};\n const test = {} as any;\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 userTest.setupFiles === 'string'\n ? [userTest.setupFiles]\n : userTest.setupFiles || [];\n\n if (!userTest.environment && !options.ssr) {\n test.environment = 'jsdom';\n }\n\n if (\n !userTest.server?.deps?.external?.find((item: string | RegExp) =>\n /solid-js/.test(item.toString()),\n )\n ) {\n test.server = { deps: { external: [/solid-js/] } };\n }\n if (!userTest.browser?.enabled) {\n // vitest browser mode already has bundled jest-dom assertions\n // https://main.vitest.dev/guide/browser/assertion-api.html#assertion-api\n const jestDomImport = getJestDomExport(userSetupFiles);\n if (jestDomImport) {\n test.setupFiles = [jestDomImport];\n }\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: isVite6\n ? undefined\n : [\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 ...(!isVite6 ? { ssr: solidPkgsConfig.ssr } : {}),\n ...(test.server ? { test } : {}),\n };\n },\n\n // @ts-ignore This hook only works in Vite 6\n async configEnvironment(name, config, opts) {\n config.resolve ??= {};\n // Emulate Vite default fallback for `resolve.conditions` if not set\n if (config.resolve.conditions == null) {\n // @ts-ignore These exports only exist in Vite 6\n const { defaultClientConditions, defaultServerConditions } = await import('vite');\n if (config.consumer === 'client' || name === 'client' || opts.isSsrTargetWebworker) {\n config.resolve.conditions = [...defaultClientConditions];\n } else {\n config.resolve.conditions = [...defaultServerConditions];\n }\n }\n config.resolve.conditions = [\n 'solid',\n ...(replaceDev ? ['development'] : []),\n ...(isTestMode && !opts.isSsrTargetWebworker && !options.ssr ? ['browser'] : []),\n ...config.resolve.conditions,\n ];\n\n // Set resolve.noExternal and resolve.external for SSR environment (Vite 6+)\n // Only set resolve.external if noExternal is not true (to avoid conflicts with plugins like Cloudflare)\n if (isVite6 && name === 'ssr' && solidPkgsConfig) {\n if (config.resolve.noExternal !== true) {\n config.resolve.noExternal = [\n ...(Array.isArray(config.resolve.noExternal) ? config.resolve.noExternal : []),\n ...solidPkgsConfig.ssr.noExternal,\n ];\n config.resolve.external = [\n ...(Array.isArray(config.resolve.external) ? config.resolve.external : []),\n ...solidPkgsConfig.ssr.external,\n ];\n }\n }\n },\n\n configResolved(config) {\n isBuild = config.command === 'build';\n base = config.base;\n needHmr = config.command === 'serve' && config.mode !== 'production' && (options.hot !== false && !options.refresh?.disabled);\n },\n\n configureServer(server) {\n if (!needHmr) return;\n // When a module has a syntax error, Vite sends the error overlay via\n // WebSocket but the failed import triggers invalidation in solid-refresh.\n // This propagates up to @refresh reload boundaries (e.g. document-level\n // App components in SSR), causing a full-reload that overrides the overlay.\n // We suppress update/full-reload messages that immediately follow an error.\n const hot = server.hot ?? (server as any).ws;\n if (!hot) return;\n let lastErrorTime = 0;\n const origSend = hot.send.bind(hot);\n hot.send = function (this: any, ...args: any[]) {\n const payload = args[0];\n if (typeof payload === 'object' && payload) {\n if (payload.type === 'error') {\n lastErrorTime = Date.now();\n } else if (lastErrorTime && (payload.type === 'full-reload' || payload.type === 'update')) {\n if (Date.now() - lastErrorTime < 200) return;\n lastErrorTime = 0;\n }\n }\n return origSend(...args);\n } as typeof hot.send;\n },\n\n hotUpdate() {\n // solid-refresh only injects HMR boundaries into client modules, so\n // non-client environments have no accept handlers. Without this, Vite\n // would see no boundaries and send full-reload messages that race with\n // client-side HMR updates.\n if (this.environment.name !== 'client') {\n return [];\n }\n },\n\n resolveId(id) {\n if (id === runtimePublicPath) return id;\n if (id === VIRTUAL_MANIFEST_ID) return RESOLVED_VIRTUAL_MANIFEST_ID;\n },\n\n load(id) {\n if (id === runtimePublicPath) return runtimeCode;\n if (id === RESOLVED_VIRTUAL_MANIFEST_ID) {\n if (!isBuild) return DEV_MANIFEST_CODE;\n const manifestPath = path.resolve(projectRoot, 'dist/client/.vite/manifest.json');\n if (existsSync(manifestPath)) {\n const manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));\n manifest._base = base;\n return `export default ${JSON.stringify(manifest)};`;\n }\n return DEV_MANIFEST_CODE;\n }\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)) {\n return null;\n }\n\n id = id.replace(/\\?.*$/, '');\n\n if (!(/\\.[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 // We need to know if the current file extension has a typescript options tied to it\n const shouldBeProcessedWithTypescript =\n /\\.[mc]?tsx$/i.test(id) ||\n 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 'decorators',\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, dev: replaceDev, ...(options.solid || {}) }]],\n plugins: [\n [lazyModuleUrl],\n ...(needHmr && !isSsr && !inNodeModules ? [[solidRefresh, {\n ...(options.refresh || {}),\n bundler: 'vite',\n fixRender: true,\n // TODO unfortunately, even with SSR enabled for refresh\n // it still doesn't work, so now we have to disable\n // this config\n jsx: false,\n }]] : []),\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\n let code = result.code || '';\n\n // Resolve lazy() moduleUrl placeholders using Vite's resolver\n const placeholderRe = new RegExp(\n '\"' + LAZY_PLACEHOLDER_PREFIX + '([^\"]+)\"',\n 'g',\n );\n let match;\n const resolutions: Array<{ placeholder: string; resolved: string }> = [];\n while ((match = placeholderRe.exec(code)) !== null) {\n const specifier = match[1];\n const resolved = await this.resolve(specifier, id);\n if (resolved) {\n const cleanId = resolved.id.split('?')[0];\n resolutions.push({\n placeholder: match[0],\n resolved: '\"' + path.relative(projectRoot, cleanId) + '\"',\n });\n }\n }\n for (const { placeholder, resolved } of resolutions) {\n code = code.replace(placeholder, resolved);\n }\n\n return { 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\nexport type ViteManifest = Record<\n string,\n {\n file: string;\n css?: string[];\n isEntry?: boolean;\n isDynamicEntry?: boolean;\n imports?: string[];\n }\n> & {\n _base?: string;\n};\n"],"names":["LAZY_PLACEHOLDER_PREFIX","extractDynamicImportSpecifier","node","type","callExpr","body","length","argument","callee","arguments","arg","value","lazyModuleUrlPlugin","name","visitor","CallExpression","nodePath","state","filename","binding","scope","getBinding","kind","bindingPath","path","parent","source","specifier","push","require","createRequire","import","runtimePublicPath","runtimeFilePath","resolve","runtimeCode","readFileSync","isVite6","version","split","VIRTUAL_MANIFEST_ID","RESOLVED_VIRTUAL_MANIFEST_ID","DEV_MANIFEST_CODE","getExtension","index","lastIndexOf","substring","replace","containsSolidField","fields","keys","Object","i","key","getJestDomExport","setupFiles","some","test","undefined","find","e","solidPlugin","options","filter","createFilter","include","exclude","needHmr","replaceDev","projectRoot","process","cwd","isTestMode","isBuild","base","solidPkgsConfig","enforce","config","userConfig","command","dev","root","mode","alias","normalizeAliases","crawlFrameworkPkgs","viteUserConfig","isFrameworkPkgByJson","pkgJson","exports","nestedDeps","userTest","userSetupFiles","environment","ssr","server","deps","external","item","toString","browser","enabled","jestDomImport","conditions","dedupe","replacement","optimizeDeps","configEnvironment","opts","defaultClientConditions","defaultServerConditions","consumer","isSsrTargetWebworker","noExternal","Array","isArray","configResolved","hot","refresh","disabled","configureServer","ws","lastErrorTime","origSend","send","bind","args","payload","Date","now","hotUpdate","resolveId","id","load","manifestPath","existsSync","manifest","JSON","parse","_base","stringify","transform","transformOptions","isSsr","currentFileExtension","extensionsToWatch","extensions","allExtensions","map","extension","includes","inNodeModules","solidOptions","generate","hydratable","shouldBeProcessedWithTypescript","extensionName","extensionOptions","typescript","plugins","sourceFileName","presets","solid","lazyModuleUrl","solidRefresh","bundler","fixRender","jsx","ast","sourceMaps","configFile","babelrc","parserOpts","babelUserOptions","babel","babelOptions","Promise","mergeAndConcat","result","transformAsync","code","placeholderRe","RegExp","match","resolutions","exec","resolved","cleanId","placeholder","relative","entries"],"mappings":"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"}
@@ -112,6 +112,7 @@ function solidPlugin(options = {}) {
112
112
  let projectRoot = process.cwd();
113
113
  let isTestMode = false;
114
114
  let isBuild = false;
115
+ let base = '/';
115
116
  let solidPkgsConfig;
116
117
  return {
117
118
  name: 'solid',
@@ -215,8 +216,42 @@ function solidPlugin(options = {}) {
215
216
  },
216
217
  configResolved(config) {
217
218
  isBuild = config.command === 'build';
219
+ base = config.base;
218
220
  needHmr = config.command === 'serve' && config.mode !== 'production' && options.hot !== false && !options.refresh?.disabled;
219
221
  },
222
+ configureServer(server) {
223
+ if (!needHmr) return;
224
+ // When a module has a syntax error, Vite sends the error overlay via
225
+ // WebSocket but the failed import triggers invalidation in solid-refresh.
226
+ // This propagates up to @refresh reload boundaries (e.g. document-level
227
+ // App components in SSR), causing a full-reload that overrides the overlay.
228
+ // We suppress update/full-reload messages that immediately follow an error.
229
+ const hot = server.hot ?? server.ws;
230
+ if (!hot) return;
231
+ let lastErrorTime = 0;
232
+ const origSend = hot.send.bind(hot);
233
+ hot.send = function (...args) {
234
+ const payload = args[0];
235
+ if (typeof payload === 'object' && payload) {
236
+ if (payload.type === 'error') {
237
+ lastErrorTime = Date.now();
238
+ } else if (lastErrorTime && (payload.type === 'full-reload' || payload.type === 'update')) {
239
+ if (Date.now() - lastErrorTime < 200) return;
240
+ lastErrorTime = 0;
241
+ }
242
+ }
243
+ return origSend(...args);
244
+ };
245
+ },
246
+ hotUpdate() {
247
+ // solid-refresh only injects HMR boundaries into client modules, so
248
+ // non-client environments have no accept handlers. Without this, Vite
249
+ // would see no boundaries and send full-reload messages that race with
250
+ // client-side HMR updates.
251
+ if (this.environment.name !== 'client') {
252
+ return [];
253
+ }
254
+ },
220
255
  resolveId(id) {
221
256
  if (id === runtimePublicPath) return id;
222
257
  if (id === VIRTUAL_MANIFEST_ID) return RESOLVED_VIRTUAL_MANIFEST_ID;
@@ -227,8 +262,9 @@ function solidPlugin(options = {}) {
227
262
  if (!isBuild) return DEV_MANIFEST_CODE;
228
263
  const manifestPath = path.resolve(projectRoot, 'dist/client/.vite/manifest.json');
229
264
  if (existsSync(manifestPath)) {
230
- const json = readFileSync(manifestPath, 'utf-8');
231
- return `export default ${json};`;
265
+ const manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));
266
+ manifest._base = base;
267
+ return `export default ${JSON.stringify(manifest)};`;
232
268
  }
233
269
  return DEV_MANIFEST_CODE;
234
270
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/lazy-module-url.ts","../../src/index.ts"],"sourcesContent":["import type { PluginObj, types as t } from '@babel/core';\n\nexport const LAZY_PLACEHOLDER_PREFIX = '__SOLID_LAZY_MODULE__:';\n\n/**\n * Detects whether a CallExpression argument is `() => import(\"specifier\")`\n * and returns the specifier string if so.\n */\nfunction extractDynamicImportSpecifier(node: t.Node): string | null {\n if (node.type !== 'ArrowFunctionExpression' && node.type !== 'FunctionExpression') return null;\n\n let callExpr: t.CallExpression | null = null;\n if (node.body.type === 'CallExpression') {\n callExpr = node.body;\n } else if (\n node.body.type === 'BlockStatement' &&\n node.body.body.length === 1 &&\n node.body.body[0].type === 'ReturnStatement' &&\n node.body.body[0].argument?.type === 'CallExpression'\n ) {\n callExpr = node.body.body[0].argument;\n }\n if (!callExpr) return null;\n\n if (callExpr.callee.type !== 'Import') return null;\n if (callExpr.arguments.length !== 1) return null;\n\n const arg = callExpr.arguments[0];\n if (arg.type !== 'StringLiteral') return null;\n\n return arg.value;\n}\n\n/**\n * Babel plugin that detects `lazy(() => import(\"specifier\"))` calls\n * and injects a placeholder as the second argument. The placeholder\n * is resolved to a real path by the Vite transform hook using this.resolve().\n */\nexport default function lazyModuleUrlPlugin(): PluginObj {\n return {\n name: 'solid-lazy-module-url',\n visitor: {\n CallExpression(nodePath, state) {\n if (!state.filename) return;\n const { node } = nodePath;\n\n if (node.callee.type !== 'Identifier' || node.callee.name !== 'lazy') return;\n\n const binding = nodePath.scope.getBinding('lazy');\n if (!binding || binding.kind !== 'module') return;\n const bindingPath = binding.path;\n if (\n bindingPath.type !== 'ImportSpecifier' ||\n bindingPath.parent.type !== 'ImportDeclaration'\n )\n return;\n const source = (bindingPath.parent as t.ImportDeclaration).source.value;\n if (source !== 'solid-js') return;\n\n if (node.arguments.length >= 2) return;\n if (node.arguments.length !== 1) return;\n\n const specifier = extractDynamicImportSpecifier(node.arguments[0] as t.Node);\n if (!specifier) return;\n\n node.arguments.push({\n type: 'StringLiteral',\n value: LAZY_PLACEHOLDER_PREFIX + specifier,\n } as t.StringLiteral);\n },\n },\n };\n}\n","import * as babel from '@babel/core';\nimport solid from 'babel-preset-solid';\nimport { existsSync, 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 lazyModuleUrl, { LAZY_PLACEHOLDER_PREFIX } from './lazy-module-url.js';\nimport path from 'path';\nimport type { Alias, AliasOptions, FilterPattern, Plugin } from 'vite';\nimport { createFilter, version } 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\nconst isVite6 = +version.split('.')[0] >= 6;\n\nconst VIRTUAL_MANIFEST_ID = 'virtual:solid-manifest';\nconst RESOLVED_VIRTUAL_MANIFEST_ID = '\\0' + VIRTUAL_MANIFEST_ID;\n\nconst DEV_MANIFEST_CODE = `export default new Proxy({}, {\n get(_, key) {\n if (typeof key !== \"string\") return undefined;\n return { file: \"/\" + key };\n }\n});`;\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.\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 * @deprecated use `refresh` instead\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 * Remove 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 * Remove the last closing tag from template strings. Enabled by default even when `omitNestedClosingTags` is disabled.\n * Can be disabled for compatibility for some browser-like environments.\n *\n * @default true\n */\n omitLastClosingTag?: boolean;\n\n /**\n * Remove unnecessary quotes from template strings.\n * Can be disabled for compatibility for some browser-like environments.\n *\n * @default true\n */\n omitQuotes?: 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 * Enable dev-mode compilation output. When true, the compiler emits\n * additional runtime checks (e.g. hydration mismatch assertions).\n * Automatically set to true during `vite dev` — override here to\n * force on or off.\n *\n * @default auto (true in dev, false in build)\n */\n dev?: boolean;\n };\n\n\n refresh: Omit<RefreshOptions & { disabled: boolean }, 'bundler' | 'fixRender' | 'jsx'>;\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 let isTestMode = false;\n let isBuild = false;\n let solidPkgsConfig: Awaited<ReturnType<typeof crawlFrameworkPkgs>>;\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 explicitly 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 isTestMode = userConfig.mode === 'test';\n\n if (!userConfig.resolve) userConfig.resolve = {};\n userConfig.resolve.alias = normalizeAliases(userConfig.resolve && userConfig.resolve.alias);\n\n 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', '@solidjs/web']\n : [];\n\n const userTest = (userConfig as any).test ?? {};\n const test = {} as any;\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 userTest.setupFiles === 'string'\n ? [userTest.setupFiles]\n : userTest.setupFiles || [];\n\n if (!userTest.environment && !options.ssr) {\n test.environment = 'jsdom';\n }\n\n if (\n !userTest.server?.deps?.external?.find((item: string | RegExp) =>\n /solid-js/.test(item.toString()),\n )\n ) {\n test.server = { deps: { external: [/solid-js/] } };\n }\n if (!userTest.browser?.enabled) {\n // vitest browser mode already has bundled jest-dom assertions\n // https://main.vitest.dev/guide/browser/assertion-api.html#assertion-api\n const jestDomImport = getJestDomExport(userSetupFiles);\n if (jestDomImport) {\n test.setupFiles = [jestDomImport];\n }\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: isVite6\n ? undefined\n : [\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 ...(!isVite6 ? { ssr: solidPkgsConfig.ssr } : {}),\n ...(test.server ? { test } : {}),\n };\n },\n\n // @ts-ignore This hook only works in Vite 6\n async configEnvironment(name, config, opts) {\n config.resolve ??= {};\n // Emulate Vite default fallback for `resolve.conditions` if not set\n if (config.resolve.conditions == null) {\n // @ts-ignore These exports only exist in Vite 6\n const { defaultClientConditions, defaultServerConditions } = await import('vite');\n if (config.consumer === 'client' || name === 'client' || opts.isSsrTargetWebworker) {\n config.resolve.conditions = [...defaultClientConditions];\n } else {\n config.resolve.conditions = [...defaultServerConditions];\n }\n }\n config.resolve.conditions = [\n 'solid',\n ...(replaceDev ? ['development'] : []),\n ...(isTestMode && !opts.isSsrTargetWebworker && !options.ssr ? ['browser'] : []),\n ...config.resolve.conditions,\n ];\n\n // Set resolve.noExternal and resolve.external for SSR environment (Vite 6+)\n // Only set resolve.external if noExternal is not true (to avoid conflicts with plugins like Cloudflare)\n if (isVite6 && name === 'ssr' && solidPkgsConfig) {\n if (config.resolve.noExternal !== true) {\n config.resolve.noExternal = [\n ...(Array.isArray(config.resolve.noExternal) ? config.resolve.noExternal : []),\n ...solidPkgsConfig.ssr.noExternal,\n ];\n config.resolve.external = [\n ...(Array.isArray(config.resolve.external) ? config.resolve.external : []),\n ...solidPkgsConfig.ssr.external,\n ];\n }\n }\n },\n\n configResolved(config) {\n isBuild = config.command === 'build';\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 if (id === VIRTUAL_MANIFEST_ID) return RESOLVED_VIRTUAL_MANIFEST_ID;\n },\n\n load(id) {\n if (id === runtimePublicPath) return runtimeCode;\n if (id === RESOLVED_VIRTUAL_MANIFEST_ID) {\n if (!isBuild) return DEV_MANIFEST_CODE;\n const manifestPath = path.resolve(projectRoot, 'dist/client/.vite/manifest.json');\n if (existsSync(manifestPath)) {\n const json = readFileSync(manifestPath, 'utf-8');\n return `export default ${json};`;\n }\n return DEV_MANIFEST_CODE;\n }\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)) {\n return null;\n }\n\n id = id.replace(/\\?.*$/, '');\n\n if (!(/\\.[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 // We need to know if the current file extension has a typescript options tied to it\n const shouldBeProcessedWithTypescript =\n /\\.[mc]?tsx$/i.test(id) ||\n 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 'decorators',\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, dev: replaceDev, ...(options.solid || {}) }]],\n plugins: [\n [lazyModuleUrl],\n ...(needHmr && !isSsr && !inNodeModules ? [[solidRefresh, {\n ...(options.refresh || {}),\n bundler: 'vite',\n fixRender: true,\n // TODO unfortunately, even with SSR enabled for refresh\n // it still doesn't work, so now we have to disable\n // this config\n jsx: false,\n }]] : []),\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\n let code = result.code || '';\n\n // Resolve lazy() moduleUrl placeholders using Vite's resolver\n const placeholderRe = new RegExp(\n '\"' + LAZY_PLACEHOLDER_PREFIX + '([^\"]+)\"',\n 'g',\n );\n let match;\n const resolutions: Array<{ placeholder: string; resolved: string }> = [];\n while ((match = placeholderRe.exec(code)) !== null) {\n const specifier = match[1];\n const resolved = await this.resolve(specifier, id);\n if (resolved) {\n const cleanId = resolved.id.split('?')[0];\n resolutions.push({\n placeholder: match[0],\n resolved: '\"' + path.relative(projectRoot, cleanId) + '\"',\n });\n }\n }\n for (const { placeholder, resolved } of resolutions) {\n code = code.replace(placeholder, resolved);\n }\n\n return { 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\nexport type ViteManifest = Record<\n string,\n {\n file: string;\n css?: string[];\n isEntry?: boolean;\n isDynamicEntry?: boolean;\n imports?: string[];\n }\n>;\n"],"names":["LAZY_PLACEHOLDER_PREFIX","extractDynamicImportSpecifier","node","type","callExpr","body","length","argument","callee","arguments","arg","value","lazyModuleUrlPlugin","name","visitor","CallExpression","nodePath","state","filename","binding","scope","getBinding","kind","bindingPath","path","parent","source","specifier","push","require","createRequire","import","meta","url","runtimePublicPath","runtimeFilePath","resolve","runtimeCode","readFileSync","isVite6","version","split","VIRTUAL_MANIFEST_ID","RESOLVED_VIRTUAL_MANIFEST_ID","DEV_MANIFEST_CODE","getExtension","index","lastIndexOf","substring","replace","containsSolidField","fields","keys","Object","i","key","getJestDomExport","setupFiles","some","test","undefined","find","e","solidPlugin","options","filter","createFilter","include","exclude","needHmr","replaceDev","projectRoot","process","cwd","isTestMode","isBuild","solidPkgsConfig","enforce","config","userConfig","command","dev","root","mode","alias","normalizeAliases","crawlFrameworkPkgs","viteUserConfig","isFrameworkPkgByJson","pkgJson","exports","nestedDeps","userTest","userSetupFiles","environment","ssr","server","deps","external","item","toString","browser","enabled","jestDomImport","conditions","dedupe","replacement","optimizeDeps","configEnvironment","opts","defaultClientConditions","defaultServerConditions","consumer","isSsrTargetWebworker","noExternal","Array","isArray","configResolved","hot","refresh","disabled","resolveId","id","load","manifestPath","existsSync","json","transform","transformOptions","isSsr","currentFileExtension","extensionsToWatch","extensions","allExtensions","map","extension","includes","inNodeModules","solidOptions","generate","hydratable","shouldBeProcessedWithTypescript","extensionName","extensionOptions","typescript","plugins","sourceFileName","presets","solid","lazyModuleUrl","solidRefresh","bundler","fixRender","jsx","ast","sourceMaps","configFile","babelrc","parserOpts","babelUserOptions","babel","babelOptions","Promise","mergeAndConcat","result","transformAsync","code","placeholderRe","RegExp","match","resolutions","exec","resolved","cleanId","placeholder","relative","entries"],"mappings":";;;;;;;;;;AAEO,MAAMA,uBAAuB,GAAG,wBAAwB;;AAE/D;AACA;AACA;AACA;AACA,SAASC,6BAA6BA,CAACC,IAAY,EAAiB;AAClE,EAAA,IAAIA,IAAI,CAACC,IAAI,KAAK,yBAAyB,IAAID,IAAI,CAACC,IAAI,KAAK,oBAAoB,EAAE,OAAO,IAAI;EAE9F,IAAIC,QAAiC,GAAG,IAAI;AAC5C,EAAA,IAAIF,IAAI,CAACG,IAAI,CAACF,IAAI,KAAK,gBAAgB,EAAE;IACvCC,QAAQ,GAAGF,IAAI,CAACG,IAAI;GACrB,MAAM,IACLH,IAAI,CAACG,IAAI,CAACF,IAAI,KAAK,gBAAgB,IACnCD,IAAI,CAACG,IAAI,CAACA,IAAI,CAACC,MAAM,KAAK,CAAC,IAC3BJ,IAAI,CAACG,IAAI,CAACA,IAAI,CAAC,CAAC,CAAC,CAACF,IAAI,KAAK,iBAAiB,IAC5CD,IAAI,CAACG,IAAI,CAACA,IAAI,CAAC,CAAC,CAAC,CAACE,QAAQ,EAAEJ,IAAI,KAAK,gBAAgB,EACrD;IACAC,QAAQ,GAAGF,IAAI,CAACG,IAAI,CAACA,IAAI,CAAC,CAAC,CAAC,CAACE,QAAQ;AACvC;AACA,EAAA,IAAI,CAACH,QAAQ,EAAE,OAAO,IAAI;EAE1B,IAAIA,QAAQ,CAACI,MAAM,CAACL,IAAI,KAAK,QAAQ,EAAE,OAAO,IAAI;EAClD,IAAIC,QAAQ,CAACK,SAAS,CAACH,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;AAEhD,EAAA,MAAMI,GAAG,GAAGN,QAAQ,CAACK,SAAS,CAAC,CAAC,CAAC;AACjC,EAAA,IAAIC,GAAG,CAACP,IAAI,KAAK,eAAe,EAAE,OAAO,IAAI;EAE7C,OAAOO,GAAG,CAACC,KAAK;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACe,SAASC,mBAAmBA,GAAc;EACvD,OAAO;AACLC,IAAAA,IAAI,EAAE,uBAAuB;AAC7BC,IAAAA,OAAO,EAAE;AACPC,MAAAA,cAAcA,CAACC,QAAQ,EAAEC,KAAK,EAAE;AAC9B,QAAA,IAAI,CAACA,KAAK,CAACC,QAAQ,EAAE;QACrB,MAAM;AAAEhB,UAAAA;AAAK,SAAC,GAAGc,QAAQ;AAEzB,QAAA,IAAId,IAAI,CAACM,MAAM,CAACL,IAAI,KAAK,YAAY,IAAID,IAAI,CAACM,MAAM,CAACK,IAAI,KAAK,MAAM,EAAE;QAEtE,MAAMM,OAAO,GAAGH,QAAQ,CAACI,KAAK,CAACC,UAAU,CAAC,MAAM,CAAC;QACjD,IAAI,CAACF,OAAO,IAAIA,OAAO,CAACG,IAAI,KAAK,QAAQ,EAAE;AAC3C,QAAA,MAAMC,WAAW,GAAGJ,OAAO,CAACK,IAAI;AAChC,QAAA,IACED,WAAW,CAACpB,IAAI,KAAK,iBAAiB,IACtCoB,WAAW,CAACE,MAAM,CAACtB,IAAI,KAAK,mBAAmB,EAE/C;QACF,MAAMuB,MAAM,GAAIH,WAAW,CAACE,MAAM,CAAyBC,MAAM,CAACf,KAAK;QACvE,IAAIe,MAAM,KAAK,UAAU,EAAE;AAE3B,QAAA,IAAIxB,IAAI,CAACO,SAAS,CAACH,MAAM,IAAI,CAAC,EAAE;AAChC,QAAA,IAAIJ,IAAI,CAACO,SAAS,CAACH,MAAM,KAAK,CAAC,EAAE;QAEjC,MAAMqB,SAAS,GAAG1B,6BAA6B,CAACC,IAAI,CAACO,SAAS,CAAC,CAAC,CAAW,CAAC;QAC5E,IAAI,CAACkB,SAAS,EAAE;AAEhBzB,QAAAA,IAAI,CAACO,SAAS,CAACmB,IAAI,CAAC;AAClBzB,UAAAA,IAAI,EAAE,eAAe;UACrBQ,KAAK,EAAEX,uBAAuB,GAAG2B;AACnC,SAAoB,CAAC;AACvB;AACF;GACD;AACH;;AC1DA,MAAME,OAAO,GAAGC,aAAa,CAACC,MAAM,CAACC,IAAI,CAACC,GAAG,CAAC;AAE9C,MAAMC,iBAAiB,GAAG,iBAAiB;AAC3C,MAAMC,eAAe,GAAGN,OAAO,CAACO,OAAO,CAAC,sCAAsC,CAAC;AAC/E,MAAMC,WAAW,GAAGC,YAAY,CAACH,eAAe,EAAE,OAAO,CAAC;AAE1D,MAAMI,OAAO,GAAG,CAACC,OAAO,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAE3C,MAAMC,mBAAmB,GAAG,wBAAwB;AACpD,MAAMC,4BAA4B,GAAG,IAAI,GAAGD,mBAAmB;AAE/D,MAAME,iBAAiB,GAAG,CAAA;AAC1B;AACA;AACA;AACA;AACA,GAAI,CAAA;;AAEJ;;AAKA;;AA0JA,SAASC,YAAYA,CAAC3B,QAAgB,EAAU;AAC9C,EAAA,MAAM4B,KAAK,GAAG5B,QAAQ,CAAC6B,WAAW,CAAC,GAAG,CAAC;AACvC,EAAA,OAAOD,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG5B,QAAQ,CAAC8B,SAAS,CAACF,KAAK,CAAC,CAACG,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;AACxE;AACA,SAASC,kBAAkBA,CAACC,MAA2B,EAAE;AACvD,EAAA,MAAMC,IAAI,GAAGC,MAAM,CAACD,IAAI,CAACD,MAAM,CAAC;AAChC,EAAA,KAAK,IAAIG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,IAAI,CAAC9C,MAAM,EAAEgD,CAAC,EAAE,EAAE;AACpC,IAAA,MAAMC,GAAG,GAAGH,IAAI,CAACE,CAAC,CAAC;AACnB,IAAA,IAAIC,GAAG,KAAK,OAAO,EAAE,OAAO,IAAI;IAChC,IAAI,OAAOJ,MAAM,CAACI,GAAG,CAAC,KAAK,QAAQ,IAAIJ,MAAM,CAACI,GAAG,CAAC,IAAI,IAAI,IAAIL,kBAAkB,CAACC,MAAM,CAACI,GAAG,CAAC,CAAC,EAC3F,OAAO,IAAI;AACf;AACA,EAAA,OAAO,KAAK;AACd;AAEA,SAASC,gBAAgBA,CAACC,UAAoB,EAAE;EAC9C,OAAOA,UAAU,EAAEC,IAAI,CAAElC,IAAI,IAAK,UAAU,CAACmC,IAAI,CAACnC,IAAI,CAAC,CAAC,GACpDoC,SAAS,GACT,CAAC,kCAAkC,EAAE,yCAAyC,CAAC,CAACC,IAAI,CACjFrC,IAAI,IAAK;IACR,IAAI;AACFK,MAAAA,OAAO,CAACO,OAAO,CAACZ,IAAI,CAAC;AACrB,MAAA,OAAO,IAAI;KACZ,CAAC,OAAOsC,CAAC,EAAE;AACV,MAAA,OAAO,KAAK;AACd;AACF,GACF,CAAC;AACP;AAEe,SAASC,WAAWA,CAACC,OAAyB,GAAG,EAAE,EAAU;EAC1E,MAAMC,MAAM,GAAGC,YAAY,CAACF,OAAO,CAACG,OAAO,EAAEH,OAAO,CAACI,OAAO,CAAC;EAE7D,IAAIC,OAAO,GAAG,KAAK;EACnB,IAAIC,UAAU,GAAG,KAAK;AACtB,EAAA,IAAIC,WAAW,GAAGC,OAAO,CAACC,GAAG,EAAE;EAC/B,IAAIC,UAAU,GAAG,KAAK;EACtB,IAAIC,OAAO,GAAG,KAAK;AACnB,EAAA,IAAIC,eAA+D;EAEnE,OAAO;AACL/D,IAAAA,IAAI,EAAE,OAAO;AACbgE,IAAAA,OAAO,EAAE,KAAK;IAEd,MAAMC,MAAMA,CAACC,UAAU,EAAE;AAAEC,MAAAA;AAAQ,KAAC,EAAE;AACpC;AACAV,MAAAA,UAAU,GAAGN,OAAO,CAACiB,GAAG,KAAK,IAAI,IAAKjB,OAAO,CAACiB,GAAG,KAAK,KAAK,IAAID,OAAO,KAAK,OAAQ;AACnFT,MAAAA,WAAW,GAAGQ,UAAU,CAACG,IAAI,IAAIX,WAAW;AAC5CG,MAAAA,UAAU,GAAGK,UAAU,CAACI,IAAI,KAAK,MAAM;MAEvC,IAAI,CAACJ,UAAU,CAAC3C,OAAO,EAAE2C,UAAU,CAAC3C,OAAO,GAAG,EAAE;AAChD2C,MAAAA,UAAU,CAAC3C,OAAO,CAACgD,KAAK,GAAGC,gBAAgB,CAACN,UAAU,CAAC3C,OAAO,IAAI2C,UAAU,CAAC3C,OAAO,CAACgD,KAAK,CAAC;MAE3FR,eAAe,GAAG,MAAMU,kBAAkB,CAAC;AACzCC,QAAAA,cAAc,EAAER,UAAU;AAC1BG,QAAAA,IAAI,EAAEX,WAAW,IAAIC,OAAO,CAACC,GAAG,EAAE;QAClCE,OAAO,EAAEK,OAAO,KAAK,OAAO;QAC5BQ,oBAAoBA,CAACC,OAAO,EAAE;UAC5B,OAAOvC,kBAAkB,CAACuC,OAAO,CAACC,OAAO,IAAI,EAAE,CAAC;AAClD;AACF,OAAC,CAAC;;AAEF;MACA,MAAMC,UAAU,GAAGrB,UAAU,GACzB,CAAC,UAAU,EAAE,cAAc,CAAC,GAC5B,EAAE;AAEN,MAAA,MAAMsB,QAAQ,GAAIb,UAAU,CAASpB,IAAI,IAAI,EAAE;MAC/C,MAAMA,IAAI,GAAG,EAAS;AACtB,MAAA,IAAIoB,UAAU,CAACI,IAAI,KAAK,MAAM,EAAE;AAC9B;AACA,QAAA,MAAMU,cAAwB,GAC5B,OAAOD,QAAQ,CAACnC,UAAU,KAAK,QAAQ,GACnC,CAACmC,QAAQ,CAACnC,UAAU,CAAC,GACrBmC,QAAQ,CAACnC,UAAU,IAAI,EAAE;QAE/B,IAAI,CAACmC,QAAQ,CAACE,WAAW,IAAI,CAAC9B,OAAO,CAAC+B,GAAG,EAAE;UACzCpC,IAAI,CAACmC,WAAW,GAAG,OAAO;AAC5B;QAEA,IACE,CAACF,QAAQ,CAACI,MAAM,EAAEC,IAAI,EAAEC,QAAQ,EAAErC,IAAI,CAAEsC,IAAqB,IAC3D,UAAU,CAACxC,IAAI,CAACwC,IAAI,CAACC,QAAQ,EAAE,CACjC,CAAC,EACD;UACAzC,IAAI,CAACqC,MAAM,GAAG;AAAEC,YAAAA,IAAI,EAAE;cAAEC,QAAQ,EAAE,CAAC,UAAU;AAAE;WAAG;AACpD;AACA,QAAA,IAAI,CAACN,QAAQ,CAACS,OAAO,EAAEC,OAAO,EAAE;AAC9B;AACA;AACA,UAAA,MAAMC,aAAa,GAAG/C,gBAAgB,CAACqC,cAAc,CAAC;AACtD,UAAA,IAAIU,aAAa,EAAE;AACjB5C,YAAAA,IAAI,CAACF,UAAU,GAAG,CAAC8C,aAAa,CAAC;AACnC;AACF;AACF;MAEA,OAAO;AACL;AACR;AACA;AACA;AACQ;AACAnE,QAAAA,OAAO,EAAE;AACPoE,UAAAA,UAAU,EAAEjE,OAAO,GACfqB,SAAS,GACT,CACE,OAAO,EACP,IAAIU,UAAU,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,EACtC,IAAIS,UAAU,CAACI,IAAI,KAAK,MAAM,IAAI,CAACnB,OAAO,CAAC+B,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CACnE;AACLU,UAAAA,MAAM,EAAEd,UAAU;AAClBP,UAAAA,KAAK,EAAE,CAAC;AAAEvB,YAAAA,IAAI,EAAE,iBAAiB;AAAE6C,YAAAA,WAAW,EAAExE;WAAmB;SACpE;AACDyE,QAAAA,YAAY,EAAE;UACZxC,OAAO,EAAE,CAAC,GAAGwB,UAAU,EAAE,GAAGf,eAAe,CAAC+B,YAAY,CAACxC,OAAO,CAAC;AACjEC,UAAAA,OAAO,EAAEQ,eAAe,CAAC+B,YAAY,CAACvC;SACvC;QACD,IAAI,CAAC7B,OAAO,GAAG;UAAEwD,GAAG,EAAEnB,eAAe,CAACmB;SAAK,GAAG,EAAE,CAAC;QACjD,IAAIpC,IAAI,CAACqC,MAAM,GAAG;AAAErC,UAAAA;SAAM,GAAG,EAAE;OAChC;KACF;AAED;AACA,IAAA,MAAMiD,iBAAiBA,CAAC/F,IAAI,EAAEiE,MAAM,EAAE+B,IAAI,EAAE;AAC1C/B,MAAAA,MAAM,CAAC1C,OAAO,KAAK,EAAE;AACrB;AACA,MAAA,IAAI0C,MAAM,CAAC1C,OAAO,CAACoE,UAAU,IAAI,IAAI,EAAE;AACrC;QACA,MAAM;UAAEM,uBAAuB;AAAEC,UAAAA;AAAwB,SAAC,GAAG,MAAM,OAAO,MAAM,CAAC;AACjF,QAAA,IAAIjC,MAAM,CAACkC,QAAQ,KAAK,QAAQ,IAAInG,IAAI,KAAK,QAAQ,IAAIgG,IAAI,CAACI,oBAAoB,EAAE;UAClFnC,MAAM,CAAC1C,OAAO,CAACoE,UAAU,GAAG,CAAC,GAAGM,uBAAuB,CAAC;AAC1D,SAAC,MAAM;UACLhC,MAAM,CAAC1C,OAAO,CAACoE,UAAU,GAAG,CAAC,GAAGO,uBAAuB,CAAC;AAC1D;AACF;MACAjC,MAAM,CAAC1C,OAAO,CAACoE,UAAU,GAAG,CAC1B,OAAO,EACP,IAAIlC,UAAU,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,EACtC,IAAII,UAAU,IAAI,CAACmC,IAAI,CAACI,oBAAoB,IAAI,CAACjD,OAAO,CAAC+B,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAChF,GAAGjB,MAAM,CAAC1C,OAAO,CAACoE,UAAU,CAC7B;;AAED;AACA;AACA,MAAA,IAAIjE,OAAO,IAAI1B,IAAI,KAAK,KAAK,IAAI+D,eAAe,EAAE;AAChD,QAAA,IAAIE,MAAM,CAAC1C,OAAO,CAAC8E,UAAU,KAAK,IAAI,EAAE;AACtCpC,UAAAA,MAAM,CAAC1C,OAAO,CAAC8E,UAAU,GAAG,CAC1B,IAAIC,KAAK,CAACC,OAAO,CAACtC,MAAM,CAAC1C,OAAO,CAAC8E,UAAU,CAAC,GAAGpC,MAAM,CAAC1C,OAAO,CAAC8E,UAAU,GAAG,EAAE,CAAC,EAC9E,GAAGtC,eAAe,CAACmB,GAAG,CAACmB,UAAU,CAClC;AACDpC,UAAAA,MAAM,CAAC1C,OAAO,CAAC8D,QAAQ,GAAG,CACxB,IAAIiB,KAAK,CAACC,OAAO,CAACtC,MAAM,CAAC1C,OAAO,CAAC8D,QAAQ,CAAC,GAAGpB,MAAM,CAAC1C,OAAO,CAAC8D,QAAQ,GAAG,EAAE,CAAC,EAC1E,GAAGtB,eAAe,CAACmB,GAAG,CAACG,QAAQ,CAChC;AACH;AACF;KACD;IAEDmB,cAAcA,CAACvC,MAAM,EAAE;AACrBH,MAAAA,OAAO,GAAGG,MAAM,CAACE,OAAO,KAAK,OAAO;MACpCX,OAAO,GAAGS,MAAM,CAACE,OAAO,KAAK,OAAO,IAAIF,MAAM,CAACK,IAAI,KAAK,YAAY,IAAKnB,OAAO,CAACsD,GAAG,KAAK,KAAK,IAAI,CAACtD,OAAO,CAACuD,OAAO,EAAEC,QAAS;KAC9H;IAEDC,SAASA,CAACC,EAAE,EAAE;AACZ,MAAA,IAAIA,EAAE,KAAKxF,iBAAiB,EAAE,OAAOwF,EAAE;AACvC,MAAA,IAAIA,EAAE,KAAKhF,mBAAmB,EAAE,OAAOC,4BAA4B;KACpE;IAEDgF,IAAIA,CAACD,EAAE,EAAE;AACP,MAAA,IAAIA,EAAE,KAAKxF,iBAAiB,EAAE,OAAOG,WAAW;MAChD,IAAIqF,EAAE,KAAK/E,4BAA4B,EAAE;AACvC,QAAA,IAAI,CAACgC,OAAO,EAAE,OAAO/B,iBAAiB;QACtC,MAAMgF,YAAY,GAAGpG,IAAI,CAACY,OAAO,CAACmC,WAAW,EAAE,iCAAiC,CAAC;AACjF,QAAA,IAAIsD,UAAU,CAACD,YAAY,CAAC,EAAE;AAC5B,UAAA,MAAME,IAAI,GAAGxF,YAAY,CAACsF,YAAY,EAAE,OAAO,CAAC;UAChD,OAAO,CAAA,eAAA,EAAkBE,IAAI,CAAG,CAAA,CAAA;AAClC;AACA,QAAA,OAAOlF,iBAAiB;AAC1B;KACD;AAED,IAAA,MAAMmF,SAASA,CAACrG,MAAM,EAAEgG,EAAE,EAAEM,gBAAgB,EAAE;AAC5C,MAAA,MAAMC,KAAK,GAAGD,gBAAgB,IAAIA,gBAAgB,CAACjC,GAAG;AACtD,MAAA,MAAMmC,oBAAoB,GAAGrF,YAAY,CAAC6E,EAAE,CAAC;AAE7C,MAAA,MAAMS,iBAAiB,GAAGnE,OAAO,CAACoE,UAAU,IAAI,EAAE;AAClD,MAAA,MAAMC,aAAa,GAAGF,iBAAiB,CAACG,GAAG,CAAEC,SAAS;AACpD;MACA,OAAOA,SAAS,KAAK,QAAQ,GAAGA,SAAS,GAAGA,SAAS,CAAC,CAAC,CACzD,CAAC;AAED,MAAA,IAAI,CAACtE,MAAM,CAACyD,EAAE,CAAC,EAAE;AACf,QAAA,OAAO,IAAI;AACb;MAEAA,EAAE,GAAGA,EAAE,CAACzE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;AAE5B,MAAA,IAAI,EAAE,iBAAiB,CAACU,IAAI,CAAC+D,EAAE,CAAC,IAAIW,aAAa,CAACG,QAAQ,CAACN,oBAAoB,CAAC,CAAC,EAAE;AACjF,QAAA,OAAO,IAAI;AACb;AAEA,MAAA,MAAMO,aAAa,GAAG,cAAc,CAAC9E,IAAI,CAAC+D,EAAE,CAAC;AAE7C,MAAA,IAAIgB,YAA8D;MAElE,IAAI1E,OAAO,CAAC+B,GAAG,EAAE;AACf,QAAA,IAAIkC,KAAK,EAAE;AACTS,UAAAA,YAAY,GAAG;AAAEC,YAAAA,QAAQ,EAAE,KAAK;AAAEC,YAAAA,UAAU,EAAE;WAAM;AACtD,SAAC,MAAM;AACLF,UAAAA,YAAY,GAAG;AAAEC,YAAAA,QAAQ,EAAE,KAAK;AAAEC,YAAAA,UAAU,EAAE;WAAM;AACtD;AACF,OAAC,MAAM;AACLF,QAAAA,YAAY,GAAG;AAAEC,UAAAA,QAAQ,EAAE,KAAK;AAAEC,UAAAA,UAAU,EAAE;SAAO;AACvD;;AAEA;AACA,MAAA,MAAMC,+BAA+B,GACnC,cAAc,CAAClF,IAAI,CAAC+D,EAAE,CAAC,IACvBS,iBAAiB,CAACzE,IAAI,CAAE6E,SAAS,IAAK;AACpC,QAAA,IAAI,OAAOA,SAAS,KAAK,QAAQ,EAAE;AACjC,UAAA,OAAOA,SAAS,CAACC,QAAQ,CAAC,KAAK,CAAC;AAClC;AAEA,QAAA,MAAM,CAACM,aAAa,EAAEC,gBAAgB,CAAC,GAAGR,SAAS;AACnD,QAAA,IAAIO,aAAa,KAAKZ,oBAAoB,EAAE,OAAO,KAAK;QAExD,OAAOa,gBAAgB,CAACC,UAAU;AACpC,OAAC,CAAC;AACJ,MAAA,MAAMC,OAAkF,GAAG,CACzF,KAAK,EACL,YAAY,CACb;AAED,MAAA,IAAIJ,+BAA+B,EAAE;AACnCI,QAAAA,OAAO,CAACrH,IAAI,CAAC,YAAY,CAAC;AAC5B;AAEA,MAAA,MAAMiF,IAA4B,GAAG;AACnC3B,QAAAA,IAAI,EAAEX,WAAW;AACjBrD,QAAAA,QAAQ,EAAEwG,EAAE;AACZwB,QAAAA,cAAc,EAAExB,EAAE;AAClByB,QAAAA,OAAO,EAAE,CAAC,CAACC,KAAK,EAAE;AAAE,UAAA,GAAGV,YAAY;AAAEzD,UAAAA,GAAG,EAAEX,UAAU;AAAE,UAAA,IAAIN,OAAO,CAACoF,KAAK,IAAI,EAAE;AAAE,SAAC,CAAC,CAAC;AAClFH,QAAAA,OAAO,EAAE,CACP,CAACI,mBAAa,CAAC,EACf,IAAIhF,OAAO,IAAI,CAAC4D,KAAK,IAAI,CAACQ,aAAa,GAAG,CAAC,CAACa,YAAY,EAAE;AACxD,UAAA,IAAItF,OAAO,CAACuD,OAAO,IAAI,EAAE,CAAC;AAC1BgC,UAAAA,OAAO,EAAE,MAAM;AACfC,UAAAA,SAAS,EAAE,IAAI;AACf;AACA;AACA;AACAC,UAAAA,GAAG,EAAE;AACP,SAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CACV;AACDC,QAAAA,GAAG,EAAE,KAAK;AACVC,QAAAA,UAAU,EAAE,IAAI;AAChBC,QAAAA,UAAU,EAAE,KAAK;AACjBC,QAAAA,OAAO,EAAE,KAAK;AACdC,QAAAA,UAAU,EAAE;AACVb,UAAAA;AACF;OACD;;AAED;MACA,IAAIc,gBAAwC,GAAG,EAAE;MAEjD,IAAI/F,OAAO,CAACgG,KAAK,EAAE;AACjB,QAAA,IAAI,OAAOhG,OAAO,CAACgG,KAAK,KAAK,UAAU,EAAE;AACvC,UAAA,MAAMC,YAAY,GAAGjG,OAAO,CAACgG,KAAK,CAACtI,MAAM,EAAEgG,EAAE,EAAE,CAAC,CAACO,KAAK,CAAC;UACvD8B,gBAAgB,GAAGE,YAAY,YAAYC,OAAO,GAAG,MAAMD,YAAY,GAAGA,YAAY;AACxF,SAAC,MAAM;UACLF,gBAAgB,GAAG/F,OAAO,CAACgG,KAAK;AAClC;AACF;AAEA,MAAA,MAAMC,YAAY,GAAGE,cAAc,CAACJ,gBAAgB,EAAElD,IAAI,CAA2B;MAErF,MAAMuD,MAAM,GAAG,MAAMJ,KAAK,CAACK,cAAc,CAAC3I,MAAM,EAAEuI,YAAY,CAAC;MAC/D,IAAI,CAACG,MAAM,EAAE;AACX,QAAA,OAAOxG,SAAS;AAClB;AAEA,MAAA,IAAI0G,IAAI,GAAGF,MAAM,CAACE,IAAI,IAAI,EAAE;;AAE5B;AACA,MAAA,MAAMC,aAAa,GAAG,IAAIC,MAAM,CAC9B,GAAG,GAAGxK,uBAAuB,GAAG,UAAU,EAC1C,GACF,CAAC;AACD,MAAA,IAAIyK,KAAK;MACT,MAAMC,WAA6D,GAAG,EAAE;MACxE,OAAO,CAACD,KAAK,GAAGF,aAAa,CAACI,IAAI,CAACL,IAAI,CAAC,MAAM,IAAI,EAAE;AAClD,QAAA,MAAM3I,SAAS,GAAG8I,KAAK,CAAC,CAAC,CAAC;QAC1B,MAAMG,QAAQ,GAAG,MAAM,IAAI,CAACxI,OAAO,CAACT,SAAS,EAAE+F,EAAE,CAAC;AAClD,QAAA,IAAIkD,QAAQ,EAAE;AACZ,UAAA,MAAMC,OAAO,GAAGD,QAAQ,CAAClD,EAAE,CAACjF,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;UACzCiI,WAAW,CAAC9I,IAAI,CAAC;AACfkJ,YAAAA,WAAW,EAAEL,KAAK,CAAC,CAAC,CAAC;YACrBG,QAAQ,EAAE,GAAG,GAAGpJ,IAAI,CAACuJ,QAAQ,CAACxG,WAAW,EAAEsG,OAAO,CAAC,GAAG;AACxD,WAAC,CAAC;AACJ;AACF;AACA,MAAA,KAAK,MAAM;QAAEC,WAAW;AAAEF,QAAAA;OAAU,IAAIF,WAAW,EAAE;QACnDJ,IAAI,GAAGA,IAAI,CAACrH,OAAO,CAAC6H,WAAW,EAAEF,QAAQ,CAAC;AAC5C;MAEA,OAAO;QAAEN,IAAI;QAAEhC,GAAG,EAAE8B,MAAM,CAAC9B;OAAK;AAClC;GACD;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASjD,gBAAgBA,CAACD,KAAmB,GAAG,EAAE,EAAW;EAC3D,OAAO+B,KAAK,CAACC,OAAO,CAAChC,KAAK,CAAC,GACvBA,KAAK,GACL/B,MAAM,CAAC2H,OAAO,CAAC5F,KAAK,CAAC,CAACkD,GAAG,CAAC,CAAC,CAACzE,IAAI,EAAE6C,WAAW,CAAC,MAAM;IAAE7C,IAAI;AAAE6C,IAAAA;AAAY,GAAC,CAAC,CAAC;AACjF;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../src/lazy-module-url.ts","../../src/index.ts"],"sourcesContent":["import type { PluginObj, types as t } from '@babel/core';\n\nexport const LAZY_PLACEHOLDER_PREFIX = '__SOLID_LAZY_MODULE__:';\n\n/**\n * Detects whether a CallExpression argument is `() => import(\"specifier\")`\n * and returns the specifier string if so.\n */\nfunction extractDynamicImportSpecifier(node: t.Node): string | null {\n if (node.type !== 'ArrowFunctionExpression' && node.type !== 'FunctionExpression') return null;\n\n let callExpr: t.CallExpression | null = null;\n if (node.body.type === 'CallExpression') {\n callExpr = node.body;\n } else if (\n node.body.type === 'BlockStatement' &&\n node.body.body.length === 1 &&\n node.body.body[0].type === 'ReturnStatement' &&\n node.body.body[0].argument?.type === 'CallExpression'\n ) {\n callExpr = node.body.body[0].argument;\n }\n if (!callExpr) return null;\n\n if (callExpr.callee.type !== 'Import') return null;\n if (callExpr.arguments.length !== 1) return null;\n\n const arg = callExpr.arguments[0];\n if (arg.type !== 'StringLiteral') return null;\n\n return arg.value;\n}\n\n/**\n * Babel plugin that detects `lazy(() => import(\"specifier\"))` calls\n * and injects a placeholder as the second argument. The placeholder\n * is resolved to a real path by the Vite transform hook using this.resolve().\n */\nexport default function lazyModuleUrlPlugin(): PluginObj {\n return {\n name: 'solid-lazy-module-url',\n visitor: {\n CallExpression(nodePath, state) {\n if (!state.filename) return;\n const { node } = nodePath;\n\n if (node.callee.type !== 'Identifier' || node.callee.name !== 'lazy') return;\n\n const binding = nodePath.scope.getBinding('lazy');\n if (!binding || binding.kind !== 'module') return;\n const bindingPath = binding.path;\n if (\n bindingPath.type !== 'ImportSpecifier' ||\n bindingPath.parent.type !== 'ImportDeclaration'\n )\n return;\n const source = (bindingPath.parent as t.ImportDeclaration).source.value;\n if (source !== 'solid-js') return;\n\n if (node.arguments.length >= 2) return;\n if (node.arguments.length !== 1) return;\n\n const specifier = extractDynamicImportSpecifier(node.arguments[0] as t.Node);\n if (!specifier) return;\n\n node.arguments.push({\n type: 'StringLiteral',\n value: LAZY_PLACEHOLDER_PREFIX + specifier,\n } as t.StringLiteral);\n },\n },\n };\n}\n","import * as babel from '@babel/core';\nimport solid from 'babel-preset-solid';\nimport { existsSync, 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 lazyModuleUrl, { LAZY_PLACEHOLDER_PREFIX } from './lazy-module-url.js';\nimport path from 'path';\nimport type { Alias, AliasOptions, FilterPattern, Plugin } from 'vite';\nimport { createFilter, version } 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\nconst isVite6 = +version.split('.')[0] >= 6;\n\nconst VIRTUAL_MANIFEST_ID = 'virtual:solid-manifest';\nconst RESOLVED_VIRTUAL_MANIFEST_ID = '\\0' + VIRTUAL_MANIFEST_ID;\n\nconst DEV_MANIFEST_CODE = `export default new Proxy({}, {\n get(_, key) {\n if (typeof key !== \"string\") return undefined;\n return { file: \"/\" + key };\n }\n});`;\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.\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 * @deprecated use `refresh` instead\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 * Remove 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 * Remove the last closing tag from template strings. Enabled by default even when `omitNestedClosingTags` is disabled.\n * Can be disabled for compatibility for some browser-like environments.\n *\n * @default true\n */\n omitLastClosingTag?: boolean;\n\n /**\n * Remove unnecessary quotes from template strings.\n * Can be disabled for compatibility for some browser-like environments.\n *\n * @default true\n */\n omitQuotes?: 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 * Enable dev-mode compilation output. When true, the compiler emits\n * additional runtime checks (e.g. hydration mismatch assertions).\n * Automatically set to true during `vite dev` — override here to\n * force on or off.\n *\n * @default auto (true in dev, false in build)\n */\n dev?: boolean;\n };\n\n\n refresh: Omit<RefreshOptions & { disabled: boolean }, 'bundler' | 'fixRender' | 'jsx'>;\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 let isTestMode = false;\n let isBuild = false;\n let base = '/';\n let solidPkgsConfig: Awaited<ReturnType<typeof crawlFrameworkPkgs>>;\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 explicitly 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 isTestMode = userConfig.mode === 'test';\n\n if (!userConfig.resolve) userConfig.resolve = {};\n userConfig.resolve.alias = normalizeAliases(userConfig.resolve && userConfig.resolve.alias);\n\n 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', '@solidjs/web']\n : [];\n\n const userTest = (userConfig as any).test ?? {};\n const test = {} as any;\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 userTest.setupFiles === 'string'\n ? [userTest.setupFiles]\n : userTest.setupFiles || [];\n\n if (!userTest.environment && !options.ssr) {\n test.environment = 'jsdom';\n }\n\n if (\n !userTest.server?.deps?.external?.find((item: string | RegExp) =>\n /solid-js/.test(item.toString()),\n )\n ) {\n test.server = { deps: { external: [/solid-js/] } };\n }\n if (!userTest.browser?.enabled) {\n // vitest browser mode already has bundled jest-dom assertions\n // https://main.vitest.dev/guide/browser/assertion-api.html#assertion-api\n const jestDomImport = getJestDomExport(userSetupFiles);\n if (jestDomImport) {\n test.setupFiles = [jestDomImport];\n }\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: isVite6\n ? undefined\n : [\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 ...(!isVite6 ? { ssr: solidPkgsConfig.ssr } : {}),\n ...(test.server ? { test } : {}),\n };\n },\n\n // @ts-ignore This hook only works in Vite 6\n async configEnvironment(name, config, opts) {\n config.resolve ??= {};\n // Emulate Vite default fallback for `resolve.conditions` if not set\n if (config.resolve.conditions == null) {\n // @ts-ignore These exports only exist in Vite 6\n const { defaultClientConditions, defaultServerConditions } = await import('vite');\n if (config.consumer === 'client' || name === 'client' || opts.isSsrTargetWebworker) {\n config.resolve.conditions = [...defaultClientConditions];\n } else {\n config.resolve.conditions = [...defaultServerConditions];\n }\n }\n config.resolve.conditions = [\n 'solid',\n ...(replaceDev ? ['development'] : []),\n ...(isTestMode && !opts.isSsrTargetWebworker && !options.ssr ? ['browser'] : []),\n ...config.resolve.conditions,\n ];\n\n // Set resolve.noExternal and resolve.external for SSR environment (Vite 6+)\n // Only set resolve.external if noExternal is not true (to avoid conflicts with plugins like Cloudflare)\n if (isVite6 && name === 'ssr' && solidPkgsConfig) {\n if (config.resolve.noExternal !== true) {\n config.resolve.noExternal = [\n ...(Array.isArray(config.resolve.noExternal) ? config.resolve.noExternal : []),\n ...solidPkgsConfig.ssr.noExternal,\n ];\n config.resolve.external = [\n ...(Array.isArray(config.resolve.external) ? config.resolve.external : []),\n ...solidPkgsConfig.ssr.external,\n ];\n }\n }\n },\n\n configResolved(config) {\n isBuild = config.command === 'build';\n base = config.base;\n needHmr = config.command === 'serve' && config.mode !== 'production' && (options.hot !== false && !options.refresh?.disabled);\n },\n\n configureServer(server) {\n if (!needHmr) return;\n // When a module has a syntax error, Vite sends the error overlay via\n // WebSocket but the failed import triggers invalidation in solid-refresh.\n // This propagates up to @refresh reload boundaries (e.g. document-level\n // App components in SSR), causing a full-reload that overrides the overlay.\n // We suppress update/full-reload messages that immediately follow an error.\n const hot = server.hot ?? (server as any).ws;\n if (!hot) return;\n let lastErrorTime = 0;\n const origSend = hot.send.bind(hot);\n hot.send = function (this: any, ...args: any[]) {\n const payload = args[0];\n if (typeof payload === 'object' && payload) {\n if (payload.type === 'error') {\n lastErrorTime = Date.now();\n } else if (lastErrorTime && (payload.type === 'full-reload' || payload.type === 'update')) {\n if (Date.now() - lastErrorTime < 200) return;\n lastErrorTime = 0;\n }\n }\n return origSend(...args);\n } as typeof hot.send;\n },\n\n hotUpdate() {\n // solid-refresh only injects HMR boundaries into client modules, so\n // non-client environments have no accept handlers. Without this, Vite\n // would see no boundaries and send full-reload messages that race with\n // client-side HMR updates.\n if (this.environment.name !== 'client') {\n return [];\n }\n },\n\n resolveId(id) {\n if (id === runtimePublicPath) return id;\n if (id === VIRTUAL_MANIFEST_ID) return RESOLVED_VIRTUAL_MANIFEST_ID;\n },\n\n load(id) {\n if (id === runtimePublicPath) return runtimeCode;\n if (id === RESOLVED_VIRTUAL_MANIFEST_ID) {\n if (!isBuild) return DEV_MANIFEST_CODE;\n const manifestPath = path.resolve(projectRoot, 'dist/client/.vite/manifest.json');\n if (existsSync(manifestPath)) {\n const manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));\n manifest._base = base;\n return `export default ${JSON.stringify(manifest)};`;\n }\n return DEV_MANIFEST_CODE;\n }\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)) {\n return null;\n }\n\n id = id.replace(/\\?.*$/, '');\n\n if (!(/\\.[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 // We need to know if the current file extension has a typescript options tied to it\n const shouldBeProcessedWithTypescript =\n /\\.[mc]?tsx$/i.test(id) ||\n 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 'decorators',\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, dev: replaceDev, ...(options.solid || {}) }]],\n plugins: [\n [lazyModuleUrl],\n ...(needHmr && !isSsr && !inNodeModules ? [[solidRefresh, {\n ...(options.refresh || {}),\n bundler: 'vite',\n fixRender: true,\n // TODO unfortunately, even with SSR enabled for refresh\n // it still doesn't work, so now we have to disable\n // this config\n jsx: false,\n }]] : []),\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\n let code = result.code || '';\n\n // Resolve lazy() moduleUrl placeholders using Vite's resolver\n const placeholderRe = new RegExp(\n '\"' + LAZY_PLACEHOLDER_PREFIX + '([^\"]+)\"',\n 'g',\n );\n let match;\n const resolutions: Array<{ placeholder: string; resolved: string }> = [];\n while ((match = placeholderRe.exec(code)) !== null) {\n const specifier = match[1];\n const resolved = await this.resolve(specifier, id);\n if (resolved) {\n const cleanId = resolved.id.split('?')[0];\n resolutions.push({\n placeholder: match[0],\n resolved: '\"' + path.relative(projectRoot, cleanId) + '\"',\n });\n }\n }\n for (const { placeholder, resolved } of resolutions) {\n code = code.replace(placeholder, resolved);\n }\n\n return { 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\nexport type ViteManifest = Record<\n string,\n {\n file: string;\n css?: string[];\n isEntry?: boolean;\n isDynamicEntry?: boolean;\n imports?: string[];\n }\n> & {\n _base?: string;\n};\n"],"names":["LAZY_PLACEHOLDER_PREFIX","extractDynamicImportSpecifier","node","type","callExpr","body","length","argument","callee","arguments","arg","value","lazyModuleUrlPlugin","name","visitor","CallExpression","nodePath","state","filename","binding","scope","getBinding","kind","bindingPath","path","parent","source","specifier","push","require","createRequire","import","meta","url","runtimePublicPath","runtimeFilePath","resolve","runtimeCode","readFileSync","isVite6","version","split","VIRTUAL_MANIFEST_ID","RESOLVED_VIRTUAL_MANIFEST_ID","DEV_MANIFEST_CODE","getExtension","index","lastIndexOf","substring","replace","containsSolidField","fields","keys","Object","i","key","getJestDomExport","setupFiles","some","test","undefined","find","e","solidPlugin","options","filter","createFilter","include","exclude","needHmr","replaceDev","projectRoot","process","cwd","isTestMode","isBuild","base","solidPkgsConfig","enforce","config","userConfig","command","dev","root","mode","alias","normalizeAliases","crawlFrameworkPkgs","viteUserConfig","isFrameworkPkgByJson","pkgJson","exports","nestedDeps","userTest","userSetupFiles","environment","ssr","server","deps","external","item","toString","browser","enabled","jestDomImport","conditions","dedupe","replacement","optimizeDeps","configEnvironment","opts","defaultClientConditions","defaultServerConditions","consumer","isSsrTargetWebworker","noExternal","Array","isArray","configResolved","hot","refresh","disabled","configureServer","ws","lastErrorTime","origSend","send","bind","args","payload","Date","now","hotUpdate","resolveId","id","load","manifestPath","existsSync","manifest","JSON","parse","_base","stringify","transform","transformOptions","isSsr","currentFileExtension","extensionsToWatch","extensions","allExtensions","map","extension","includes","inNodeModules","solidOptions","generate","hydratable","shouldBeProcessedWithTypescript","extensionName","extensionOptions","typescript","plugins","sourceFileName","presets","solid","lazyModuleUrl","solidRefresh","bundler","fixRender","jsx","ast","sourceMaps","configFile","babelrc","parserOpts","babelUserOptions","babel","babelOptions","Promise","mergeAndConcat","result","transformAsync","code","placeholderRe","RegExp","match","resolutions","exec","resolved","cleanId","placeholder","relative","entries"],"mappings":"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"}
@@ -151,4 +151,6 @@ export type ViteManifest = Record<string, {
151
151
  isEntry?: boolean;
152
152
  isDynamicEntry?: boolean;
153
153
  imports?: string[];
154
- }>;
154
+ }> & {
155
+ _base?: string;
156
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vite-plugin-solid",
3
- "version": "3.0.0-next.1",
3
+ "version": "3.0.0-next.3",
4
4
  "description": "solid-js integration plugin for vite 3/4/5/6/7",
5
5
  "type": "module",
6
6
  "files": [
@@ -46,7 +46,7 @@
46
46
  "devDependencies": {
47
47
  "@babel/preset-env": "^7.23.3",
48
48
  "@babel/preset-typescript": "^7.23.3",
49
- "@changesets/cli": "^2.27.1",
49
+ "@changesets/cli": "^2.30.0",
50
50
  "@rollup/plugin-babel": "^6.0.4",
51
51
  "@rollup/plugin-commonjs": "^25.0.7",
52
52
  "@rollup/plugin-node-resolve": "^15.2.3",
@@ -66,7 +66,7 @@
66
66
  "peerDependencies": {
67
67
  "@testing-library/jest-dom": "^5.16.6 || ^5.17.0 || ^6.*",
68
68
  "solid-js": ">=2.0.0-beta.0 <2.0.0",
69
- "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0"
69
+ "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0"
70
70
  },
71
71
  "peerDependenciesMeta": {
72
72
  "@testing-library/jest-dom": {