@wyw-in-js/esbuild 0.5.5 → 0.7.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/esm/index.mjs +11 -6
- package/esm/index.mjs.map +1 -1
- package/lib/index.js +10 -5
- package/lib/index.js.map +1 -1
- package/package.json +7 -7
- package/types/index.d.ts +2 -1
- package/types/index.js +10 -6
package/esm/index.mjs
CHANGED
|
@@ -5,13 +5,14 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { readFileSync } from 'fs';
|
|
8
|
-
import {
|
|
8
|
+
import { dirname, isAbsolute, join, parse, posix } from 'path';
|
|
9
9
|
import { transformSync } from 'esbuild';
|
|
10
10
|
import { slugify, transform, TransformCacheCollection, createFileReporter } from '@wyw-in-js/transform';
|
|
11
11
|
const nodeModulesRegex = /^(?:.*[\\/])?node_modules(?:[\\/].*)?$/;
|
|
12
12
|
export default function wywInJS({
|
|
13
13
|
debug,
|
|
14
14
|
sourceMap,
|
|
15
|
+
prefixer,
|
|
15
16
|
preprocessor,
|
|
16
17
|
esbuildOptions,
|
|
17
18
|
filter = /\.(js|jsx|ts|tsx)$/,
|
|
@@ -23,6 +24,7 @@ export default function wywInJS({
|
|
|
23
24
|
name: 'wyw-in-js',
|
|
24
25
|
setup(build) {
|
|
25
26
|
const cssLookup = new Map();
|
|
27
|
+
const cssResolveDirs = new Map();
|
|
26
28
|
const {
|
|
27
29
|
emitter,
|
|
28
30
|
onDone
|
|
@@ -56,7 +58,7 @@ export default function wywInJS({
|
|
|
56
58
|
return {
|
|
57
59
|
contents: cssLookup.get(args.path),
|
|
58
60
|
loader: 'css',
|
|
59
|
-
resolveDir:
|
|
61
|
+
resolveDir: cssResolveDirs.get(args.path)
|
|
60
62
|
};
|
|
61
63
|
});
|
|
62
64
|
const filterRegexp = typeof filter === 'string' ? new RegExp(filter) : filter;
|
|
@@ -100,19 +102,21 @@ export default function wywInJS({
|
|
|
100
102
|
const transformServices = {
|
|
101
103
|
options: {
|
|
102
104
|
filename: args.path,
|
|
103
|
-
|
|
105
|
+
pluginOptions: rest,
|
|
106
|
+
prefixer,
|
|
104
107
|
preprocessor,
|
|
105
|
-
|
|
108
|
+
root: process.cwd()
|
|
106
109
|
},
|
|
107
110
|
cache,
|
|
108
111
|
eventEmitter: emitter
|
|
109
112
|
};
|
|
110
113
|
const result = await transform(transformServices, code, asyncResolve);
|
|
114
|
+
const resolveDir = dirname(args.path);
|
|
111
115
|
if (!result.cssText) {
|
|
112
116
|
return {
|
|
113
117
|
contents: code,
|
|
114
118
|
loader,
|
|
115
|
-
resolveDir
|
|
119
|
+
resolveDir
|
|
116
120
|
};
|
|
117
121
|
}
|
|
118
122
|
let {
|
|
@@ -128,10 +132,11 @@ export default function wywInJS({
|
|
|
128
132
|
contents += `/*# sourceMappingURL=data:application/json;base64,${wywMap}*/`;
|
|
129
133
|
}
|
|
130
134
|
cssLookup.set(cssFilename, cssText);
|
|
135
|
+
cssResolveDirs.set(cssFilename, resolveDir);
|
|
131
136
|
return {
|
|
132
137
|
contents,
|
|
133
138
|
loader,
|
|
134
|
-
resolveDir
|
|
139
|
+
resolveDir
|
|
135
140
|
};
|
|
136
141
|
});
|
|
137
142
|
}
|
package/esm/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["readFileSync","basename","dirname","isAbsolute","join","parse","posix","transformSync","slugify","transform","TransformCacheCollection","createFileReporter","nodeModulesRegex","wywInJS","debug","sourceMap","preprocessor","esbuildOptions","filter","rest","options","cache","name","setup","build","cssLookup","Map","emitter","onDone","asyncResolve","token","importer","context","process","cwd","result","resolve","resolveDir","kind","errors","length","Error","path","replace","sep","onEnd","onResolve","args","namespace","onLoad","contents","get","loader","filterRegexp","RegExp","rawCode","ext","filename","test","initialOptions","jsxFactory","jsxFragment","transformed","sourcefile","sourcemap","code","esbuildMap","Buffer","from","map","toString","transformServices","root","pluginOptions","eventEmitter","cssText","slug","cssFilename","JSON","stringify","cssSourceMapText","wywMap","set"],"sources":["../src/index.ts"],"sourcesContent":["/**\n * This file contains an esbuild loader for wyw-in-js.\n * It uses the transform.ts function to generate class names from source code,\n * returns transformed code without template literals and attaches generated source maps\n */\n\nimport { readFileSync } from 'fs';\nimport { basename, dirname, isAbsolute, join, parse, posix } from 'path';\n\nimport type { Plugin, TransformOptions, Loader } from 'esbuild';\nimport { transformSync } from 'esbuild';\n\nimport type {\n PluginOptions,\n Preprocessor,\n IFileReporterOptions,\n} from '@wyw-in-js/transform';\nimport {\n slugify,\n transform,\n TransformCacheCollection,\n createFileReporter,\n} from '@wyw-in-js/transform';\n\ntype EsbuildPluginOptions = {\n debug?: IFileReporterOptions | false | null | undefined;\n esbuildOptions?: TransformOptions;\n filter?: RegExp | string;\n preprocessor?: Preprocessor;\n sourceMap?: boolean;\n} & Partial<PluginOptions>;\n\nconst nodeModulesRegex = /^(?:.*[\\\\/])?node_modules(?:[\\\\/].*)?$/;\n\nexport default function wywInJS({\n debug,\n sourceMap,\n preprocessor,\n esbuildOptions,\n filter = /\\.(js|jsx|ts|tsx)$/,\n ...rest\n}: EsbuildPluginOptions = {}): Plugin {\n let options = esbuildOptions;\n const cache = new TransformCacheCollection();\n return {\n name: 'wyw-in-js',\n setup(build) {\n const cssLookup = new Map<string, string>();\n\n const { emitter, onDone } = createFileReporter(debug ?? false);\n\n const asyncResolve = async (\n token: string,\n importer: string\n ): Promise<string> => {\n const context = isAbsolute(importer)\n ? dirname(importer)\n : join(process.cwd(), dirname(importer));\n\n const result = await build.resolve(token, {\n resolveDir: context,\n kind: 'import-statement',\n });\n\n if (result.errors.length > 0) {\n throw new Error(`Cannot resolve ${token}`);\n }\n\n return result.path.replace(/\\\\/g, posix.sep);\n };\n\n build.onEnd(() => {\n onDone(process.cwd());\n });\n\n build.onResolve({ filter: /\\.wyw\\.css$/ }, (args) => {\n return {\n namespace: 'wyw-in-js',\n path: args.path,\n };\n });\n\n build.onLoad({ filter: /.*/, namespace: 'wyw-in-js' }, (args) => {\n return {\n contents: cssLookup.get(args.path),\n loader: 'css',\n resolveDir: basename(args.path),\n };\n });\n\n const filterRegexp =\n typeof filter === 'string' ? new RegExp(filter) : filter;\n\n build.onLoad({ filter: filterRegexp }, async (args) => {\n const rawCode = readFileSync(args.path, 'utf8');\n const { ext, name: filename } = parse(args.path);\n const loader = ext.replace(/^\\./, '') as Loader;\n\n if (nodeModulesRegex.test(args.path)) {\n return {\n loader,\n contents: rawCode,\n };\n }\n\n if (!options) {\n options = {};\n if ('jsxFactory' in build.initialOptions) {\n options.jsxFactory = build.initialOptions.jsxFactory;\n }\n if ('jsxFragment' in build.initialOptions) {\n options.jsxFragment = build.initialOptions.jsxFragment;\n }\n }\n\n const transformed = transformSync(rawCode, {\n ...options,\n sourcefile: args.path,\n sourcemap: sourceMap,\n loader,\n });\n let { code } = transformed;\n\n if (sourceMap) {\n const esbuildMap = Buffer.from(transformed.map).toString('base64');\n code += `/*# sourceMappingURL=data:application/json;base64,${esbuildMap}*/`;\n }\n\n const transformServices = {\n options: {\n filename: args.path,\n root: process.cwd(),\n preprocessor,\n pluginOptions: rest,\n },\n cache,\n eventEmitter: emitter,\n };\n\n const result = await transform(transformServices, code, asyncResolve);\n\n if (!result.cssText) {\n return {\n contents: code,\n loader,\n resolveDir: dirname(args.path),\n };\n }\n\n let { cssText } = result;\n\n const slug = slugify(cssText);\n const cssFilename = `${filename}_${slug}.wyw.css`;\n\n let contents = `import ${JSON.stringify(cssFilename)}; ${result.code}`;\n\n if (sourceMap && result.cssSourceMapText) {\n const map = Buffer.from(result.cssSourceMapText).toString('base64');\n cssText += `/*# sourceMappingURL=data:application/json;base64,${map}*/`;\n const wywMap = Buffer.from(JSON.stringify(result.sourceMap)).toString(\n 'base64'\n );\n contents += `/*# sourceMappingURL=data:application/json;base64,${wywMap}*/`;\n }\n\n cssLookup.set(cssFilename, cssText);\n\n return {\n contents,\n loader,\n resolveDir: dirname(args.path),\n };\n });\n },\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["readFileSync","dirname","isAbsolute","join","parse","posix","transformSync","slugify","transform","TransformCacheCollection","createFileReporter","nodeModulesRegex","wywInJS","debug","sourceMap","prefixer","preprocessor","esbuildOptions","filter","rest","options","cache","name","setup","build","cssLookup","Map","cssResolveDirs","emitter","onDone","asyncResolve","token","importer","context","process","cwd","result","resolve","resolveDir","kind","errors","length","Error","path","replace","sep","onEnd","onResolve","args","namespace","onLoad","contents","get","loader","filterRegexp","RegExp","rawCode","ext","filename","test","initialOptions","jsxFactory","jsxFragment","transformed","sourcefile","sourcemap","code","esbuildMap","Buffer","from","map","toString","transformServices","pluginOptions","root","eventEmitter","cssText","slug","cssFilename","JSON","stringify","cssSourceMapText","wywMap","set"],"sources":["../src/index.ts"],"sourcesContent":["/**\n * This file contains an esbuild loader for wyw-in-js.\n * It uses the transform.ts function to generate class names from source code,\n * returns transformed code without template literals and attaches generated source maps\n */\n\nimport { readFileSync } from 'fs';\nimport { dirname, isAbsolute, join, parse, posix } from 'path';\n\nimport type { Plugin, TransformOptions, Loader } from 'esbuild';\nimport { transformSync } from 'esbuild';\n\nimport type {\n PluginOptions,\n Preprocessor,\n IFileReporterOptions,\n} from '@wyw-in-js/transform';\nimport {\n slugify,\n transform,\n TransformCacheCollection,\n createFileReporter,\n} from '@wyw-in-js/transform';\n\ntype EsbuildPluginOptions = {\n debug?: IFileReporterOptions | false | null | undefined;\n esbuildOptions?: TransformOptions;\n filter?: RegExp | string;\n prefixer?: boolean;\n preprocessor?: Preprocessor;\n sourceMap?: boolean;\n} & Partial<PluginOptions>;\n\nconst nodeModulesRegex = /^(?:.*[\\\\/])?node_modules(?:[\\\\/].*)?$/;\n\nexport default function wywInJS({\n debug,\n sourceMap,\n prefixer,\n preprocessor,\n esbuildOptions,\n filter = /\\.(js|jsx|ts|tsx)$/,\n ...rest\n}: EsbuildPluginOptions = {}): Plugin {\n let options = esbuildOptions;\n const cache = new TransformCacheCollection();\n return {\n name: 'wyw-in-js',\n setup(build) {\n const cssLookup = new Map<string, string>();\n const cssResolveDirs = new Map<string, string>();\n\n const { emitter, onDone } = createFileReporter(debug ?? false);\n\n const asyncResolve = async (\n token: string,\n importer: string\n ): Promise<string> => {\n const context = isAbsolute(importer)\n ? dirname(importer)\n : join(process.cwd(), dirname(importer));\n\n const result = await build.resolve(token, {\n resolveDir: context,\n kind: 'import-statement',\n });\n\n if (result.errors.length > 0) {\n throw new Error(`Cannot resolve ${token}`);\n }\n\n return result.path.replace(/\\\\/g, posix.sep);\n };\n\n build.onEnd(() => {\n onDone(process.cwd());\n });\n\n build.onResolve({ filter: /\\.wyw\\.css$/ }, (args) => {\n return {\n namespace: 'wyw-in-js',\n path: args.path,\n };\n });\n\n build.onLoad({ filter: /.*/, namespace: 'wyw-in-js' }, (args) => {\n return {\n contents: cssLookup.get(args.path),\n loader: 'css',\n resolveDir: cssResolveDirs.get(args.path),\n };\n });\n\n const filterRegexp =\n typeof filter === 'string' ? new RegExp(filter) : filter;\n\n build.onLoad({ filter: filterRegexp }, async (args) => {\n const rawCode = readFileSync(args.path, 'utf8');\n const { ext, name: filename } = parse(args.path);\n const loader = ext.replace(/^\\./, '') as Loader;\n\n if (nodeModulesRegex.test(args.path)) {\n return {\n loader,\n contents: rawCode,\n };\n }\n\n if (!options) {\n options = {};\n if ('jsxFactory' in build.initialOptions) {\n options.jsxFactory = build.initialOptions.jsxFactory;\n }\n if ('jsxFragment' in build.initialOptions) {\n options.jsxFragment = build.initialOptions.jsxFragment;\n }\n }\n\n const transformed = transformSync(rawCode, {\n ...options,\n sourcefile: args.path,\n sourcemap: sourceMap,\n loader,\n });\n let { code } = transformed;\n\n if (sourceMap) {\n const esbuildMap = Buffer.from(transformed.map).toString('base64');\n code += `/*# sourceMappingURL=data:application/json;base64,${esbuildMap}*/`;\n }\n\n const transformServices = {\n options: {\n filename: args.path,\n pluginOptions: rest,\n prefixer,\n preprocessor,\n root: process.cwd(),\n },\n cache,\n eventEmitter: emitter,\n };\n\n const result = await transform(transformServices, code, asyncResolve);\n const resolveDir = dirname(args.path);\n\n if (!result.cssText) {\n return {\n contents: code,\n loader,\n resolveDir,\n };\n }\n\n let { cssText } = result;\n\n const slug = slugify(cssText);\n const cssFilename = `${filename}_${slug}.wyw.css`;\n\n let contents = `import ${JSON.stringify(cssFilename)}; ${result.code}`;\n\n if (sourceMap && result.cssSourceMapText) {\n const map = Buffer.from(result.cssSourceMapText).toString('base64');\n cssText += `/*# sourceMappingURL=data:application/json;base64,${map}*/`;\n const wywMap = Buffer.from(JSON.stringify(result.sourceMap)).toString(\n 'base64'\n );\n contents += `/*# sourceMappingURL=data:application/json;base64,${wywMap}*/`;\n }\n\n cssLookup.set(cssFilename, cssText);\n cssResolveDirs.set(cssFilename, resolveDir);\n\n return {\n contents,\n loader,\n resolveDir,\n };\n });\n },\n };\n}\n"],"mappings":"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"}
|
package/lib/index.js
CHANGED
|
@@ -18,6 +18,7 @@ const nodeModulesRegex = /^(?:.*[\\/])?node_modules(?:[\\/].*)?$/;
|
|
|
18
18
|
function wywInJS({
|
|
19
19
|
debug,
|
|
20
20
|
sourceMap,
|
|
21
|
+
prefixer,
|
|
21
22
|
preprocessor,
|
|
22
23
|
esbuildOptions,
|
|
23
24
|
filter = /\.(js|jsx|ts|tsx)$/,
|
|
@@ -29,6 +30,7 @@ function wywInJS({
|
|
|
29
30
|
name: 'wyw-in-js',
|
|
30
31
|
setup(build) {
|
|
31
32
|
const cssLookup = new Map();
|
|
33
|
+
const cssResolveDirs = new Map();
|
|
32
34
|
const {
|
|
33
35
|
emitter,
|
|
34
36
|
onDone
|
|
@@ -62,7 +64,7 @@ function wywInJS({
|
|
|
62
64
|
return {
|
|
63
65
|
contents: cssLookup.get(args.path),
|
|
64
66
|
loader: 'css',
|
|
65
|
-
resolveDir:
|
|
67
|
+
resolveDir: cssResolveDirs.get(args.path)
|
|
66
68
|
};
|
|
67
69
|
});
|
|
68
70
|
const filterRegexp = typeof filter === 'string' ? new RegExp(filter) : filter;
|
|
@@ -106,19 +108,21 @@ function wywInJS({
|
|
|
106
108
|
const transformServices = {
|
|
107
109
|
options: {
|
|
108
110
|
filename: args.path,
|
|
109
|
-
|
|
111
|
+
pluginOptions: rest,
|
|
112
|
+
prefixer,
|
|
110
113
|
preprocessor,
|
|
111
|
-
|
|
114
|
+
root: process.cwd()
|
|
112
115
|
},
|
|
113
116
|
cache,
|
|
114
117
|
eventEmitter: emitter
|
|
115
118
|
};
|
|
116
119
|
const result = await (0, _transform.transform)(transformServices, code, asyncResolve);
|
|
120
|
+
const resolveDir = (0, _path.dirname)(args.path);
|
|
117
121
|
if (!result.cssText) {
|
|
118
122
|
return {
|
|
119
123
|
contents: code,
|
|
120
124
|
loader,
|
|
121
|
-
resolveDir
|
|
125
|
+
resolveDir
|
|
122
126
|
};
|
|
123
127
|
}
|
|
124
128
|
let {
|
|
@@ -134,10 +138,11 @@ function wywInJS({
|
|
|
134
138
|
contents += `/*# sourceMappingURL=data:application/json;base64,${wywMap}*/`;
|
|
135
139
|
}
|
|
136
140
|
cssLookup.set(cssFilename, cssText);
|
|
141
|
+
cssResolveDirs.set(cssFilename, resolveDir);
|
|
137
142
|
return {
|
|
138
143
|
contents,
|
|
139
144
|
loader,
|
|
140
|
-
resolveDir
|
|
145
|
+
resolveDir
|
|
141
146
|
};
|
|
142
147
|
});
|
|
143
148
|
}
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_fs","require","_path","_esbuild","_transform","nodeModulesRegex","wywInJS","debug","sourceMap","preprocessor","esbuildOptions","filter","rest","options","cache","TransformCacheCollection","name","setup","build","cssLookup","Map","emitter","onDone","createFileReporter","asyncResolve","token","importer","context","isAbsolute","dirname","join","process","cwd","result","resolve","resolveDir","kind","errors","length","Error","path","replace","posix","sep","onEnd","onResolve","args","namespace","onLoad","contents","get","loader","basename","filterRegexp","RegExp","rawCode","readFileSync","ext","filename","parse","test","initialOptions","jsxFactory","jsxFragment","transformed","transformSync","sourcefile","sourcemap","code","esbuildMap","Buffer","from","map","toString","transformServices","root","pluginOptions","eventEmitter","transform","cssText","slug","slugify","cssFilename","JSON","stringify","cssSourceMapText","wywMap","set"],"sources":["../src/index.ts"],"sourcesContent":["/**\n * This file contains an esbuild loader for wyw-in-js.\n * It uses the transform.ts function to generate class names from source code,\n * returns transformed code without template literals and attaches generated source maps\n */\n\nimport { readFileSync } from 'fs';\nimport { basename, dirname, isAbsolute, join, parse, posix } from 'path';\n\nimport type { Plugin, TransformOptions, Loader } from 'esbuild';\nimport { transformSync } from 'esbuild';\n\nimport type {\n PluginOptions,\n Preprocessor,\n IFileReporterOptions,\n} from '@wyw-in-js/transform';\nimport {\n slugify,\n transform,\n TransformCacheCollection,\n createFileReporter,\n} from '@wyw-in-js/transform';\n\ntype EsbuildPluginOptions = {\n debug?: IFileReporterOptions | false | null | undefined;\n esbuildOptions?: TransformOptions;\n filter?: RegExp | string;\n preprocessor?: Preprocessor;\n sourceMap?: boolean;\n} & Partial<PluginOptions>;\n\nconst nodeModulesRegex = /^(?:.*[\\\\/])?node_modules(?:[\\\\/].*)?$/;\n\nexport default function wywInJS({\n debug,\n sourceMap,\n preprocessor,\n esbuildOptions,\n filter = /\\.(js|jsx|ts|tsx)$/,\n ...rest\n}: EsbuildPluginOptions = {}): Plugin {\n let options = esbuildOptions;\n const cache = new TransformCacheCollection();\n return {\n name: 'wyw-in-js',\n setup(build) {\n const cssLookup = new Map<string, string>();\n\n const { emitter, onDone } = createFileReporter(debug ?? false);\n\n const asyncResolve = async (\n token: string,\n importer: string\n ): Promise<string> => {\n const context = isAbsolute(importer)\n ? dirname(importer)\n : join(process.cwd(), dirname(importer));\n\n const result = await build.resolve(token, {\n resolveDir: context,\n kind: 'import-statement',\n });\n\n if (result.errors.length > 0) {\n throw new Error(`Cannot resolve ${token}`);\n }\n\n return result.path.replace(/\\\\/g, posix.sep);\n };\n\n build.onEnd(() => {\n onDone(process.cwd());\n });\n\n build.onResolve({ filter: /\\.wyw\\.css$/ }, (args) => {\n return {\n namespace: 'wyw-in-js',\n path: args.path,\n };\n });\n\n build.onLoad({ filter: /.*/, namespace: 'wyw-in-js' }, (args) => {\n return {\n contents: cssLookup.get(args.path),\n loader: 'css',\n resolveDir: basename(args.path),\n };\n });\n\n const filterRegexp =\n typeof filter === 'string' ? new RegExp(filter) : filter;\n\n build.onLoad({ filter: filterRegexp }, async (args) => {\n const rawCode = readFileSync(args.path, 'utf8');\n const { ext, name: filename } = parse(args.path);\n const loader = ext.replace(/^\\./, '') as Loader;\n\n if (nodeModulesRegex.test(args.path)) {\n return {\n loader,\n contents: rawCode,\n };\n }\n\n if (!options) {\n options = {};\n if ('jsxFactory' in build.initialOptions) {\n options.jsxFactory = build.initialOptions.jsxFactory;\n }\n if ('jsxFragment' in build.initialOptions) {\n options.jsxFragment = build.initialOptions.jsxFragment;\n }\n }\n\n const transformed = transformSync(rawCode, {\n ...options,\n sourcefile: args.path,\n sourcemap: sourceMap,\n loader,\n });\n let { code } = transformed;\n\n if (sourceMap) {\n const esbuildMap = Buffer.from(transformed.map).toString('base64');\n code += `/*# sourceMappingURL=data:application/json;base64,${esbuildMap}*/`;\n }\n\n const transformServices = {\n options: {\n filename: args.path,\n root: process.cwd(),\n preprocessor,\n pluginOptions: rest,\n },\n cache,\n eventEmitter: emitter,\n };\n\n const result = await transform(transformServices, code, asyncResolve);\n\n if (!result.cssText) {\n return {\n contents: code,\n loader,\n resolveDir: dirname(args.path),\n };\n }\n\n let { cssText } = result;\n\n const slug = slugify(cssText);\n const cssFilename = `${filename}_${slug}.wyw.css`;\n\n let contents = `import ${JSON.stringify(cssFilename)}; ${result.code}`;\n\n if (sourceMap && result.cssSourceMapText) {\n const map = Buffer.from(result.cssSourceMapText).toString('base64');\n cssText += `/*# sourceMappingURL=data:application/json;base64,${map}*/`;\n const wywMap = Buffer.from(JSON.stringify(result.sourceMap)).toString(\n 'base64'\n );\n contents += `/*# sourceMappingURL=data:application/json;base64,${wywMap}*/`;\n }\n\n cssLookup.set(cssFilename, cssText);\n\n return {\n contents,\n loader,\n resolveDir: dirname(args.path),\n };\n });\n },\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["_fs","require","_path","_esbuild","_transform","nodeModulesRegex","wywInJS","debug","sourceMap","prefixer","preprocessor","esbuildOptions","filter","rest","options","cache","TransformCacheCollection","name","setup","build","cssLookup","Map","cssResolveDirs","emitter","onDone","createFileReporter","asyncResolve","token","importer","context","isAbsolute","dirname","join","process","cwd","result","resolve","resolveDir","kind","errors","length","Error","path","replace","posix","sep","onEnd","onResolve","args","namespace","onLoad","contents","get","loader","filterRegexp","RegExp","rawCode","readFileSync","ext","filename","parse","test","initialOptions","jsxFactory","jsxFragment","transformed","transformSync","sourcefile","sourcemap","code","esbuildMap","Buffer","from","map","toString","transformServices","pluginOptions","root","eventEmitter","transform","cssText","slug","slugify","cssFilename","JSON","stringify","cssSourceMapText","wywMap","set"],"sources":["../src/index.ts"],"sourcesContent":["/**\n * This file contains an esbuild loader for wyw-in-js.\n * It uses the transform.ts function to generate class names from source code,\n * returns transformed code without template literals and attaches generated source maps\n */\n\nimport { readFileSync } from 'fs';\nimport { dirname, isAbsolute, join, parse, posix } from 'path';\n\nimport type { Plugin, TransformOptions, Loader } from 'esbuild';\nimport { transformSync } from 'esbuild';\n\nimport type {\n PluginOptions,\n Preprocessor,\n IFileReporterOptions,\n} from '@wyw-in-js/transform';\nimport {\n slugify,\n transform,\n TransformCacheCollection,\n createFileReporter,\n} from '@wyw-in-js/transform';\n\ntype EsbuildPluginOptions = {\n debug?: IFileReporterOptions | false | null | undefined;\n esbuildOptions?: TransformOptions;\n filter?: RegExp | string;\n prefixer?: boolean;\n preprocessor?: Preprocessor;\n sourceMap?: boolean;\n} & Partial<PluginOptions>;\n\nconst nodeModulesRegex = /^(?:.*[\\\\/])?node_modules(?:[\\\\/].*)?$/;\n\nexport default function wywInJS({\n debug,\n sourceMap,\n prefixer,\n preprocessor,\n esbuildOptions,\n filter = /\\.(js|jsx|ts|tsx)$/,\n ...rest\n}: EsbuildPluginOptions = {}): Plugin {\n let options = esbuildOptions;\n const cache = new TransformCacheCollection();\n return {\n name: 'wyw-in-js',\n setup(build) {\n const cssLookup = new Map<string, string>();\n const cssResolveDirs = new Map<string, string>();\n\n const { emitter, onDone } = createFileReporter(debug ?? false);\n\n const asyncResolve = async (\n token: string,\n importer: string\n ): Promise<string> => {\n const context = isAbsolute(importer)\n ? dirname(importer)\n : join(process.cwd(), dirname(importer));\n\n const result = await build.resolve(token, {\n resolveDir: context,\n kind: 'import-statement',\n });\n\n if (result.errors.length > 0) {\n throw new Error(`Cannot resolve ${token}`);\n }\n\n return result.path.replace(/\\\\/g, posix.sep);\n };\n\n build.onEnd(() => {\n onDone(process.cwd());\n });\n\n build.onResolve({ filter: /\\.wyw\\.css$/ }, (args) => {\n return {\n namespace: 'wyw-in-js',\n path: args.path,\n };\n });\n\n build.onLoad({ filter: /.*/, namespace: 'wyw-in-js' }, (args) => {\n return {\n contents: cssLookup.get(args.path),\n loader: 'css',\n resolveDir: cssResolveDirs.get(args.path),\n };\n });\n\n const filterRegexp =\n typeof filter === 'string' ? new RegExp(filter) : filter;\n\n build.onLoad({ filter: filterRegexp }, async (args) => {\n const rawCode = readFileSync(args.path, 'utf8');\n const { ext, name: filename } = parse(args.path);\n const loader = ext.replace(/^\\./, '') as Loader;\n\n if (nodeModulesRegex.test(args.path)) {\n return {\n loader,\n contents: rawCode,\n };\n }\n\n if (!options) {\n options = {};\n if ('jsxFactory' in build.initialOptions) {\n options.jsxFactory = build.initialOptions.jsxFactory;\n }\n if ('jsxFragment' in build.initialOptions) {\n options.jsxFragment = build.initialOptions.jsxFragment;\n }\n }\n\n const transformed = transformSync(rawCode, {\n ...options,\n sourcefile: args.path,\n sourcemap: sourceMap,\n loader,\n });\n let { code } = transformed;\n\n if (sourceMap) {\n const esbuildMap = Buffer.from(transformed.map).toString('base64');\n code += `/*# sourceMappingURL=data:application/json;base64,${esbuildMap}*/`;\n }\n\n const transformServices = {\n options: {\n filename: args.path,\n pluginOptions: rest,\n prefixer,\n preprocessor,\n root: process.cwd(),\n },\n cache,\n eventEmitter: emitter,\n };\n\n const result = await transform(transformServices, code, asyncResolve);\n const resolveDir = dirname(args.path);\n\n if (!result.cssText) {\n return {\n contents: code,\n loader,\n resolveDir,\n };\n }\n\n let { cssText } = result;\n\n const slug = slugify(cssText);\n const cssFilename = `${filename}_${slug}.wyw.css`;\n\n let contents = `import ${JSON.stringify(cssFilename)}; ${result.code}`;\n\n if (sourceMap && result.cssSourceMapText) {\n const map = Buffer.from(result.cssSourceMapText).toString('base64');\n cssText += `/*# sourceMappingURL=data:application/json;base64,${map}*/`;\n const wywMap = Buffer.from(JSON.stringify(result.sourceMap)).toString(\n 'base64'\n );\n contents += `/*# sourceMappingURL=data:application/json;base64,${wywMap}*/`;\n }\n\n cssLookup.set(cssFilename, cssText);\n cssResolveDirs.set(cssFilename, resolveDir);\n\n return {\n contents,\n loader,\n resolveDir,\n };\n });\n },\n };\n}\n"],"mappings":";;;;;;AAMA,IAAAA,GAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAGA,IAAAE,QAAA,GAAAF,OAAA;AAOA,IAAAG,UAAA,GAAAH,OAAA;AAjBA;AACA;AACA;AACA;AACA;;AA6BA,MAAMI,gBAAgB,GAAG,wCAAwC;AAElD,SAASC,OAAOA,CAAC;EAC9BC,KAAK;EACLC,SAAS;EACTC,QAAQ;EACRC,YAAY;EACZC,cAAc;EACdC,MAAM,GAAG,oBAAoB;EAC7B,GAAGC;AACiB,CAAC,GAAG,CAAC,CAAC,EAAU;EACpC,IAAIC,OAAO,GAAGH,cAAc;EAC5B,MAAMI,KAAK,GAAG,IAAIC,mCAAwB,CAAC,CAAC;EAC5C,OAAO;IACLC,IAAI,EAAE,WAAW;IACjBC,KAAKA,CAACC,KAAK,EAAE;MACX,MAAMC,SAAS,GAAG,IAAIC,GAAG,CAAiB,CAAC;MAC3C,MAAMC,cAAc,GAAG,IAAID,GAAG,CAAiB,CAAC;MAEhD,MAAM;QAAEE,OAAO;QAAEC;MAAO,CAAC,GAAG,IAAAC,6BAAkB,EAAClB,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,KAAK,CAAC;MAE9D,MAAMmB,YAAY,GAAG,MAAAA,CACnBC,KAAa,EACbC,QAAgB,KACI;QACpB,MAAMC,OAAO,GAAG,IAAAC,gBAAU,EAACF,QAAQ,CAAC,GAChC,IAAAG,aAAO,EAACH,QAAQ,CAAC,GACjB,IAAAI,UAAI,EAACC,OAAO,CAACC,GAAG,CAAC,CAAC,EAAE,IAAAH,aAAO,EAACH,QAAQ,CAAC,CAAC;QAE1C,MAAMO,MAAM,GAAG,MAAMhB,KAAK,CAACiB,OAAO,CAACT,KAAK,EAAE;UACxCU,UAAU,EAAER,OAAO;UACnBS,IAAI,EAAE;QACR,CAAC,CAAC;QAEF,IAAIH,MAAM,CAACI,MAAM,CAACC,MAAM,GAAG,CAAC,EAAE;UAC5B,MAAM,IAAIC,KAAK,CAAE,kBAAiBd,KAAM,EAAC,CAAC;QAC5C;QAEA,OAAOQ,MAAM,CAACO,IAAI,CAACC,OAAO,CAAC,KAAK,EAAEC,WAAK,CAACC,GAAG,CAAC;MAC9C,CAAC;MAED1B,KAAK,CAAC2B,KAAK,CAAC,MAAM;QAChBtB,MAAM,CAACS,OAAO,CAACC,GAAG,CAAC,CAAC,CAAC;MACvB,CAAC,CAAC;MAEFf,KAAK,CAAC4B,SAAS,CAAC;QAAEnC,MAAM,EAAE;MAAc,CAAC,EAAGoC,IAAI,IAAK;QACnD,OAAO;UACLC,SAAS,EAAE,WAAW;UACtBP,IAAI,EAAEM,IAAI,CAACN;QACb,CAAC;MACH,CAAC,CAAC;MAEFvB,KAAK,CAAC+B,MAAM,CAAC;QAAEtC,MAAM,EAAE,IAAI;QAAEqC,SAAS,EAAE;MAAY,CAAC,EAAGD,IAAI,IAAK;QAC/D,OAAO;UACLG,QAAQ,EAAE/B,SAAS,CAACgC,GAAG,CAACJ,IAAI,CAACN,IAAI,CAAC;UAClCW,MAAM,EAAE,KAAK;UACbhB,UAAU,EAAEf,cAAc,CAAC8B,GAAG,CAACJ,IAAI,CAACN,IAAI;QAC1C,CAAC;MACH,CAAC,CAAC;MAEF,MAAMY,YAAY,GAChB,OAAO1C,MAAM,KAAK,QAAQ,GAAG,IAAI2C,MAAM,CAAC3C,MAAM,CAAC,GAAGA,MAAM;MAE1DO,KAAK,CAAC+B,MAAM,CAAC;QAAEtC,MAAM,EAAE0C;MAAa,CAAC,EAAE,MAAON,IAAI,IAAK;QACrD,MAAMQ,OAAO,GAAG,IAAAC,gBAAY,EAACT,IAAI,CAACN,IAAI,EAAE,MAAM,CAAC;QAC/C,MAAM;UAAEgB,GAAG;UAAEzC,IAAI,EAAE0C;QAAS,CAAC,GAAG,IAAAC,WAAK,EAACZ,IAAI,CAACN,IAAI,CAAC;QAChD,MAAMW,MAAM,GAAGK,GAAG,CAACf,OAAO,CAAC,KAAK,EAAE,EAAE,CAAW;QAE/C,IAAItC,gBAAgB,CAACwD,IAAI,CAACb,IAAI,CAACN,IAAI,CAAC,EAAE;UACpC,OAAO;YACLW,MAAM;YACNF,QAAQ,EAAEK;UACZ,CAAC;QACH;QAEA,IAAI,CAAC1C,OAAO,EAAE;UACZA,OAAO,GAAG,CAAC,CAAC;UACZ,IAAI,YAAY,IAAIK,KAAK,CAAC2C,cAAc,EAAE;YACxChD,OAAO,CAACiD,UAAU,GAAG5C,KAAK,CAAC2C,cAAc,CAACC,UAAU;UACtD;UACA,IAAI,aAAa,IAAI5C,KAAK,CAAC2C,cAAc,EAAE;YACzChD,OAAO,CAACkD,WAAW,GAAG7C,KAAK,CAAC2C,cAAc,CAACE,WAAW;UACxD;QACF;QAEA,MAAMC,WAAW,GAAG,IAAAC,sBAAa,EAACV,OAAO,EAAE;UACzC,GAAG1C,OAAO;UACVqD,UAAU,EAAEnB,IAAI,CAACN,IAAI;UACrB0B,SAAS,EAAE5D,SAAS;UACpB6C;QACF,CAAC,CAAC;QACF,IAAI;UAAEgB;QAAK,CAAC,GAAGJ,WAAW;QAE1B,IAAIzD,SAAS,EAAE;UACb,MAAM8D,UAAU,GAAGC,MAAM,CAACC,IAAI,CAACP,WAAW,CAACQ,GAAG,CAAC,CAACC,QAAQ,CAAC,QAAQ,CAAC;UAClEL,IAAI,IAAK,qDAAoDC,UAAW,IAAG;QAC7E;QAEA,MAAMK,iBAAiB,GAAG;UACxB7D,OAAO,EAAE;YACP6C,QAAQ,EAAEX,IAAI,CAACN,IAAI;YACnBkC,aAAa,EAAE/D,IAAI;YACnBJ,QAAQ;YACRC,YAAY;YACZmE,IAAI,EAAE5C,OAAO,CAACC,GAAG,CAAC;UACpB,CAAC;UACDnB,KAAK;UACL+D,YAAY,EAAEvD;QAChB,CAAC;QAED,MAAMY,MAAM,GAAG,MAAM,IAAA4C,oBAAS,EAACJ,iBAAiB,EAAEN,IAAI,EAAE3C,YAAY,CAAC;QACrE,MAAMW,UAAU,GAAG,IAAAN,aAAO,EAACiB,IAAI,CAACN,IAAI,CAAC;QAErC,IAAI,CAACP,MAAM,CAAC6C,OAAO,EAAE;UACnB,OAAO;YACL7B,QAAQ,EAAEkB,IAAI;YACdhB,MAAM;YACNhB;UACF,CAAC;QACH;QAEA,IAAI;UAAE2C;QAAQ,CAAC,GAAG7C,MAAM;QAExB,MAAM8C,IAAI,GAAG,IAAAC,kBAAO,EAACF,OAAO,CAAC;QAC7B,MAAMG,WAAW,GAAI,GAAExB,QAAS,IAAGsB,IAAK,UAAS;QAEjD,IAAI9B,QAAQ,GAAI,UAASiC,IAAI,CAACC,SAAS,CAACF,WAAW,CAAE,KAAIhD,MAAM,CAACkC,IAAK,EAAC;QAEtE,IAAI7D,SAAS,IAAI2B,MAAM,CAACmD,gBAAgB,EAAE;UACxC,MAAMb,GAAG,GAAGF,MAAM,CAACC,IAAI,CAACrC,MAAM,CAACmD,gBAAgB,CAAC,CAACZ,QAAQ,CAAC,QAAQ,CAAC;UACnEM,OAAO,IAAK,qDAAoDP,GAAI,IAAG;UACvE,MAAMc,MAAM,GAAGhB,MAAM,CAACC,IAAI,CAACY,IAAI,CAACC,SAAS,CAAClD,MAAM,CAAC3B,SAAS,CAAC,CAAC,CAACkE,QAAQ,CACnE,QACF,CAAC;UACDvB,QAAQ,IAAK,qDAAoDoC,MAAO,IAAG;QAC7E;QAEAnE,SAAS,CAACoE,GAAG,CAACL,WAAW,EAAEH,OAAO,CAAC;QACnC1D,cAAc,CAACkE,GAAG,CAACL,WAAW,EAAE9C,UAAU,CAAC;QAE3C,OAAO;UACLc,QAAQ;UACRE,MAAM;UACNhB;QACF,CAAC;MACH,CAAC,CAAC;IACJ;EACF,CAAC;AACH"}
|
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wyw-in-js/esbuild",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"dependencies": {
|
|
5
|
-
"@wyw-in-js/shared": "0.
|
|
6
|
-
"@wyw-in-js/transform": "0.
|
|
5
|
+
"@wyw-in-js/shared": "0.7.0",
|
|
6
|
+
"@wyw-in-js/transform": "0.7.0"
|
|
7
7
|
},
|
|
8
8
|
"devDependencies": {
|
|
9
9
|
"@types/node": "^16.18.55",
|
|
10
10
|
"esbuild": "^0.15.16",
|
|
11
|
-
"@wyw-in-js/babel-config": "0.
|
|
12
|
-
"@wyw-in-js/eslint-config": "0.
|
|
13
|
-
"@wyw-in-js/jest-preset": "0.
|
|
14
|
-
"@wyw-in-js/ts-config": "0.
|
|
11
|
+
"@wyw-in-js/babel-config": "0.7.0",
|
|
12
|
+
"@wyw-in-js/eslint-config": "0.7.0",
|
|
13
|
+
"@wyw-in-js/jest-preset": "0.7.0",
|
|
14
|
+
"@wyw-in-js/ts-config": "0.7.0"
|
|
15
15
|
},
|
|
16
16
|
"engines": {
|
|
17
17
|
"node": ">=16.0.0"
|
package/types/index.d.ts
CHANGED
|
@@ -9,8 +9,9 @@ type EsbuildPluginOptions = {
|
|
|
9
9
|
debug?: IFileReporterOptions | false | null | undefined;
|
|
10
10
|
esbuildOptions?: TransformOptions;
|
|
11
11
|
filter?: RegExp | string;
|
|
12
|
+
prefixer?: boolean;
|
|
12
13
|
preprocessor?: Preprocessor;
|
|
13
14
|
sourceMap?: boolean;
|
|
14
15
|
} & Partial<PluginOptions>;
|
|
15
|
-
export default function wywInJS({ debug, sourceMap, preprocessor, esbuildOptions, filter, ...rest }?: EsbuildPluginOptions): Plugin;
|
|
16
|
+
export default function wywInJS({ debug, sourceMap, prefixer, preprocessor, esbuildOptions, filter, ...rest }?: EsbuildPluginOptions): Plugin;
|
|
16
17
|
export {};
|
package/types/index.js
CHANGED
|
@@ -10,13 +10,14 @@ const path_1 = require("path");
|
|
|
10
10
|
const esbuild_1 = require("esbuild");
|
|
11
11
|
const transform_1 = require("@wyw-in-js/transform");
|
|
12
12
|
const nodeModulesRegex = /^(?:.*[\\/])?node_modules(?:[\\/].*)?$/;
|
|
13
|
-
function wywInJS({ debug, sourceMap, preprocessor, esbuildOptions, filter = /\.(js|jsx|ts|tsx)$/, ...rest } = {}) {
|
|
13
|
+
function wywInJS({ debug, sourceMap, prefixer, preprocessor, esbuildOptions, filter = /\.(js|jsx|ts|tsx)$/, ...rest } = {}) {
|
|
14
14
|
let options = esbuildOptions;
|
|
15
15
|
const cache = new transform_1.TransformCacheCollection();
|
|
16
16
|
return {
|
|
17
17
|
name: 'wyw-in-js',
|
|
18
18
|
setup(build) {
|
|
19
19
|
const cssLookup = new Map();
|
|
20
|
+
const cssResolveDirs = new Map();
|
|
20
21
|
const { emitter, onDone } = (0, transform_1.createFileReporter)(debug ?? false);
|
|
21
22
|
const asyncResolve = async (token, importer) => {
|
|
22
23
|
const context = (0, path_1.isAbsolute)(importer)
|
|
@@ -44,7 +45,7 @@ function wywInJS({ debug, sourceMap, preprocessor, esbuildOptions, filter = /\.(
|
|
|
44
45
|
return {
|
|
45
46
|
contents: cssLookup.get(args.path),
|
|
46
47
|
loader: 'css',
|
|
47
|
-
resolveDir:
|
|
48
|
+
resolveDir: cssResolveDirs.get(args.path),
|
|
48
49
|
};
|
|
49
50
|
});
|
|
50
51
|
const filterRegexp = typeof filter === 'string' ? new RegExp(filter) : filter;
|
|
@@ -81,19 +82,21 @@ function wywInJS({ debug, sourceMap, preprocessor, esbuildOptions, filter = /\.(
|
|
|
81
82
|
const transformServices = {
|
|
82
83
|
options: {
|
|
83
84
|
filename: args.path,
|
|
84
|
-
root: process.cwd(),
|
|
85
|
-
preprocessor,
|
|
86
85
|
pluginOptions: rest,
|
|
86
|
+
prefixer,
|
|
87
|
+
preprocessor,
|
|
88
|
+
root: process.cwd(),
|
|
87
89
|
},
|
|
88
90
|
cache,
|
|
89
91
|
eventEmitter: emitter,
|
|
90
92
|
};
|
|
91
93
|
const result = await (0, transform_1.transform)(transformServices, code, asyncResolve);
|
|
94
|
+
const resolveDir = (0, path_1.dirname)(args.path);
|
|
92
95
|
if (!result.cssText) {
|
|
93
96
|
return {
|
|
94
97
|
contents: code,
|
|
95
98
|
loader,
|
|
96
|
-
resolveDir
|
|
99
|
+
resolveDir,
|
|
97
100
|
};
|
|
98
101
|
}
|
|
99
102
|
let { cssText } = result;
|
|
@@ -107,10 +110,11 @@ function wywInJS({ debug, sourceMap, preprocessor, esbuildOptions, filter = /\.(
|
|
|
107
110
|
contents += `/*# sourceMappingURL=data:application/json;base64,${wywMap}*/`;
|
|
108
111
|
}
|
|
109
112
|
cssLookup.set(cssFilename, cssText);
|
|
113
|
+
cssResolveDirs.set(cssFilename, resolveDir);
|
|
110
114
|
return {
|
|
111
115
|
contents,
|
|
112
116
|
loader,
|
|
113
|
-
resolveDir
|
|
117
|
+
resolveDir,
|
|
114
118
|
};
|
|
115
119
|
});
|
|
116
120
|
},
|