vite-plugin-solid 2.3.11 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +53 -89
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/index.mjs +52 -82
- package/dist/esm/index.mjs.map +1 -1
- package/package.json +28 -28
package/dist/cjs/index.cjs
CHANGED
|
@@ -4,90 +4,40 @@ var core = require('@babel/core');
|
|
|
4
4
|
var ts = require('@babel/preset-typescript');
|
|
5
5
|
var solid = require('babel-preset-solid');
|
|
6
6
|
var fs = require('fs');
|
|
7
|
-
var path = require('path');
|
|
8
7
|
var mergeAnything = require('merge-anything');
|
|
9
8
|
var module$1 = require('module');
|
|
10
9
|
var solidRefresh = require('solid-refresh/babel.js');
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
14
|
-
|
|
15
|
-
var ts__default = /*#__PURE__*/_interopDefaultLegacy(ts);
|
|
16
|
-
var solid__default = /*#__PURE__*/_interopDefaultLegacy(solid);
|
|
17
|
-
var solidRefresh__default = /*#__PURE__*/_interopDefaultLegacy(solidRefresh);
|
|
10
|
+
var vitefu = require('vitefu');
|
|
18
11
|
|
|
19
12
|
const require$1 = module$1.createRequire((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('index.cjs', document.baseURI).href)));
|
|
20
|
-
|
|
21
13
|
const runtimePublicPath = '/@solid-refresh';
|
|
22
|
-
|
|
23
14
|
const runtimeFilePath = require$1.resolve('solid-refresh/dist/solid-refresh.mjs');
|
|
24
|
-
|
|
25
15
|
const runtimeCode = fs.readFileSync(runtimeFilePath, 'utf-8');
|
|
16
|
+
|
|
26
17
|
/** Possible options for the extensions property */
|
|
27
18
|
|
|
28
19
|
function getExtension(filename) {
|
|
29
20
|
const index = filename.lastIndexOf('.');
|
|
30
21
|
return index < 0 ? '' : filename.substring(index).replace(/\?.+$/, '');
|
|
31
22
|
}
|
|
32
|
-
|
|
33
23
|
function containsSolidField(fields) {
|
|
34
24
|
const keys = Object.keys(fields);
|
|
35
|
-
|
|
36
25
|
for (let i = 0; i < keys.length; i++) {
|
|
37
26
|
const key = keys[i];
|
|
38
27
|
if (key === 'solid') return true;
|
|
39
28
|
if (typeof fields[key] === 'object' && fields[key] != null && containsSolidField(fields[key])) return true;
|
|
40
29
|
}
|
|
41
|
-
|
|
42
30
|
return false;
|
|
43
31
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
return
|
|
32
|
+
function isJestDomInstalled() {
|
|
33
|
+
try {
|
|
34
|
+
// attempt to reference a file that will not throw error because expect is missing
|
|
35
|
+
require$1('@testing-library/jest-dom/dist/utils');
|
|
36
|
+
return true;
|
|
37
|
+
} catch (e) {
|
|
38
|
+
return false;
|
|
51
39
|
}
|
|
52
|
-
|
|
53
|
-
const require = module$1.createRequire(pkgPath);
|
|
54
|
-
|
|
55
|
-
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
|
|
56
|
-
const deps = [...Object.keys(pkg.dependencies || {}), ...Object.keys(pkg.devDependencies || {})];
|
|
57
|
-
const pkgs = deps.map(dep => {
|
|
58
|
-
try {
|
|
59
|
-
return require(`${dep}/package.json`);
|
|
60
|
-
} catch (e) {
|
|
61
|
-
try {
|
|
62
|
-
let dir = path.dirname(node_path.resolve(dep));
|
|
63
|
-
|
|
64
|
-
while (dir) {
|
|
65
|
-
const pkgPath = path.join(dir, 'package.json');
|
|
66
|
-
|
|
67
|
-
if (fs.existsSync(pkgPath)) {
|
|
68
|
-
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
|
|
69
|
-
if (pkg && pkg.name === dep) return pkg;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
const parent = path.dirname(dir);
|
|
73
|
-
|
|
74
|
-
if (parent === dir) {
|
|
75
|
-
break;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
dir = parent;
|
|
79
|
-
}
|
|
80
|
-
} catch (e) {
|
|
81
|
-
console.log("Couldn't find package.json for", dep, e);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
return deps.reduce((acc, dep, i) => {
|
|
86
|
-
if (pkgs[i] && pkgs[i].exports && containsSolidField(pkgs[i].exports)) acc.push(dep);
|
|
87
|
-
return acc;
|
|
88
|
-
}, []);
|
|
89
40
|
}
|
|
90
|
-
|
|
91
41
|
function solidPlugin(options = {}) {
|
|
92
42
|
let needHmr = false;
|
|
93
43
|
let replaceDev = false;
|
|
@@ -95,8 +45,7 @@ function solidPlugin(options = {}) {
|
|
|
95
45
|
return {
|
|
96
46
|
name: 'solid',
|
|
97
47
|
enforce: 'pre',
|
|
98
|
-
|
|
99
|
-
config(userConfig, {
|
|
48
|
+
async config(userConfig, {
|
|
100
49
|
command
|
|
101
50
|
}) {
|
|
102
51
|
// We inject the dev mode only if the user explicitely wants it or if we are in dev (serve) mode
|
|
@@ -104,9 +53,35 @@ function solidPlugin(options = {}) {
|
|
|
104
53
|
projectRoot = userConfig.root;
|
|
105
54
|
if (!userConfig.resolve) userConfig.resolve = {};
|
|
106
55
|
userConfig.resolve.alias = normalizeAliases(userConfig.resolve && userConfig.resolve.alias);
|
|
107
|
-
const
|
|
56
|
+
const solidPkgsConfig = await vitefu.crawlFrameworkPkgs({
|
|
57
|
+
viteUserConfig: userConfig,
|
|
58
|
+
root: projectRoot || process.cwd(),
|
|
59
|
+
isBuild: command === 'build',
|
|
60
|
+
isFrameworkPkgByJson(pkgJson) {
|
|
61
|
+
return containsSolidField(pkgJson.exports || {});
|
|
62
|
+
}
|
|
63
|
+
});
|
|
108
64
|
|
|
65
|
+
// fix for bundling dev in production
|
|
109
66
|
const nestedDeps = replaceDev ? ['solid-js', 'solid-js/web', 'solid-js/store', 'solid-js/html', 'solid-js/h'] : [];
|
|
67
|
+
const test = userConfig.mode === 'test' ? {
|
|
68
|
+
test: {
|
|
69
|
+
globals: true,
|
|
70
|
+
...(options.ssr ? {} : {
|
|
71
|
+
environment: 'jsdom'
|
|
72
|
+
}),
|
|
73
|
+
transformMode: {
|
|
74
|
+
[options.ssr ? 'ssr' : 'web']: [/\.[jt]sx?$/]
|
|
75
|
+
},
|
|
76
|
+
...(isJestDomInstalled() ? {
|
|
77
|
+
setupFiles: ['node_modules/@testing-library/jest-dom/extend-expect.js']
|
|
78
|
+
} : {}),
|
|
79
|
+
deps: {
|
|
80
|
+
registerNodeLoader: true
|
|
81
|
+
},
|
|
82
|
+
...userConfig.test
|
|
83
|
+
}
|
|
84
|
+
} : {};
|
|
110
85
|
return {
|
|
111
86
|
/**
|
|
112
87
|
* We only need esbuild on .ts or .js files.
|
|
@@ -116,7 +91,7 @@ function solidPlugin(options = {}) {
|
|
|
116
91
|
include: /\.ts$/
|
|
117
92
|
},
|
|
118
93
|
resolve: {
|
|
119
|
-
conditions: ['solid', ...(replaceDev ? ['development'] : [])],
|
|
94
|
+
conditions: ['solid', ...(replaceDev ? ['development'] : []), ...(userConfig.mode === 'test' && !options.ssr ? ['browser'] : [])],
|
|
120
95
|
dedupe: nestedDeps,
|
|
121
96
|
alias: [{
|
|
122
97
|
find: /^solid-refresh$/,
|
|
@@ -124,41 +99,34 @@ function solidPlugin(options = {}) {
|
|
|
124
99
|
}]
|
|
125
100
|
},
|
|
126
101
|
optimizeDeps: {
|
|
127
|
-
include: nestedDeps,
|
|
128
|
-
exclude:
|
|
102
|
+
include: [...nestedDeps, ...solidPkgsConfig.optimizeDeps.include],
|
|
103
|
+
exclude: solidPkgsConfig.optimizeDeps.exclude
|
|
129
104
|
},
|
|
130
|
-
ssr:
|
|
131
|
-
|
|
132
|
-
}
|
|
105
|
+
ssr: solidPkgsConfig.ssr,
|
|
106
|
+
...test
|
|
133
107
|
};
|
|
134
108
|
},
|
|
135
|
-
|
|
136
109
|
configResolved(config) {
|
|
137
110
|
needHmr = config.command === 'serve' && config.mode !== 'production' && options.hot !== false;
|
|
138
111
|
},
|
|
139
|
-
|
|
140
112
|
resolveId(id) {
|
|
141
113
|
if (id === runtimePublicPath) return id;
|
|
142
114
|
},
|
|
143
|
-
|
|
144
115
|
load(id) {
|
|
145
116
|
if (id === runtimePublicPath) return runtimeCode;
|
|
146
117
|
},
|
|
147
|
-
|
|
148
118
|
async transform(source, id, transformOptions) {
|
|
149
119
|
const isSsr = transformOptions && transformOptions.ssr;
|
|
150
120
|
const currentFileExtension = getExtension(id);
|
|
151
121
|
const extensionsToWatch = [...(options.extensions || []), '.tsx', '.jsx'];
|
|
152
|
-
const allExtensions = extensionsToWatch.map(extension =>
|
|
122
|
+
const allExtensions = extensionsToWatch.map(extension =>
|
|
123
|
+
// An extension can be a string or a tuple [extension, options]
|
|
153
124
|
typeof extension === 'string' ? extension : extension[0]);
|
|
154
|
-
|
|
155
125
|
if (!allExtensions.includes(currentFileExtension)) {
|
|
156
126
|
return null;
|
|
157
127
|
}
|
|
158
|
-
|
|
159
128
|
const inNodeModules = /node_modules/.test(id);
|
|
160
129
|
let solidOptions;
|
|
161
|
-
|
|
162
130
|
if (options.ssr) {
|
|
163
131
|
if (isSsr) {
|
|
164
132
|
solidOptions = {
|
|
@@ -177,7 +145,6 @@ function solidPlugin(options = {}) {
|
|
|
177
145
|
hydratable: false
|
|
178
146
|
};
|
|
179
147
|
}
|
|
180
|
-
|
|
181
148
|
id = id.replace(/\?.+$/, '');
|
|
182
149
|
const opts = {
|
|
183
150
|
babelrc: false,
|
|
@@ -185,34 +152,33 @@ function solidPlugin(options = {}) {
|
|
|
185
152
|
root: projectRoot,
|
|
186
153
|
filename: id,
|
|
187
154
|
sourceFileName: id,
|
|
188
|
-
presets: [[
|
|
155
|
+
presets: [[solid, {
|
|
156
|
+
...solidOptions,
|
|
189
157
|
...(options.solid || {})
|
|
190
158
|
}]],
|
|
191
|
-
plugins: needHmr && !isSsr && !inNodeModules ? [[
|
|
159
|
+
plugins: needHmr && !isSsr && !inNodeModules ? [[solidRefresh, {
|
|
192
160
|
bundler: 'vite'
|
|
193
161
|
}]] : [],
|
|
194
162
|
sourceMaps: true,
|
|
195
163
|
// Vite handles sourcemap flattening
|
|
196
164
|
inputSourceMap: false
|
|
197
|
-
};
|
|
165
|
+
};
|
|
198
166
|
|
|
167
|
+
// We need to know if the current file extension has a typescript options tied to it
|
|
199
168
|
const shouldBeProcessedWithTypescript = extensionsToWatch.some(extension => {
|
|
200
169
|
if (typeof extension === 'string') {
|
|
201
170
|
return extension.includes('tsx');
|
|
202
171
|
}
|
|
203
|
-
|
|
204
172
|
const [extensionName, extensionOptions] = extension;
|
|
205
173
|
if (extensionName !== currentFileExtension) return false;
|
|
206
174
|
return extensionOptions.typescript;
|
|
207
175
|
});
|
|
208
|
-
|
|
209
176
|
if (shouldBeProcessedWithTypescript) {
|
|
210
|
-
opts.presets.push([
|
|
211
|
-
}
|
|
212
|
-
|
|
177
|
+
opts.presets.push([ts, options.typescript || {}]);
|
|
178
|
+
}
|
|
213
179
|
|
|
180
|
+
// Default value for babel user options
|
|
214
181
|
let babelUserOptions = {};
|
|
215
|
-
|
|
216
182
|
if (options.babel) {
|
|
217
183
|
if (typeof options.babel === 'function') {
|
|
218
184
|
const babelOptions = options.babel(source, id, isSsr);
|
|
@@ -221,7 +187,6 @@ function solidPlugin(options = {}) {
|
|
|
221
187
|
babelUserOptions = options.babel;
|
|
222
188
|
}
|
|
223
189
|
}
|
|
224
|
-
|
|
225
190
|
const babelOptions = mergeAnything.mergeAndConcat(babelUserOptions, opts);
|
|
226
191
|
const {
|
|
227
192
|
code,
|
|
@@ -232,16 +197,15 @@ function solidPlugin(options = {}) {
|
|
|
232
197
|
map
|
|
233
198
|
};
|
|
234
199
|
}
|
|
235
|
-
|
|
236
200
|
};
|
|
237
201
|
}
|
|
202
|
+
|
|
238
203
|
/**
|
|
239
204
|
* This basically normalize all aliases of the config into
|
|
240
205
|
* the array format of the alias.
|
|
241
206
|
*
|
|
242
207
|
* eg: alias: { '@': 'src/' } => [{ find: '@', replacement: 'src/' }]
|
|
243
208
|
*/
|
|
244
|
-
|
|
245
209
|
function normalizeAliases(alias = []) {
|
|
246
210
|
return Array.isArray(alias) ? alias : Object.entries(alias).map(([find, replacement]) => ({
|
|
247
211
|
find,
|
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/index.ts"],"sourcesContent":["import { transformAsync, TransformOptions } from '@babel/core';\nimport ts from '@babel/preset-typescript';\nimport solid from 'babel-preset-solid';\nimport { readFileSync, existsSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { mergeAndConcat } from 'merge-anything';\nimport { createRequire } from 'module';\nimport solidRefresh from 'solid-refresh/babel.js';\nimport type { Alias, AliasOptions, Plugin, UserConfig } from 'vite';\nimport { resolve } from 'node:path';\n\nconst require = createRequire(import.meta.url);\n\nconst runtimePublicPath = '/@solid-refresh';\nconst runtimeFilePath = require.resolve('solid-refresh/dist/solid-refresh.mjs');\nconst runtimeCode = readFileSync(runtimeFilePath, 'utf-8');\n\n/** Possible options for the extensions property */\nexport interface ExtensionOptions {\n typescript?: boolean;\n}\n\n/** Configuration options for vite-plugin-solid. */\nexport interface Options {\n /**\n * This will inject solid-js/dev in place of solid-js in dev mode. Has no\n * effect in prod. If set to `false`, it won't inject it in dev. This is\n * useful for extra logs and debugging.\n *\n * @default true\n */\n dev: boolean;\n /**\n * This will force SSR code in the produced files. This is experiemental\n * and mostly not working yet.\n *\n * @default false\n */\n ssr: boolean;\n /**\n * This will inject HMR runtime in dev mode. Has no effect in prod. If\n * set to `false`, it won't inject the runtime in dev.\n *\n * @default true\n */\n hot: boolean;\n /**\n * This registers additional extensions that should be processed by\n * vite-plugin-solid.\n *\n * @default undefined\n */\n extensions?: (string | [string, ExtensionOptions])[];\n /**\n * Pass any additional babel transform options. They will be merged with\n * the transformations required by Solid.\n *\n * @default {}\n */\n babel:\n | TransformOptions\n | ((source: string, id: string, ssr: boolean) => TransformOptions)\n | ((source: string, id: string, ssr: boolean) => Promise<TransformOptions>);\n typescript: {\n /**\n * Forcibly enables jsx parsing. Otherwise angle brackets will be treated as\n * typescript's legacy type assertion var foo = <string>bar;. Also, isTSX:\n * true requires allExtensions: true.\n *\n * @default false\n */\n isTSX?: boolean;\n\n /**\n * Replace the function used when compiling JSX expressions. This is so that\n * we know that the import is not a type import, and should not be removed.\n *\n * @default React\n */\n jsxPragma?: string;\n\n /**\n * Replace the function used when compiling JSX fragment expressions. This\n * is so that we know that the import is not a type import, and should not\n * be removed.\n *\n * @default React.Fragment\n */\n jsxPragmaFrag?: string;\n\n /**\n * Indicates that every file should be parsed as TS or TSX (depending on the\n * isTSX option).\n *\n * @default false\n */\n allExtensions?: boolean;\n\n /**\n * Enables compilation of TypeScript namespaces.\n *\n * @default uses the default set by @babel/plugin-transform-typescript.\n */\n allowNamespaces?: boolean;\n\n /**\n * When enabled, type-only class fields are only removed if they are\n * prefixed with the declare modifier:\n *\n * > NOTE: This will be enabled by default in Babel 8\n *\n * @default false\n *\n * @example\n * ```ts\n * class A {\n * declare foo: string; // Removed\n * bar: string; // Initialized to undefined\n * prop?: string; // Initialized to undefined\n * prop1!: string // Initialized to undefined\n * }\n * ```\n */\n allowDeclareFields?: boolean;\n\n /**\n * When set to true, the transform will only remove type-only imports\n * (introduced in TypeScript 3.8). This should only be used if you are using\n * TypeScript >= 3.8.\n *\n * @default false\n */\n onlyRemoveTypeImports?: boolean;\n\n /**\n * When set to true, Babel will inline enum values rather than using the\n * usual enum output:\n *\n * This option differs from TypeScript's --isolatedModules behavior, which\n * ignores the const modifier and compiles them as normal enums, and aligns\n * Babel's behavior with TypeScript's default behavior.\n *\n * ```ts\n * // Input\n * const enum Animals {\n * Fish\n * }\n * console.log(Animals.Fish);\n *\n * // Default output\n * var Animals;\n *\n * (function (Animals) {\n * Animals[Animals[\"Fish\"] = 0] = \"Fish\";\n * })(Animals || (Animals = {}));\n *\n * console.log(Animals.Fish);\n *\n * // `optimizeConstEnums` output\n * console.log(0);\n * ```\n *\n * However, when exporting a const enum Babel will compile it to a plain\n * object literal so that it doesn't need to rely on cross-file analysis\n * when compiling it:\n *\n * ```ts\n * // Input\n * export const enum Animals {\n * Fish,\n * }\n *\n * // `optimizeConstEnums` output\n * export var Animals = {\n * Fish: 0,\n * };\n * ```\n *\n * @default false\n */\n optimizeConstEnums?: boolean;\n };\n /**\n * Pass any additional [babel-plugin-jsx-dom-expressions](https://github.com/ryansolid/dom-expressions/tree/main/packages/babel-plugin-jsx-dom-expressions#plugin-options).\n * They will be merged with the defaults sets by [babel-preset-solid](https://github.com/solidjs/solid/blob/main/packages/babel-preset-solid/index.js#L8-L25).\n *\n * @default {}\n */\n solid: {\n /**\n * The name of the runtime module to import the methods from.\n *\n * @default \"solid-js/web\"\n */\n moduleName?: string;\n\n /**\n * The output mode of the compiler.\n * Can be:\n * - \"dom\" is standard output\n * - \"ssr\" is for server side rendering of strings.\n * - \"universal\" is for using custom renderers from solid-js/universal\n *\n * @default \"dom\"\n */\n generate?: 'ssr' | 'dom' | 'universal';\n\n /**\n * Indicate whether the output should contain hydratable markers.\n *\n * @default false\n */\n hydratable?: boolean;\n\n /**\n * Boolean to indicate whether to enable automatic event delegation on camelCase.\n *\n * @default true\n */\n delegateEvents?: boolean;\n\n /**\n * Boolean indicates whether smart conditional detection should be used.\n * This optimizes simple boolean expressions and ternaries in JSX.\n *\n * @default true\n */\n wrapConditionals?: boolean;\n\n /**\n * Boolean indicates whether to set current render context on Custom Elements and slots.\n * Useful for seemless Context API with Web Components.\n *\n * @default true\n */\n contextToCustomElements?: boolean;\n\n /**\n * Array of Component exports from module, that aren't included by default with the library.\n * This plugin will automatically import them if it comes across them in the JSX.\n *\n * @default [\"For\",\"Show\",\"Switch\",\"Match\",\"Suspense\",\"SuspenseList\",\"Portal\",\"Index\",\"Dynamic\",\"ErrorBoundary\"]\n */\n builtIns?: string[];\n };\n}\n\nfunction getExtension(filename: string): string {\n const index = filename.lastIndexOf('.');\n return index < 0 ? '' : filename.substring(index).replace(/\\?.+$/, '');\n}\nfunction containsSolidField(fields) {\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])) return true;\n }\n return false;\n}\n\nfunction getSolidDeps(root) {\n const pkgPath = join(root, 'package.json');\n if (!existsSync(pkgPath)) {\n console.log('No package.json found at project root');\n return [];\n }\n const require = createRequire(pkgPath);\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n const deps = [...Object.keys(pkg.dependencies || {}), ...Object.keys(pkg.devDependencies || {})];\n const pkgs = deps.map((dep) => {\n try {\n return require(`${dep}/package.json`);\n } catch (e) {\n try {\n let dir = dirname(resolve(dep));\n while (dir) {\n const pkgPath = join(dir, 'package.json');\n if (existsSync(pkgPath)) {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n if (pkg && pkg.name === dep) return pkg;\n }\n const parent = dirname(dir);\n if (parent === dir) {\n break;\n }\n dir = parent;\n }\n } catch (e) {\n console.log(\"Couldn't find package.json for\", dep, e);\n }\n }\n });\n return deps.reduce((acc, dep, i) => {\n if (pkgs[i] && pkgs[i].exports && containsSolidField(pkgs[i].exports)) acc.push(dep);\n return acc;\n }, []);\n}\n\nexport default function solidPlugin(options: Partial<Options> = {}): Plugin {\n let needHmr = false;\n let replaceDev = false;\n let projectRoot = process.cwd();\n\n return {\n name: 'solid',\n enforce: 'pre',\n\n config(userConfig, { command }): UserConfig {\n // We inject the dev mode only if the user explicitely wants it or if we are in dev (serve) mode\n replaceDev = options.dev === true || (options.dev !== false && command === 'serve');\n projectRoot = userConfig.root;\n\n if (!userConfig.resolve) userConfig.resolve = {};\n userConfig.resolve.alias = normalizeAliases(userConfig.resolve && userConfig.resolve.alias);\n\n const solidDeps = getSolidDeps(projectRoot || process.cwd());\n // fix for bundling dev in production\n const nestedDeps = replaceDev\n ? ['solid-js', 'solid-js/web', 'solid-js/store', 'solid-js/html', 'solid-js/h']\n : [];\n\n 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: ['solid', ...(replaceDev ? ['development'] : [])],\n dedupe: nestedDeps,\n alias: [{ find: /^solid-refresh$/, replacement: runtimePublicPath }],\n },\n optimizeDeps: {\n include: nestedDeps,\n exclude: [...(userConfig.optimizeDeps?.exclude || []), ...solidDeps]\n },\n ssr: {\n ...userConfig.ssr,\n noExternal: [\n ...(((userConfig.ssr && userConfig.ssr.noExternal) || []) as string[]),\n ...solidDeps,\n ],\n },\n } as UserConfig;\n },\n\n configResolved(config) {\n needHmr = config.command === 'serve' && config.mode !== 'production' && options.hot !== false;\n },\n\n resolveId(id) {\n if (id === runtimePublicPath) return id;\n },\n\n load(id) {\n if (id === runtimePublicPath) return runtimeCode;\n },\n\n async transform(source, id, transformOptions) {\n const isSsr = transformOptions && transformOptions.ssr;\n const currentFileExtension = getExtension(id);\n\n const extensionsToWatch = [...(options.extensions || []), '.tsx', '.jsx'];\n const allExtensions = extensionsToWatch.map((extension) =>\n // An extension can be a string or a tuple [extension, options]\n typeof extension === 'string' ? extension : extension[0],\n );\n\n if (!allExtensions.includes(currentFileExtension)) {\n return null;\n }\n\n const inNodeModules = /node_modules/.test(id);\n\n let solidOptions: { generate: 'ssr' | 'dom'; hydratable: boolean };\n\n if (options.ssr) {\n if (isSsr) {\n solidOptions = { generate: 'ssr', hydratable: true };\n } else {\n solidOptions = { generate: 'dom', hydratable: true };\n }\n } else {\n solidOptions = { generate: 'dom', hydratable: false };\n }\n\n id = id.replace(/\\?.+$/, '');\n\n const opts: TransformOptions = {\n babelrc: false,\n configFile: false,\n root: projectRoot,\n filename: id,\n sourceFileName: id,\n presets: [[solid, { ...solidOptions, ...(options.solid || {}) }]],\n plugins: needHmr && !isSsr && !inNodeModules ? [[solidRefresh, { bundler: 'vite' }]] : [],\n sourceMaps: true,\n // Vite handles sourcemap flattening\n inputSourceMap: false as any,\n };\n\n // We need to know if the current file extension has a typescript options tied to it\n const shouldBeProcessedWithTypescript = extensionsToWatch.some((extension) => {\n if (typeof extension === 'string') {\n return extension.includes('tsx');\n }\n\n const [extensionName, extensionOptions] = extension;\n if (extensionName !== currentFileExtension) return false;\n\n return extensionOptions.typescript;\n });\n\n if (shouldBeProcessedWithTypescript) {\n opts.presets.push([ts, options.typescript || {}]);\n }\n\n // Default value for babel user options\n let babelUserOptions: TransformOptions = {};\n\n if (options.babel) {\n if (typeof options.babel === 'function') {\n const babelOptions = options.babel(source, id, isSsr);\n babelUserOptions = babelOptions instanceof Promise ? await babelOptions : babelOptions;\n } else {\n babelUserOptions = options.babel;\n }\n }\n\n const babelOptions = mergeAndConcat(babelUserOptions, opts) as TransformOptions;\n\n const { code, map } = await transformAsync(source, babelOptions);\n\n return { code, map };\n },\n };\n}\n\n/**\n * This basically normalize all aliases of the config into\n * the array format of the alias.\n *\n * eg: alias: { '@': 'src/' } => [{ find: '@', replacement: 'src/' }]\n */\nfunction normalizeAliases(alias: AliasOptions = []): Alias[] {\n return Array.isArray(alias)\n ? alias\n : Object.entries(alias).map(([find, replacement]) => ({ find, replacement }));\n}\n"],"names":["require","createRequire","import","runtimePublicPath","runtimeFilePath","resolve","runtimeCode","readFileSync","getExtension","filename","index","lastIndexOf","substring","replace","containsSolidField","fields","keys","Object","i","length","key","getSolidDeps","root","pkgPath","join","existsSync","console","log","pkg","JSON","parse","deps","dependencies","devDependencies","pkgs","map","dep","e","dir","dirname","name","parent","reduce","acc","exports","push","solidPlugin","options","needHmr","replaceDev","projectRoot","process","cwd","enforce","config","userConfig","command","dev","alias","normalizeAliases","solidDeps","nestedDeps","esbuild","include","conditions","dedupe","find","replacement","optimizeDeps","exclude","ssr","noExternal","configResolved","mode","hot","resolveId","id","load","transform","source","transformOptions","isSsr","currentFileExtension","extensionsToWatch","extensions","allExtensions","extension","includes","inNodeModules","test","solidOptions","generate","hydratable","opts","babelrc","configFile","sourceFileName","presets","solid","plugins","solidRefresh","bundler","sourceMaps","inputSourceMap","shouldBeProcessedWithTypescript","some","extensionName","extensionOptions","typescript","ts","babelUserOptions","babel","babelOptions","Promise","mergeAndConcat","code","transformAsync","Array","isArray","entries"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/index.ts"],"sourcesContent":["import { transformAsync, TransformOptions } from '@babel/core';\nimport ts from '@babel/preset-typescript';\nimport solid from 'babel-preset-solid';\nimport { readFileSync } from 'fs';\nimport { mergeAndConcat } from 'merge-anything';\nimport { createRequire } from 'module';\nimport solidRefresh from 'solid-refresh/babel.js';\nimport type { Alias, AliasOptions, Plugin, UserConfig } from 'vite';\nimport { crawlFrameworkPkgs } from 'vitefu';\n\nconst require = createRequire(import.meta.url);\n\nconst runtimePublicPath = '/@solid-refresh';\nconst runtimeFilePath = require.resolve('solid-refresh/dist/solid-refresh.mjs');\nconst runtimeCode = readFileSync(runtimeFilePath, 'utf-8');\n\n/** Possible options for the extensions property */\nexport interface ExtensionOptions {\n typescript?: boolean;\n}\n\n/** Configuration options for vite-plugin-solid. */\nexport interface Options {\n /**\n * This will inject solid-js/dev in place of solid-js in dev mode. Has no\n * effect in prod. If set to `false`, it won't inject it in dev. This is\n * useful for extra logs and debugging.\n *\n * @default true\n */\n dev: boolean;\n /**\n * This will force SSR code in the produced files. This is experiemental\n * and mostly not working yet.\n *\n * @default false\n */\n ssr: boolean;\n /**\n * This will inject HMR runtime in dev mode. Has no effect in prod. If\n * set to `false`, it won't inject the runtime in dev.\n *\n * @default true\n */\n hot: boolean;\n /**\n * This registers additional extensions that should be processed by\n * vite-plugin-solid.\n *\n * @default undefined\n */\n extensions?: (string | [string, ExtensionOptions])[];\n /**\n * Pass any additional babel transform options. They will be merged with\n * the transformations required by Solid.\n *\n * @default {}\n */\n babel:\n | TransformOptions\n | ((source: string, id: string, ssr: boolean) => TransformOptions)\n | ((source: string, id: string, ssr: boolean) => Promise<TransformOptions>);\n typescript: {\n /**\n * Forcibly enables jsx parsing. Otherwise angle brackets will be treated as\n * typescript's legacy type assertion var foo = <string>bar;. Also, isTSX:\n * true requires allExtensions: true.\n *\n * @default false\n */\n isTSX?: boolean;\n\n /**\n * Replace the function used when compiling JSX expressions. This is so that\n * we know that the import is not a type import, and should not be removed.\n *\n * @default React\n */\n jsxPragma?: string;\n\n /**\n * Replace the function used when compiling JSX fragment expressions. This\n * is so that we know that the import is not a type import, and should not\n * be removed.\n *\n * @default React.Fragment\n */\n jsxPragmaFrag?: string;\n\n /**\n * Indicates that every file should be parsed as TS or TSX (depending on the\n * isTSX option).\n *\n * @default false\n */\n allExtensions?: boolean;\n\n /**\n * Enables compilation of TypeScript namespaces.\n *\n * @default uses the default set by @babel/plugin-transform-typescript.\n */\n allowNamespaces?: boolean;\n\n /**\n * When enabled, type-only class fields are only removed if they are\n * prefixed with the declare modifier:\n *\n * > NOTE: This will be enabled by default in Babel 8\n *\n * @default false\n *\n * @example\n * ```ts\n * class A {\n * declare foo: string; // Removed\n * bar: string; // Initialized to undefined\n * prop?: string; // Initialized to undefined\n * prop1!: string // Initialized to undefined\n * }\n * ```\n */\n allowDeclareFields?: boolean;\n\n /**\n * When set to true, the transform will only remove type-only imports\n * (introduced in TypeScript 3.8). This should only be used if you are using\n * TypeScript >= 3.8.\n *\n * @default false\n */\n onlyRemoveTypeImports?: boolean;\n\n /**\n * When set to true, Babel will inline enum values rather than using the\n * usual enum output:\n *\n * This option differs from TypeScript's --isolatedModules behavior, which\n * ignores the const modifier and compiles them as normal enums, and aligns\n * Babel's behavior with TypeScript's default behavior.\n *\n * ```ts\n * // Input\n * const enum Animals {\n * Fish\n * }\n * console.log(Animals.Fish);\n *\n * // Default output\n * var Animals;\n *\n * (function (Animals) {\n * Animals[Animals[\"Fish\"] = 0] = \"Fish\";\n * })(Animals || (Animals = {}));\n *\n * console.log(Animals.Fish);\n *\n * // `optimizeConstEnums` output\n * console.log(0);\n * ```\n *\n * However, when exporting a const enum Babel will compile it to a plain\n * object literal so that it doesn't need to rely on cross-file analysis\n * when compiling it:\n *\n * ```ts\n * // Input\n * export const enum Animals {\n * Fish,\n * }\n *\n * // `optimizeConstEnums` output\n * export var Animals = {\n * Fish: 0,\n * };\n * ```\n *\n * @default false\n */\n optimizeConstEnums?: boolean;\n };\n /**\n * Pass any additional [babel-plugin-jsx-dom-expressions](https://github.com/ryansolid/dom-expressions/tree/main/packages/babel-plugin-jsx-dom-expressions#plugin-options).\n * They will be merged with the defaults sets by [babel-preset-solid](https://github.com/solidjs/solid/blob/main/packages/babel-preset-solid/index.js#L8-L25).\n *\n * @default {}\n */\n solid: {\n /**\n * The name of the runtime module to import the methods from.\n *\n * @default \"solid-js/web\"\n */\n moduleName?: string;\n\n /**\n * The output mode of the compiler.\n * Can be:\n * - \"dom\" is standard output\n * - \"ssr\" is for server side rendering of strings.\n * - \"universal\" is for using custom renderers from solid-js/universal\n *\n * @default \"dom\"\n */\n generate?: 'ssr' | 'dom' | 'universal';\n\n /**\n * Indicate whether the output should contain hydratable markers.\n *\n * @default false\n */\n hydratable?: boolean;\n\n /**\n * Boolean to indicate whether to enable automatic event delegation on camelCase.\n *\n * @default true\n */\n delegateEvents?: boolean;\n\n /**\n * Boolean indicates whether smart conditional detection should be used.\n * This optimizes simple boolean expressions and ternaries in JSX.\n *\n * @default true\n */\n wrapConditionals?: boolean;\n\n /**\n * Boolean indicates whether to set current render context on Custom Elements and slots.\n * Useful for seemless Context API with Web Components.\n *\n * @default true\n */\n contextToCustomElements?: boolean;\n\n /**\n * Array of Component exports from module, that aren't included by default with the library.\n * This plugin will automatically import them if it comes across them in the JSX.\n *\n * @default [\"For\",\"Show\",\"Switch\",\"Match\",\"Suspense\",\"SuspenseList\",\"Portal\",\"Index\",\"Dynamic\",\"ErrorBoundary\"]\n */\n builtIns?: string[];\n };\n}\n\nfunction getExtension(filename: string): string {\n const index = filename.lastIndexOf('.');\n return index < 0 ? '' : filename.substring(index).replace(/\\?.+$/, '');\n}\nfunction containsSolidField(fields) {\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}\nfunction isJestDomInstalled() {\n try {\n // attempt to reference a file that will not throw error because expect is missing\n require('@testing-library/jest-dom/dist/utils');\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexport default function solidPlugin(options: Partial<Options> = {}): Plugin {\n let needHmr = false;\n let replaceDev = false;\n let projectRoot = process.cwd();\n\n return {\n name: 'solid',\n enforce: 'pre',\n\n async config(userConfig, { command }) {\n // We inject the dev mode only if the user explicitely wants it or if we are in dev (serve) mode\n replaceDev = options.dev === true || (options.dev !== false && command === 'serve');\n projectRoot = userConfig.root;\n\n if (!userConfig.resolve) userConfig.resolve = {};\n userConfig.resolve.alias = normalizeAliases(userConfig.resolve && userConfig.resolve.alias);\n\n const solidPkgsConfig = await crawlFrameworkPkgs({\n viteUserConfig: userConfig,\n root: projectRoot || process.cwd(),\n isBuild: command === 'build',\n isFrameworkPkgByJson(pkgJson) {\n return containsSolidField(pkgJson.exports || {});\n },\n });\n\n // fix for bundling dev in production\n const nestedDeps = replaceDev\n ? ['solid-js', 'solid-js/web', 'solid-js/store', 'solid-js/html', 'solid-js/h']\n : [];\n\n const test = userConfig.mode === 'test'\n ? {\n test: {\n globals: true,\n ...(options.ssr ? {} : { environment: 'jsdom' }),\n transformMode : {\n [options.ssr ? 'ssr' : 'web']: [/\\.[jt]sx?$/]\n },\n ...(isJestDomInstalled()\n ? { setupFiles: ['node_modules/@testing-library/jest-dom/extend-expect.js'] }\n : {}\n ),\n deps: { registerNodeLoader: true },\n ...(userConfig as UserConfig & { test: Record<string, any>}).test\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: [\n 'solid',\n ...(replaceDev ? ['development'] : []),\n ...(userConfig.mode === 'test' && !options.ssr ? ['browser'] : [])\n ],\n dedupe: nestedDeps,\n alias: [{ find: /^solid-refresh$/, replacement: runtimePublicPath }],\n },\n optimizeDeps: {\n include: [...nestedDeps, ...solidPkgsConfig.optimizeDeps.include],\n exclude: solidPkgsConfig.optimizeDeps.exclude,\n },\n ssr: solidPkgsConfig.ssr,\n ...test\n };\n },\n\n configResolved(config) {\n needHmr = config.command === 'serve' && config.mode !== 'production' && options.hot !== false;\n },\n\n resolveId(id) {\n if (id === runtimePublicPath) return id;\n },\n\n load(id) {\n if (id === runtimePublicPath) return runtimeCode;\n },\n\n async transform(source, id, transformOptions) {\n const isSsr = transformOptions && transformOptions.ssr;\n const currentFileExtension = getExtension(id);\n\n const extensionsToWatch = [...(options.extensions || []), '.tsx', '.jsx'];\n const allExtensions = extensionsToWatch.map((extension) =>\n // An extension can be a string or a tuple [extension, options]\n typeof extension === 'string' ? extension : extension[0],\n );\n\n if (!allExtensions.includes(currentFileExtension)) {\n return null;\n }\n\n const inNodeModules = /node_modules/.test(id);\n\n let solidOptions: { generate: 'ssr' | 'dom'; hydratable: boolean };\n\n if (options.ssr) {\n if (isSsr) {\n solidOptions = { generate: 'ssr', hydratable: true };\n } else {\n solidOptions = { generate: 'dom', hydratable: true };\n }\n } else {\n solidOptions = { generate: 'dom', hydratable: false };\n }\n\n id = id.replace(/\\?.+$/, '');\n\n const opts: TransformOptions = {\n babelrc: false,\n configFile: false,\n root: projectRoot,\n filename: id,\n sourceFileName: id,\n presets: [[solid, { ...solidOptions, ...(options.solid || {}) }]],\n plugins: needHmr && !isSsr && !inNodeModules ? [[solidRefresh, { bundler: 'vite' }]] : [],\n sourceMaps: true,\n // Vite handles sourcemap flattening\n inputSourceMap: false as any,\n };\n\n // We need to know if the current file extension has a typescript options tied to it\n const shouldBeProcessedWithTypescript = extensionsToWatch.some((extension) => {\n if (typeof extension === 'string') {\n return extension.includes('tsx');\n }\n\n const [extensionName, extensionOptions] = extension;\n if (extensionName !== currentFileExtension) return false;\n\n return extensionOptions.typescript;\n });\n\n if (shouldBeProcessedWithTypescript) {\n opts.presets.push([ts, options.typescript || {}]);\n }\n\n // Default value for babel user options\n let babelUserOptions: TransformOptions = {};\n\n if (options.babel) {\n if (typeof options.babel === 'function') {\n const babelOptions = options.babel(source, id, isSsr);\n babelUserOptions = babelOptions instanceof Promise ? await babelOptions : babelOptions;\n } else {\n babelUserOptions = options.babel;\n }\n }\n\n const babelOptions = mergeAndConcat(babelUserOptions, opts) as TransformOptions;\n\n const { code, map } = await transformAsync(source, babelOptions);\n\n return { code, map };\n },\n };\n}\n\n/**\n * This basically normalize all aliases of the config into\n * the array format of the alias.\n *\n * eg: alias: { '@': 'src/' } => [{ find: '@', replacement: 'src/' }]\n */\nfunction normalizeAliases(alias: AliasOptions = []): Alias[] {\n return Array.isArray(alias)\n ? alias\n : Object.entries(alias).map(([find, replacement]) => ({ find, replacement }));\n}\n"],"names":["require","createRequire","import","runtimePublicPath","runtimeFilePath","resolve","runtimeCode","readFileSync","getExtension","filename","index","lastIndexOf","substring","replace","containsSolidField","fields","keys","Object","i","length","key","isJestDomInstalled","e","solidPlugin","options","needHmr","replaceDev","projectRoot","process","cwd","name","enforce","config","userConfig","command","dev","root","alias","normalizeAliases","solidPkgsConfig","crawlFrameworkPkgs","viteUserConfig","isBuild","isFrameworkPkgByJson","pkgJson","exports","nestedDeps","test","mode","globals","ssr","environment","transformMode","setupFiles","deps","registerNodeLoader","esbuild","include","conditions","dedupe","find","replacement","optimizeDeps","exclude","configResolved","hot","resolveId","id","load","transform","source","transformOptions","isSsr","currentFileExtension","extensionsToWatch","extensions","allExtensions","map","extension","includes","inNodeModules","solidOptions","generate","hydratable","opts","babelrc","configFile","sourceFileName","presets","solid","plugins","solidRefresh","bundler","sourceMaps","inputSourceMap","shouldBeProcessedWithTypescript","some","extensionName","extensionOptions","typescript","push","ts","babelUserOptions","babel","babelOptions","Promise","mergeAndConcat","code","transformAsync","Array","isArray","entries"],"mappings":"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"}
|
package/dist/esm/index.mjs
CHANGED
|
@@ -1,85 +1,41 @@
|
|
|
1
1
|
import { transformAsync } from '@babel/core';
|
|
2
2
|
import ts from '@babel/preset-typescript';
|
|
3
3
|
import solid from 'babel-preset-solid';
|
|
4
|
-
import { readFileSync
|
|
5
|
-
import { join, dirname } from 'path';
|
|
4
|
+
import { readFileSync } from 'fs';
|
|
6
5
|
import { mergeAndConcat } from 'merge-anything';
|
|
7
6
|
import { createRequire } from 'module';
|
|
8
7
|
import solidRefresh from 'solid-refresh/babel.js';
|
|
9
|
-
import {
|
|
8
|
+
import { crawlFrameworkPkgs } from 'vitefu';
|
|
10
9
|
|
|
11
10
|
const require = createRequire(import.meta.url);
|
|
12
|
-
|
|
13
11
|
const runtimePublicPath = '/@solid-refresh';
|
|
14
|
-
|
|
15
12
|
const runtimeFilePath = require.resolve('solid-refresh/dist/solid-refresh.mjs');
|
|
16
|
-
|
|
17
13
|
const runtimeCode = readFileSync(runtimeFilePath, 'utf-8');
|
|
14
|
+
|
|
18
15
|
/** Possible options for the extensions property */
|
|
19
16
|
|
|
20
17
|
function getExtension(filename) {
|
|
21
18
|
const index = filename.lastIndexOf('.');
|
|
22
19
|
return index < 0 ? '' : filename.substring(index).replace(/\?.+$/, '');
|
|
23
20
|
}
|
|
24
|
-
|
|
25
21
|
function containsSolidField(fields) {
|
|
26
22
|
const keys = Object.keys(fields);
|
|
27
|
-
|
|
28
23
|
for (let i = 0; i < keys.length; i++) {
|
|
29
24
|
const key = keys[i];
|
|
30
25
|
if (key === 'solid') return true;
|
|
31
26
|
if (typeof fields[key] === 'object' && fields[key] != null && containsSolidField(fields[key])) return true;
|
|
32
27
|
}
|
|
33
|
-
|
|
34
28
|
return false;
|
|
35
29
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
return
|
|
30
|
+
function isJestDomInstalled() {
|
|
31
|
+
try {
|
|
32
|
+
// attempt to reference a file that will not throw error because expect is missing
|
|
33
|
+
require('@testing-library/jest-dom/dist/utils');
|
|
34
|
+
return true;
|
|
35
|
+
} catch (e) {
|
|
36
|
+
return false;
|
|
43
37
|
}
|
|
44
|
-
|
|
45
|
-
const require = createRequire(pkgPath);
|
|
46
|
-
|
|
47
|
-
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
48
|
-
const deps = [...Object.keys(pkg.dependencies || {}), ...Object.keys(pkg.devDependencies || {})];
|
|
49
|
-
const pkgs = deps.map(dep => {
|
|
50
|
-
try {
|
|
51
|
-
return require(`${dep}/package.json`);
|
|
52
|
-
} catch (e) {
|
|
53
|
-
try {
|
|
54
|
-
let dir = dirname(resolve(dep));
|
|
55
|
-
|
|
56
|
-
while (dir) {
|
|
57
|
-
const pkgPath = join(dir, 'package.json');
|
|
58
|
-
|
|
59
|
-
if (existsSync(pkgPath)) {
|
|
60
|
-
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
61
|
-
if (pkg && pkg.name === dep) return pkg;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
const parent = dirname(dir);
|
|
65
|
-
|
|
66
|
-
if (parent === dir) {
|
|
67
|
-
break;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
dir = parent;
|
|
71
|
-
}
|
|
72
|
-
} catch (e) {
|
|
73
|
-
console.log("Couldn't find package.json for", dep, e);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
return deps.reduce((acc, dep, i) => {
|
|
78
|
-
if (pkgs[i] && pkgs[i].exports && containsSolidField(pkgs[i].exports)) acc.push(dep);
|
|
79
|
-
return acc;
|
|
80
|
-
}, []);
|
|
81
38
|
}
|
|
82
|
-
|
|
83
39
|
function solidPlugin(options = {}) {
|
|
84
40
|
let needHmr = false;
|
|
85
41
|
let replaceDev = false;
|
|
@@ -87,8 +43,7 @@ function solidPlugin(options = {}) {
|
|
|
87
43
|
return {
|
|
88
44
|
name: 'solid',
|
|
89
45
|
enforce: 'pre',
|
|
90
|
-
|
|
91
|
-
config(userConfig, {
|
|
46
|
+
async config(userConfig, {
|
|
92
47
|
command
|
|
93
48
|
}) {
|
|
94
49
|
// We inject the dev mode only if the user explicitely wants it or if we are in dev (serve) mode
|
|
@@ -96,9 +51,35 @@ function solidPlugin(options = {}) {
|
|
|
96
51
|
projectRoot = userConfig.root;
|
|
97
52
|
if (!userConfig.resolve) userConfig.resolve = {};
|
|
98
53
|
userConfig.resolve.alias = normalizeAliases(userConfig.resolve && userConfig.resolve.alias);
|
|
99
|
-
const
|
|
54
|
+
const solidPkgsConfig = await crawlFrameworkPkgs({
|
|
55
|
+
viteUserConfig: userConfig,
|
|
56
|
+
root: projectRoot || process.cwd(),
|
|
57
|
+
isBuild: command === 'build',
|
|
58
|
+
isFrameworkPkgByJson(pkgJson) {
|
|
59
|
+
return containsSolidField(pkgJson.exports || {});
|
|
60
|
+
}
|
|
61
|
+
});
|
|
100
62
|
|
|
63
|
+
// fix for bundling dev in production
|
|
101
64
|
const nestedDeps = replaceDev ? ['solid-js', 'solid-js/web', 'solid-js/store', 'solid-js/html', 'solid-js/h'] : [];
|
|
65
|
+
const test = userConfig.mode === 'test' ? {
|
|
66
|
+
test: {
|
|
67
|
+
globals: true,
|
|
68
|
+
...(options.ssr ? {} : {
|
|
69
|
+
environment: 'jsdom'
|
|
70
|
+
}),
|
|
71
|
+
transformMode: {
|
|
72
|
+
[options.ssr ? 'ssr' : 'web']: [/\.[jt]sx?$/]
|
|
73
|
+
},
|
|
74
|
+
...(isJestDomInstalled() ? {
|
|
75
|
+
setupFiles: ['node_modules/@testing-library/jest-dom/extend-expect.js']
|
|
76
|
+
} : {}),
|
|
77
|
+
deps: {
|
|
78
|
+
registerNodeLoader: true
|
|
79
|
+
},
|
|
80
|
+
...userConfig.test
|
|
81
|
+
}
|
|
82
|
+
} : {};
|
|
102
83
|
return {
|
|
103
84
|
/**
|
|
104
85
|
* We only need esbuild on .ts or .js files.
|
|
@@ -108,7 +89,7 @@ function solidPlugin(options = {}) {
|
|
|
108
89
|
include: /\.ts$/
|
|
109
90
|
},
|
|
110
91
|
resolve: {
|
|
111
|
-
conditions: ['solid', ...(replaceDev ? ['development'] : [])],
|
|
92
|
+
conditions: ['solid', ...(replaceDev ? ['development'] : []), ...(userConfig.mode === 'test' && !options.ssr ? ['browser'] : [])],
|
|
112
93
|
dedupe: nestedDeps,
|
|
113
94
|
alias: [{
|
|
114
95
|
find: /^solid-refresh$/,
|
|
@@ -116,41 +97,34 @@ function solidPlugin(options = {}) {
|
|
|
116
97
|
}]
|
|
117
98
|
},
|
|
118
99
|
optimizeDeps: {
|
|
119
|
-
include: nestedDeps,
|
|
120
|
-
exclude:
|
|
100
|
+
include: [...nestedDeps, ...solidPkgsConfig.optimizeDeps.include],
|
|
101
|
+
exclude: solidPkgsConfig.optimizeDeps.exclude
|
|
121
102
|
},
|
|
122
|
-
ssr:
|
|
123
|
-
|
|
124
|
-
}
|
|
103
|
+
ssr: solidPkgsConfig.ssr,
|
|
104
|
+
...test
|
|
125
105
|
};
|
|
126
106
|
},
|
|
127
|
-
|
|
128
107
|
configResolved(config) {
|
|
129
108
|
needHmr = config.command === 'serve' && config.mode !== 'production' && options.hot !== false;
|
|
130
109
|
},
|
|
131
|
-
|
|
132
110
|
resolveId(id) {
|
|
133
111
|
if (id === runtimePublicPath) return id;
|
|
134
112
|
},
|
|
135
|
-
|
|
136
113
|
load(id) {
|
|
137
114
|
if (id === runtimePublicPath) return runtimeCode;
|
|
138
115
|
},
|
|
139
|
-
|
|
140
116
|
async transform(source, id, transformOptions) {
|
|
141
117
|
const isSsr = transformOptions && transformOptions.ssr;
|
|
142
118
|
const currentFileExtension = getExtension(id);
|
|
143
119
|
const extensionsToWatch = [...(options.extensions || []), '.tsx', '.jsx'];
|
|
144
|
-
const allExtensions = extensionsToWatch.map(extension =>
|
|
120
|
+
const allExtensions = extensionsToWatch.map(extension =>
|
|
121
|
+
// An extension can be a string or a tuple [extension, options]
|
|
145
122
|
typeof extension === 'string' ? extension : extension[0]);
|
|
146
|
-
|
|
147
123
|
if (!allExtensions.includes(currentFileExtension)) {
|
|
148
124
|
return null;
|
|
149
125
|
}
|
|
150
|
-
|
|
151
126
|
const inNodeModules = /node_modules/.test(id);
|
|
152
127
|
let solidOptions;
|
|
153
|
-
|
|
154
128
|
if (options.ssr) {
|
|
155
129
|
if (isSsr) {
|
|
156
130
|
solidOptions = {
|
|
@@ -169,7 +143,6 @@ function solidPlugin(options = {}) {
|
|
|
169
143
|
hydratable: false
|
|
170
144
|
};
|
|
171
145
|
}
|
|
172
|
-
|
|
173
146
|
id = id.replace(/\?.+$/, '');
|
|
174
147
|
const opts = {
|
|
175
148
|
babelrc: false,
|
|
@@ -177,7 +150,8 @@ function solidPlugin(options = {}) {
|
|
|
177
150
|
root: projectRoot,
|
|
178
151
|
filename: id,
|
|
179
152
|
sourceFileName: id,
|
|
180
|
-
presets: [[solid, {
|
|
153
|
+
presets: [[solid, {
|
|
154
|
+
...solidOptions,
|
|
181
155
|
...(options.solid || {})
|
|
182
156
|
}]],
|
|
183
157
|
plugins: needHmr && !isSsr && !inNodeModules ? [[solidRefresh, {
|
|
@@ -186,25 +160,23 @@ function solidPlugin(options = {}) {
|
|
|
186
160
|
sourceMaps: true,
|
|
187
161
|
// Vite handles sourcemap flattening
|
|
188
162
|
inputSourceMap: false
|
|
189
|
-
};
|
|
163
|
+
};
|
|
190
164
|
|
|
165
|
+
// We need to know if the current file extension has a typescript options tied to it
|
|
191
166
|
const shouldBeProcessedWithTypescript = extensionsToWatch.some(extension => {
|
|
192
167
|
if (typeof extension === 'string') {
|
|
193
168
|
return extension.includes('tsx');
|
|
194
169
|
}
|
|
195
|
-
|
|
196
170
|
const [extensionName, extensionOptions] = extension;
|
|
197
171
|
if (extensionName !== currentFileExtension) return false;
|
|
198
172
|
return extensionOptions.typescript;
|
|
199
173
|
});
|
|
200
|
-
|
|
201
174
|
if (shouldBeProcessedWithTypescript) {
|
|
202
175
|
opts.presets.push([ts, options.typescript || {}]);
|
|
203
|
-
}
|
|
204
|
-
|
|
176
|
+
}
|
|
205
177
|
|
|
178
|
+
// Default value for babel user options
|
|
206
179
|
let babelUserOptions = {};
|
|
207
|
-
|
|
208
180
|
if (options.babel) {
|
|
209
181
|
if (typeof options.babel === 'function') {
|
|
210
182
|
const babelOptions = options.babel(source, id, isSsr);
|
|
@@ -213,7 +185,6 @@ function solidPlugin(options = {}) {
|
|
|
213
185
|
babelUserOptions = options.babel;
|
|
214
186
|
}
|
|
215
187
|
}
|
|
216
|
-
|
|
217
188
|
const babelOptions = mergeAndConcat(babelUserOptions, opts);
|
|
218
189
|
const {
|
|
219
190
|
code,
|
|
@@ -224,16 +195,15 @@ function solidPlugin(options = {}) {
|
|
|
224
195
|
map
|
|
225
196
|
};
|
|
226
197
|
}
|
|
227
|
-
|
|
228
198
|
};
|
|
229
199
|
}
|
|
200
|
+
|
|
230
201
|
/**
|
|
231
202
|
* This basically normalize all aliases of the config into
|
|
232
203
|
* the array format of the alias.
|
|
233
204
|
*
|
|
234
205
|
* eg: alias: { '@': 'src/' } => [{ find: '@', replacement: 'src/' }]
|
|
235
206
|
*/
|
|
236
|
-
|
|
237
207
|
function normalizeAliases(alias = []) {
|
|
238
208
|
return Array.isArray(alias) ? alias : Object.entries(alias).map(([find, replacement]) => ({
|
|
239
209
|
find,
|
package/dist/esm/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../src/index.ts"],"sourcesContent":["import { transformAsync, TransformOptions } from '@babel/core';\nimport ts from '@babel/preset-typescript';\nimport solid from 'babel-preset-solid';\nimport { readFileSync, existsSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { mergeAndConcat } from 'merge-anything';\nimport { createRequire } from 'module';\nimport solidRefresh from 'solid-refresh/babel.js';\nimport type { Alias, AliasOptions, Plugin, UserConfig } from 'vite';\nimport { resolve } from 'node:path';\n\nconst require = createRequire(import.meta.url);\n\nconst runtimePublicPath = '/@solid-refresh';\nconst runtimeFilePath = require.resolve('solid-refresh/dist/solid-refresh.mjs');\nconst runtimeCode = readFileSync(runtimeFilePath, 'utf-8');\n\n/** Possible options for the extensions property */\nexport interface ExtensionOptions {\n typescript?: boolean;\n}\n\n/** Configuration options for vite-plugin-solid. */\nexport interface Options {\n /**\n * This will inject solid-js/dev in place of solid-js in dev mode. Has no\n * effect in prod. If set to `false`, it won't inject it in dev. This is\n * useful for extra logs and debugging.\n *\n * @default true\n */\n dev: boolean;\n /**\n * This will force SSR code in the produced files. This is experiemental\n * and mostly not working yet.\n *\n * @default false\n */\n ssr: boolean;\n /**\n * This will inject HMR runtime in dev mode. Has no effect in prod. If\n * set to `false`, it won't inject the runtime in dev.\n *\n * @default true\n */\n hot: boolean;\n /**\n * This registers additional extensions that should be processed by\n * vite-plugin-solid.\n *\n * @default undefined\n */\n extensions?: (string | [string, ExtensionOptions])[];\n /**\n * Pass any additional babel transform options. They will be merged with\n * the transformations required by Solid.\n *\n * @default {}\n */\n babel:\n | TransformOptions\n | ((source: string, id: string, ssr: boolean) => TransformOptions)\n | ((source: string, id: string, ssr: boolean) => Promise<TransformOptions>);\n typescript: {\n /**\n * Forcibly enables jsx parsing. Otherwise angle brackets will be treated as\n * typescript's legacy type assertion var foo = <string>bar;. Also, isTSX:\n * true requires allExtensions: true.\n *\n * @default false\n */\n isTSX?: boolean;\n\n /**\n * Replace the function used when compiling JSX expressions. This is so that\n * we know that the import is not a type import, and should not be removed.\n *\n * @default React\n */\n jsxPragma?: string;\n\n /**\n * Replace the function used when compiling JSX fragment expressions. This\n * is so that we know that the import is not a type import, and should not\n * be removed.\n *\n * @default React.Fragment\n */\n jsxPragmaFrag?: string;\n\n /**\n * Indicates that every file should be parsed as TS or TSX (depending on the\n * isTSX option).\n *\n * @default false\n */\n allExtensions?: boolean;\n\n /**\n * Enables compilation of TypeScript namespaces.\n *\n * @default uses the default set by @babel/plugin-transform-typescript.\n */\n allowNamespaces?: boolean;\n\n /**\n * When enabled, type-only class fields are only removed if they are\n * prefixed with the declare modifier:\n *\n * > NOTE: This will be enabled by default in Babel 8\n *\n * @default false\n *\n * @example\n * ```ts\n * class A {\n * declare foo: string; // Removed\n * bar: string; // Initialized to undefined\n * prop?: string; // Initialized to undefined\n * prop1!: string // Initialized to undefined\n * }\n * ```\n */\n allowDeclareFields?: boolean;\n\n /**\n * When set to true, the transform will only remove type-only imports\n * (introduced in TypeScript 3.8). This should only be used if you are using\n * TypeScript >= 3.8.\n *\n * @default false\n */\n onlyRemoveTypeImports?: boolean;\n\n /**\n * When set to true, Babel will inline enum values rather than using the\n * usual enum output:\n *\n * This option differs from TypeScript's --isolatedModules behavior, which\n * ignores the const modifier and compiles them as normal enums, and aligns\n * Babel's behavior with TypeScript's default behavior.\n *\n * ```ts\n * // Input\n * const enum Animals {\n * Fish\n * }\n * console.log(Animals.Fish);\n *\n * // Default output\n * var Animals;\n *\n * (function (Animals) {\n * Animals[Animals[\"Fish\"] = 0] = \"Fish\";\n * })(Animals || (Animals = {}));\n *\n * console.log(Animals.Fish);\n *\n * // `optimizeConstEnums` output\n * console.log(0);\n * ```\n *\n * However, when exporting a const enum Babel will compile it to a plain\n * object literal so that it doesn't need to rely on cross-file analysis\n * when compiling it:\n *\n * ```ts\n * // Input\n * export const enum Animals {\n * Fish,\n * }\n *\n * // `optimizeConstEnums` output\n * export var Animals = {\n * Fish: 0,\n * };\n * ```\n *\n * @default false\n */\n optimizeConstEnums?: boolean;\n };\n /**\n * Pass any additional [babel-plugin-jsx-dom-expressions](https://github.com/ryansolid/dom-expressions/tree/main/packages/babel-plugin-jsx-dom-expressions#plugin-options).\n * They will be merged with the defaults sets by [babel-preset-solid](https://github.com/solidjs/solid/blob/main/packages/babel-preset-solid/index.js#L8-L25).\n *\n * @default {}\n */\n solid: {\n /**\n * The name of the runtime module to import the methods from.\n *\n * @default \"solid-js/web\"\n */\n moduleName?: string;\n\n /**\n * The output mode of the compiler.\n * Can be:\n * - \"dom\" is standard output\n * - \"ssr\" is for server side rendering of strings.\n * - \"universal\" is for using custom renderers from solid-js/universal\n *\n * @default \"dom\"\n */\n generate?: 'ssr' | 'dom' | 'universal';\n\n /**\n * Indicate whether the output should contain hydratable markers.\n *\n * @default false\n */\n hydratable?: boolean;\n\n /**\n * Boolean to indicate whether to enable automatic event delegation on camelCase.\n *\n * @default true\n */\n delegateEvents?: boolean;\n\n /**\n * Boolean indicates whether smart conditional detection should be used.\n * This optimizes simple boolean expressions and ternaries in JSX.\n *\n * @default true\n */\n wrapConditionals?: boolean;\n\n /**\n * Boolean indicates whether to set current render context on Custom Elements and slots.\n * Useful for seemless Context API with Web Components.\n *\n * @default true\n */\n contextToCustomElements?: boolean;\n\n /**\n * Array of Component exports from module, that aren't included by default with the library.\n * This plugin will automatically import them if it comes across them in the JSX.\n *\n * @default [\"For\",\"Show\",\"Switch\",\"Match\",\"Suspense\",\"SuspenseList\",\"Portal\",\"Index\",\"Dynamic\",\"ErrorBoundary\"]\n */\n builtIns?: string[];\n };\n}\n\nfunction getExtension(filename: string): string {\n const index = filename.lastIndexOf('.');\n return index < 0 ? '' : filename.substring(index).replace(/\\?.+$/, '');\n}\nfunction containsSolidField(fields) {\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])) return true;\n }\n return false;\n}\n\nfunction getSolidDeps(root) {\n const pkgPath = join(root, 'package.json');\n if (!existsSync(pkgPath)) {\n console.log('No package.json found at project root');\n return [];\n }\n const require = createRequire(pkgPath);\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n const deps = [...Object.keys(pkg.dependencies || {}), ...Object.keys(pkg.devDependencies || {})];\n const pkgs = deps.map((dep) => {\n try {\n return require(`${dep}/package.json`);\n } catch (e) {\n try {\n let dir = dirname(resolve(dep));\n while (dir) {\n const pkgPath = join(dir, 'package.json');\n if (existsSync(pkgPath)) {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n if (pkg && pkg.name === dep) return pkg;\n }\n const parent = dirname(dir);\n if (parent === dir) {\n break;\n }\n dir = parent;\n }\n } catch (e) {\n console.log(\"Couldn't find package.json for\", dep, e);\n }\n }\n });\n return deps.reduce((acc, dep, i) => {\n if (pkgs[i] && pkgs[i].exports && containsSolidField(pkgs[i].exports)) acc.push(dep);\n return acc;\n }, []);\n}\n\nexport default function solidPlugin(options: Partial<Options> = {}): Plugin {\n let needHmr = false;\n let replaceDev = false;\n let projectRoot = process.cwd();\n\n return {\n name: 'solid',\n enforce: 'pre',\n\n config(userConfig, { command }): UserConfig {\n // We inject the dev mode only if the user explicitely wants it or if we are in dev (serve) mode\n replaceDev = options.dev === true || (options.dev !== false && command === 'serve');\n projectRoot = userConfig.root;\n\n if (!userConfig.resolve) userConfig.resolve = {};\n userConfig.resolve.alias = normalizeAliases(userConfig.resolve && userConfig.resolve.alias);\n\n const solidDeps = getSolidDeps(projectRoot || process.cwd());\n // fix for bundling dev in production\n const nestedDeps = replaceDev\n ? ['solid-js', 'solid-js/web', 'solid-js/store', 'solid-js/html', 'solid-js/h']\n : [];\n\n 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: ['solid', ...(replaceDev ? ['development'] : [])],\n dedupe: nestedDeps,\n alias: [{ find: /^solid-refresh$/, replacement: runtimePublicPath }],\n },\n optimizeDeps: {\n include: nestedDeps,\n exclude: [...(userConfig.optimizeDeps?.exclude || []), ...solidDeps]\n },\n ssr: {\n ...userConfig.ssr,\n noExternal: [\n ...(((userConfig.ssr && userConfig.ssr.noExternal) || []) as string[]),\n ...solidDeps,\n ],\n },\n } as UserConfig;\n },\n\n configResolved(config) {\n needHmr = config.command === 'serve' && config.mode !== 'production' && options.hot !== false;\n },\n\n resolveId(id) {\n if (id === runtimePublicPath) return id;\n },\n\n load(id) {\n if (id === runtimePublicPath) return runtimeCode;\n },\n\n async transform(source, id, transformOptions) {\n const isSsr = transformOptions && transformOptions.ssr;\n const currentFileExtension = getExtension(id);\n\n const extensionsToWatch = [...(options.extensions || []), '.tsx', '.jsx'];\n const allExtensions = extensionsToWatch.map((extension) =>\n // An extension can be a string or a tuple [extension, options]\n typeof extension === 'string' ? extension : extension[0],\n );\n\n if (!allExtensions.includes(currentFileExtension)) {\n return null;\n }\n\n const inNodeModules = /node_modules/.test(id);\n\n let solidOptions: { generate: 'ssr' | 'dom'; hydratable: boolean };\n\n if (options.ssr) {\n if (isSsr) {\n solidOptions = { generate: 'ssr', hydratable: true };\n } else {\n solidOptions = { generate: 'dom', hydratable: true };\n }\n } else {\n solidOptions = { generate: 'dom', hydratable: false };\n }\n\n id = id.replace(/\\?.+$/, '');\n\n const opts: TransformOptions = {\n babelrc: false,\n configFile: false,\n root: projectRoot,\n filename: id,\n sourceFileName: id,\n presets: [[solid, { ...solidOptions, ...(options.solid || {}) }]],\n plugins: needHmr && !isSsr && !inNodeModules ? [[solidRefresh, { bundler: 'vite' }]] : [],\n sourceMaps: true,\n // Vite handles sourcemap flattening\n inputSourceMap: false as any,\n };\n\n // We need to know if the current file extension has a typescript options tied to it\n const shouldBeProcessedWithTypescript = extensionsToWatch.some((extension) => {\n if (typeof extension === 'string') {\n return extension.includes('tsx');\n }\n\n const [extensionName, extensionOptions] = extension;\n if (extensionName !== currentFileExtension) return false;\n\n return extensionOptions.typescript;\n });\n\n if (shouldBeProcessedWithTypescript) {\n opts.presets.push([ts, options.typescript || {}]);\n }\n\n // Default value for babel user options\n let babelUserOptions: TransformOptions = {};\n\n if (options.babel) {\n if (typeof options.babel === 'function') {\n const babelOptions = options.babel(source, id, isSsr);\n babelUserOptions = babelOptions instanceof Promise ? await babelOptions : babelOptions;\n } else {\n babelUserOptions = options.babel;\n }\n }\n\n const babelOptions = mergeAndConcat(babelUserOptions, opts) as TransformOptions;\n\n const { code, map } = await transformAsync(source, babelOptions);\n\n return { code, map };\n },\n };\n}\n\n/**\n * This basically normalize all aliases of the config into\n * the array format of the alias.\n *\n * eg: alias: { '@': 'src/' } => [{ find: '@', replacement: 'src/' }]\n */\nfunction normalizeAliases(alias: AliasOptions = []): Alias[] {\n return Array.isArray(alias)\n ? alias\n : Object.entries(alias).map(([find, replacement]) => ({ find, replacement }));\n}\n"],"names":["require","createRequire","import","meta","url","runtimePublicPath","runtimeFilePath","resolve","runtimeCode","readFileSync","getExtension","filename","index","lastIndexOf","substring","replace","containsSolidField","fields","keys","Object","i","length","key","getSolidDeps","root","pkgPath","join","existsSync","console","log","pkg","JSON","parse","deps","dependencies","devDependencies","pkgs","map","dep","e","dir","dirname","name","parent","reduce","acc","exports","push","solidPlugin","options","needHmr","replaceDev","projectRoot","process","cwd","enforce","config","userConfig","command","dev","alias","normalizeAliases","solidDeps","nestedDeps","esbuild","include","conditions","dedupe","find","replacement","optimizeDeps","exclude","ssr","noExternal","configResolved","mode","hot","resolveId","id","load","transform","source","transformOptions","isSsr","currentFileExtension","extensionsToWatch","extensions","allExtensions","extension","includes","inNodeModules","test","solidOptions","generate","hydratable","opts","babelrc","configFile","sourceFileName","presets","solid","plugins","solidRefresh","bundler","sourceMaps","inputSourceMap","shouldBeProcessedWithTypescript","some","extensionName","extensionOptions","typescript","ts","babelUserOptions","babel","babelOptions","Promise","mergeAndConcat","code","transformAsync","Array","isArray","entries"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../src/index.ts"],"sourcesContent":["import { transformAsync, TransformOptions } from '@babel/core';\nimport ts from '@babel/preset-typescript';\nimport solid from 'babel-preset-solid';\nimport { readFileSync } from 'fs';\nimport { mergeAndConcat } from 'merge-anything';\nimport { createRequire } from 'module';\nimport solidRefresh from 'solid-refresh/babel.js';\nimport type { Alias, AliasOptions, Plugin, UserConfig } from 'vite';\nimport { crawlFrameworkPkgs } from 'vitefu';\n\nconst require = createRequire(import.meta.url);\n\nconst runtimePublicPath = '/@solid-refresh';\nconst runtimeFilePath = require.resolve('solid-refresh/dist/solid-refresh.mjs');\nconst runtimeCode = readFileSync(runtimeFilePath, 'utf-8');\n\n/** Possible options for the extensions property */\nexport interface ExtensionOptions {\n typescript?: boolean;\n}\n\n/** Configuration options for vite-plugin-solid. */\nexport interface Options {\n /**\n * This will inject solid-js/dev in place of solid-js in dev mode. Has no\n * effect in prod. If set to `false`, it won't inject it in dev. This is\n * useful for extra logs and debugging.\n *\n * @default true\n */\n dev: boolean;\n /**\n * This will force SSR code in the produced files. This is experiemental\n * and mostly not working yet.\n *\n * @default false\n */\n ssr: boolean;\n /**\n * This will inject HMR runtime in dev mode. Has no effect in prod. If\n * set to `false`, it won't inject the runtime in dev.\n *\n * @default true\n */\n hot: boolean;\n /**\n * This registers additional extensions that should be processed by\n * vite-plugin-solid.\n *\n * @default undefined\n */\n extensions?: (string | [string, ExtensionOptions])[];\n /**\n * Pass any additional babel transform options. They will be merged with\n * the transformations required by Solid.\n *\n * @default {}\n */\n babel:\n | TransformOptions\n | ((source: string, id: string, ssr: boolean) => TransformOptions)\n | ((source: string, id: string, ssr: boolean) => Promise<TransformOptions>);\n typescript: {\n /**\n * Forcibly enables jsx parsing. Otherwise angle brackets will be treated as\n * typescript's legacy type assertion var foo = <string>bar;. Also, isTSX:\n * true requires allExtensions: true.\n *\n * @default false\n */\n isTSX?: boolean;\n\n /**\n * Replace the function used when compiling JSX expressions. This is so that\n * we know that the import is not a type import, and should not be removed.\n *\n * @default React\n */\n jsxPragma?: string;\n\n /**\n * Replace the function used when compiling JSX fragment expressions. This\n * is so that we know that the import is not a type import, and should not\n * be removed.\n *\n * @default React.Fragment\n */\n jsxPragmaFrag?: string;\n\n /**\n * Indicates that every file should be parsed as TS or TSX (depending on the\n * isTSX option).\n *\n * @default false\n */\n allExtensions?: boolean;\n\n /**\n * Enables compilation of TypeScript namespaces.\n *\n * @default uses the default set by @babel/plugin-transform-typescript.\n */\n allowNamespaces?: boolean;\n\n /**\n * When enabled, type-only class fields are only removed if they are\n * prefixed with the declare modifier:\n *\n * > NOTE: This will be enabled by default in Babel 8\n *\n * @default false\n *\n * @example\n * ```ts\n * class A {\n * declare foo: string; // Removed\n * bar: string; // Initialized to undefined\n * prop?: string; // Initialized to undefined\n * prop1!: string // Initialized to undefined\n * }\n * ```\n */\n allowDeclareFields?: boolean;\n\n /**\n * When set to true, the transform will only remove type-only imports\n * (introduced in TypeScript 3.8). This should only be used if you are using\n * TypeScript >= 3.8.\n *\n * @default false\n */\n onlyRemoveTypeImports?: boolean;\n\n /**\n * When set to true, Babel will inline enum values rather than using the\n * usual enum output:\n *\n * This option differs from TypeScript's --isolatedModules behavior, which\n * ignores the const modifier and compiles them as normal enums, and aligns\n * Babel's behavior with TypeScript's default behavior.\n *\n * ```ts\n * // Input\n * const enum Animals {\n * Fish\n * }\n * console.log(Animals.Fish);\n *\n * // Default output\n * var Animals;\n *\n * (function (Animals) {\n * Animals[Animals[\"Fish\"] = 0] = \"Fish\";\n * })(Animals || (Animals = {}));\n *\n * console.log(Animals.Fish);\n *\n * // `optimizeConstEnums` output\n * console.log(0);\n * ```\n *\n * However, when exporting a const enum Babel will compile it to a plain\n * object literal so that it doesn't need to rely on cross-file analysis\n * when compiling it:\n *\n * ```ts\n * // Input\n * export const enum Animals {\n * Fish,\n * }\n *\n * // `optimizeConstEnums` output\n * export var Animals = {\n * Fish: 0,\n * };\n * ```\n *\n * @default false\n */\n optimizeConstEnums?: boolean;\n };\n /**\n * Pass any additional [babel-plugin-jsx-dom-expressions](https://github.com/ryansolid/dom-expressions/tree/main/packages/babel-plugin-jsx-dom-expressions#plugin-options).\n * They will be merged with the defaults sets by [babel-preset-solid](https://github.com/solidjs/solid/blob/main/packages/babel-preset-solid/index.js#L8-L25).\n *\n * @default {}\n */\n solid: {\n /**\n * The name of the runtime module to import the methods from.\n *\n * @default \"solid-js/web\"\n */\n moduleName?: string;\n\n /**\n * The output mode of the compiler.\n * Can be:\n * - \"dom\" is standard output\n * - \"ssr\" is for server side rendering of strings.\n * - \"universal\" is for using custom renderers from solid-js/universal\n *\n * @default \"dom\"\n */\n generate?: 'ssr' | 'dom' | 'universal';\n\n /**\n * Indicate whether the output should contain hydratable markers.\n *\n * @default false\n */\n hydratable?: boolean;\n\n /**\n * Boolean to indicate whether to enable automatic event delegation on camelCase.\n *\n * @default true\n */\n delegateEvents?: boolean;\n\n /**\n * Boolean indicates whether smart conditional detection should be used.\n * This optimizes simple boolean expressions and ternaries in JSX.\n *\n * @default true\n */\n wrapConditionals?: boolean;\n\n /**\n * Boolean indicates whether to set current render context on Custom Elements and slots.\n * Useful for seemless Context API with Web Components.\n *\n * @default true\n */\n contextToCustomElements?: boolean;\n\n /**\n * Array of Component exports from module, that aren't included by default with the library.\n * This plugin will automatically import them if it comes across them in the JSX.\n *\n * @default [\"For\",\"Show\",\"Switch\",\"Match\",\"Suspense\",\"SuspenseList\",\"Portal\",\"Index\",\"Dynamic\",\"ErrorBoundary\"]\n */\n builtIns?: string[];\n };\n}\n\nfunction getExtension(filename: string): string {\n const index = filename.lastIndexOf('.');\n return index < 0 ? '' : filename.substring(index).replace(/\\?.+$/, '');\n}\nfunction containsSolidField(fields) {\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}\nfunction isJestDomInstalled() {\n try {\n // attempt to reference a file that will not throw error because expect is missing\n require('@testing-library/jest-dom/dist/utils');\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexport default function solidPlugin(options: Partial<Options> = {}): Plugin {\n let needHmr = false;\n let replaceDev = false;\n let projectRoot = process.cwd();\n\n return {\n name: 'solid',\n enforce: 'pre',\n\n async config(userConfig, { command }) {\n // We inject the dev mode only if the user explicitely wants it or if we are in dev (serve) mode\n replaceDev = options.dev === true || (options.dev !== false && command === 'serve');\n projectRoot = userConfig.root;\n\n if (!userConfig.resolve) userConfig.resolve = {};\n userConfig.resolve.alias = normalizeAliases(userConfig.resolve && userConfig.resolve.alias);\n\n const solidPkgsConfig = await crawlFrameworkPkgs({\n viteUserConfig: userConfig,\n root: projectRoot || process.cwd(),\n isBuild: command === 'build',\n isFrameworkPkgByJson(pkgJson) {\n return containsSolidField(pkgJson.exports || {});\n },\n });\n\n // fix for bundling dev in production\n const nestedDeps = replaceDev\n ? ['solid-js', 'solid-js/web', 'solid-js/store', 'solid-js/html', 'solid-js/h']\n : [];\n\n const test = userConfig.mode === 'test'\n ? {\n test: {\n globals: true,\n ...(options.ssr ? {} : { environment: 'jsdom' }),\n transformMode : {\n [options.ssr ? 'ssr' : 'web']: [/\\.[jt]sx?$/]\n },\n ...(isJestDomInstalled()\n ? { setupFiles: ['node_modules/@testing-library/jest-dom/extend-expect.js'] }\n : {}\n ),\n deps: { registerNodeLoader: true },\n ...(userConfig as UserConfig & { test: Record<string, any>}).test\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: [\n 'solid',\n ...(replaceDev ? ['development'] : []),\n ...(userConfig.mode === 'test' && !options.ssr ? ['browser'] : [])\n ],\n dedupe: nestedDeps,\n alias: [{ find: /^solid-refresh$/, replacement: runtimePublicPath }],\n },\n optimizeDeps: {\n include: [...nestedDeps, ...solidPkgsConfig.optimizeDeps.include],\n exclude: solidPkgsConfig.optimizeDeps.exclude,\n },\n ssr: solidPkgsConfig.ssr,\n ...test\n };\n },\n\n configResolved(config) {\n needHmr = config.command === 'serve' && config.mode !== 'production' && options.hot !== false;\n },\n\n resolveId(id) {\n if (id === runtimePublicPath) return id;\n },\n\n load(id) {\n if (id === runtimePublicPath) return runtimeCode;\n },\n\n async transform(source, id, transformOptions) {\n const isSsr = transformOptions && transformOptions.ssr;\n const currentFileExtension = getExtension(id);\n\n const extensionsToWatch = [...(options.extensions || []), '.tsx', '.jsx'];\n const allExtensions = extensionsToWatch.map((extension) =>\n // An extension can be a string or a tuple [extension, options]\n typeof extension === 'string' ? extension : extension[0],\n );\n\n if (!allExtensions.includes(currentFileExtension)) {\n return null;\n }\n\n const inNodeModules = /node_modules/.test(id);\n\n let solidOptions: { generate: 'ssr' | 'dom'; hydratable: boolean };\n\n if (options.ssr) {\n if (isSsr) {\n solidOptions = { generate: 'ssr', hydratable: true };\n } else {\n solidOptions = { generate: 'dom', hydratable: true };\n }\n } else {\n solidOptions = { generate: 'dom', hydratable: false };\n }\n\n id = id.replace(/\\?.+$/, '');\n\n const opts: TransformOptions = {\n babelrc: false,\n configFile: false,\n root: projectRoot,\n filename: id,\n sourceFileName: id,\n presets: [[solid, { ...solidOptions, ...(options.solid || {}) }]],\n plugins: needHmr && !isSsr && !inNodeModules ? [[solidRefresh, { bundler: 'vite' }]] : [],\n sourceMaps: true,\n // Vite handles sourcemap flattening\n inputSourceMap: false as any,\n };\n\n // We need to know if the current file extension has a typescript options tied to it\n const shouldBeProcessedWithTypescript = extensionsToWatch.some((extension) => {\n if (typeof extension === 'string') {\n return extension.includes('tsx');\n }\n\n const [extensionName, extensionOptions] = extension;\n if (extensionName !== currentFileExtension) return false;\n\n return extensionOptions.typescript;\n });\n\n if (shouldBeProcessedWithTypescript) {\n opts.presets.push([ts, options.typescript || {}]);\n }\n\n // Default value for babel user options\n let babelUserOptions: TransformOptions = {};\n\n if (options.babel) {\n if (typeof options.babel === 'function') {\n const babelOptions = options.babel(source, id, isSsr);\n babelUserOptions = babelOptions instanceof Promise ? await babelOptions : babelOptions;\n } else {\n babelUserOptions = options.babel;\n }\n }\n\n const babelOptions = mergeAndConcat(babelUserOptions, opts) as TransformOptions;\n\n const { code, map } = await transformAsync(source, babelOptions);\n\n return { code, map };\n },\n };\n}\n\n/**\n * This basically normalize all aliases of the config into\n * the array format of the alias.\n *\n * eg: alias: { '@': 'src/' } => [{ find: '@', replacement: 'src/' }]\n */\nfunction normalizeAliases(alias: AliasOptions = []): Alias[] {\n return Array.isArray(alias)\n ? alias\n : Object.entries(alias).map(([find, replacement]) => ({ find, replacement }));\n}\n"],"names":["require","createRequire","import","meta","url","runtimePublicPath","runtimeFilePath","resolve","runtimeCode","readFileSync","getExtension","filename","index","lastIndexOf","substring","replace","containsSolidField","fields","keys","Object","i","length","key","isJestDomInstalled","e","solidPlugin","options","needHmr","replaceDev","projectRoot","process","cwd","name","enforce","config","userConfig","command","dev","root","alias","normalizeAliases","solidPkgsConfig","crawlFrameworkPkgs","viteUserConfig","isBuild","isFrameworkPkgByJson","pkgJson","exports","nestedDeps","test","mode","globals","ssr","environment","transformMode","setupFiles","deps","registerNodeLoader","esbuild","include","conditions","dedupe","find","replacement","optimizeDeps","exclude","configResolved","hot","resolveId","id","load","transform","source","transformOptions","isSsr","currentFileExtension","extensionsToWatch","extensions","allExtensions","map","extension","includes","inNodeModules","solidOptions","generate","hydratable","opts","babelrc","configFile","sourceFileName","presets","solid","plugins","solidRefresh","bundler","sourceMaps","inputSourceMap","shouldBeProcessedWithTypescript","some","extensionName","extensionOptions","typescript","push","ts","babelUserOptions","babel","babelOptions","Promise","mergeAndConcat","code","transformAsync","Array","isArray","entries"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vite-plugin-solid",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "solid-js integration plugin for vite 3",
|
|
3
|
+
"version": "2.5.0",
|
|
4
|
+
"description": "solid-js integration plugin for vite 3/4",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
7
7
|
"dist"
|
|
@@ -16,12 +16,6 @@
|
|
|
16
16
|
"default": "./dist/cjs/index.cjs",
|
|
17
17
|
"require": "./dist/cjs/index.cjs"
|
|
18
18
|
},
|
|
19
|
-
"scripts": {
|
|
20
|
-
"build": "rollup -c && tsc --emitDeclarationOnly",
|
|
21
|
-
"dev": "rollup -c -w",
|
|
22
|
-
"prepublishOnly": "pnpm build",
|
|
23
|
-
"check": "package-check"
|
|
24
|
-
},
|
|
25
19
|
"repository": {
|
|
26
20
|
"type": "git",
|
|
27
21
|
"url": "git+https://github.com/solidjs/vite-plugin-solid.git"
|
|
@@ -41,31 +35,37 @@
|
|
|
41
35
|
},
|
|
42
36
|
"homepage": "https://github.com/solidjs/vite-plugin-solid#readme",
|
|
43
37
|
"dependencies": {
|
|
44
|
-
"@babel/core": "^7.
|
|
38
|
+
"@babel/core": "^7.20.5",
|
|
45
39
|
"@babel/preset-typescript": "^7.18.6",
|
|
46
|
-
"babel-preset-solid": "^1.
|
|
47
|
-
"merge-anything": "^5.
|
|
48
|
-
"solid-refresh": "^0.4.1"
|
|
40
|
+
"babel-preset-solid": "^1.6.3",
|
|
41
|
+
"merge-anything": "^5.1.4",
|
|
42
|
+
"solid-refresh": "^0.4.1",
|
|
43
|
+
"vitefu": "^0.2.3"
|
|
49
44
|
},
|
|
50
45
|
"devDependencies": {
|
|
51
|
-
"@babel/plugin-transform-typescript": "^7.
|
|
52
|
-
"@babel/preset-env": "^7.
|
|
53
|
-
"@rollup/plugin-babel": "^
|
|
54
|
-
"@rollup/plugin-commonjs": "^
|
|
55
|
-
"@rollup/plugin-node-resolve": "^
|
|
46
|
+
"@babel/plugin-transform-typescript": "^7.20.2",
|
|
47
|
+
"@babel/preset-env": "^7.20.2",
|
|
48
|
+
"@rollup/plugin-babel": "^6.0.3",
|
|
49
|
+
"@rollup/plugin-commonjs": "^23.0.4",
|
|
50
|
+
"@rollup/plugin-node-resolve": "^15.0.1",
|
|
56
51
|
"@skypack/package-check": "^0.2.2",
|
|
57
|
-
"@types/babel__core": "^7.1.
|
|
58
|
-
"@types/node": "^18.
|
|
59
|
-
"prettier": "^2.
|
|
60
|
-
"rollup": "^
|
|
52
|
+
"@types/babel__core": "^7.1.20",
|
|
53
|
+
"@types/node": "^18.11.12",
|
|
54
|
+
"prettier": "^2.8.1",
|
|
55
|
+
"rollup": "^3.7.0",
|
|
61
56
|
"rollup-plugin-cleaner": "^1.0.0",
|
|
62
|
-
"solid-js": "^1.
|
|
63
|
-
"typescript": "^4.
|
|
64
|
-
"vite": "^
|
|
57
|
+
"solid-js": "^1.6.3",
|
|
58
|
+
"typescript": "^4.9.4",
|
|
59
|
+
"vite": "^4.0.0"
|
|
65
60
|
},
|
|
66
61
|
"peerDependencies": {
|
|
67
|
-
"solid-js": "^1.3.17",
|
|
68
|
-
"vite": "^3.0.0"
|
|
62
|
+
"solid-js": "^1.3.17 || ^1.4.0 || ^1.5.0 || ^1.6.0",
|
|
63
|
+
"vite": "^3.0.0 || ^4.0.0"
|
|
69
64
|
},
|
|
70
|
-
"packageManager": "pnpm@
|
|
71
|
-
|
|
65
|
+
"packageManager": "pnpm@7.18.1",
|
|
66
|
+
"scripts": {
|
|
67
|
+
"build": "rollup -c && tsc --emitDeclarationOnly",
|
|
68
|
+
"dev": "rollup -c -w",
|
|
69
|
+
"check": "package-check"
|
|
70
|
+
}
|
|
71
|
+
}
|