@empjs/cli 3.0.0-rc.0 → 3.0.0-rc.2
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/index.js +16 -2476
- package/dist/store/rspack/hook.d.ts +4 -2
- package/dist/types/config.d.ts +1 -0
- package/package.json +8 -10
- package/dist/index.js.map +0 -7
|
@@ -4,16 +4,18 @@ import { type Compiler } from '@rspack/core';
|
|
|
4
4
|
export declare const HtmlImportMapPluginName = "HtmlImportMapPlugin";
|
|
5
5
|
export declare class HtmlImportMapPlugin {
|
|
6
6
|
importMap: EMPShareLib['importMap'];
|
|
7
|
-
|
|
7
|
+
chunk: string;
|
|
8
|
+
constructor(importMap: EMPShareLib['importMap'], chunk: string);
|
|
8
9
|
apply(compiler: any): void;
|
|
9
10
|
}
|
|
10
11
|
export declare const HtmlEmpShareLibPluginName = "HtmlEmpShareLibPlugin";
|
|
11
12
|
export declare class HtmlEmpShareLibPlugin {
|
|
13
|
+
chunk: string;
|
|
12
14
|
files: {
|
|
13
15
|
css: string[];
|
|
14
16
|
js: string[];
|
|
15
17
|
};
|
|
16
|
-
constructor(files: HtmlType['files']);
|
|
18
|
+
constructor(files: HtmlType['files'], chunk: string);
|
|
17
19
|
apply(compiler: any): void;
|
|
18
20
|
}
|
|
19
21
|
export declare class EmpPolyfillPlugin {
|
package/dist/types/config.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@empjs/cli",
|
|
3
|
-
"version": "3.0.0-rc.
|
|
3
|
+
"version": "3.0.0-rc.2",
|
|
4
4
|
"description": "emp",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -75,17 +75,17 @@
|
|
|
75
75
|
"@types/webpack-bundle-analyzer": "^4.6.2",
|
|
76
76
|
"@types/webpack-hot-middleware": "^2.25.9",
|
|
77
77
|
"@types/webpack-sources": "^3.2.2",
|
|
78
|
+
"@types/node": "^20.8.7",
|
|
78
79
|
"cross-env": "^7.0.3",
|
|
79
80
|
"esbuild": "^0.19.5",
|
|
80
81
|
"rimraf": "^5.0.5",
|
|
81
82
|
"tsc-alias": "^1.8.8"
|
|
82
83
|
},
|
|
83
84
|
"dependencies": {
|
|
84
|
-
"@module-federation/enhanced": "^0.1.
|
|
85
|
+
"@module-federation/enhanced": "^0.1.6",
|
|
85
86
|
"@rspack/core": "0.6.1",
|
|
86
87
|
"@rspack/dev-server": "0.6.1",
|
|
87
|
-
"@swc/helpers": "^0.5.
|
|
88
|
-
"@types/node": "^20.8.7",
|
|
88
|
+
"@swc/helpers": "^0.5.9",
|
|
89
89
|
"address": "^2.0.1",
|
|
90
90
|
"ansi-html-community": "^0.0.8",
|
|
91
91
|
"chalk": "^5.3.0",
|
|
@@ -100,14 +100,12 @@
|
|
|
100
100
|
"gzip-size": "^7.0.0",
|
|
101
101
|
"html-entities": "^2.5.2",
|
|
102
102
|
"html-webpack-plugin": "^5.6.0",
|
|
103
|
-
"less-loader": "^
|
|
103
|
+
"less-loader": "^12.2.0",
|
|
104
104
|
"open": "^10.1.0",
|
|
105
|
-
"
|
|
106
|
-
"postcss-loader": "^7.3.4",
|
|
107
|
-
"sass-loader": "^13.3.2",
|
|
105
|
+
"sass-loader": "^14.2.0",
|
|
108
106
|
"strip-ansi": "^7.1.0",
|
|
109
|
-
"typescript-plugin-css-modules": "^5.0
|
|
110
|
-
"webpack-bundle-analyzer": "^4.
|
|
107
|
+
"typescript-plugin-css-modules": "^5.1.0",
|
|
108
|
+
"webpack-bundle-analyzer": "^4.10.2",
|
|
111
109
|
"webpack-chain": "^6.5.1"
|
|
112
110
|
}
|
|
113
111
|
}
|
package/dist/index.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/helper/nodePolyfill.ts", "../src/store/rspack/plugin.ts", "../src/helper/utils.ts", "../src/store/rspack/module.ts", "../src/store/rspack/common.ts", "../src/store/rspack/hook.ts", "../src/store/rspack/entries.ts", "../src/store/rspack/css.ts", "../src/store/rspack/index.ts", "../src/helper/logger.ts", "../src/store/empShareLib.ts", "../src/helper/ipAddress.ts", "../src/store/cycle/autoDevBase.ts", "../src/store/lifeCycle.ts", "../src/store/empConfig.ts", "../src/store/index.ts", "../src/helper/openBrowser.ts", "../src/helper/getPort.ts", "../src/script/base.ts", "../src/helper/buildPrint.ts", "../src/script/dev.ts", "../src/script/build.ts", "../src/script/httpBase.ts", "../src/script/serve.ts", "../src/index.ts", "../src/script/index.ts", "../src/script/dts.ts"],
|
|
4
|
-
"sourcesContent": ["import {fileURLToPath} from 'node:url'\nimport {dirname} from 'node:path'\nimport {readFile} from 'node:fs/promises'\nimport Module from 'node:module'\nimport path from 'node:path'\n\nexport const __filename = fileURLToPath(import.meta.url)\nexport const __dirname = dirname(__filename)\n// \u8BFB\u53D6 json\nexport const getFileJson = async (url: string) => {\n try {\n const str: any = await readFile(url)\n const json = JSON.parse(str)\n return json\n } catch (e) {\n console.error(e)\n }\n}\n\n//require\nexport const require = Module.createRequire(import.meta.url)\nexport const importResolve = (scope: string, importMetaUrl?: string) => {\n let rq = require\n if (importMetaUrl) {\n rq = Module.createRequire(importMetaUrl)\n }\n return rq.resolve(scope)\n}\n\nexport const empRoot = path.resolve(__dirname, __filename).replace(`${path.sep}dist${path.sep}index.js`, '')\n", "import type {GlobalStore} from 'src/store'\nimport rspack from '@rspack/core'\nimport fs from 'fs'\nimport {ModuleFederationPlugin} from '@module-federation/enhanced/rspack'\nclass RspackPlugin {\n public store!: GlobalStore\n async setup(store: GlobalStore) {\n this.store = store\n const runFuns = [\n this.define(),\n this.anylayze(),\n this.progress(),\n this.copy(),\n this.empShare(),\n // this.html()\n ///////////////////////\n // this.minJs(),\n // this.minCss(),\n this.minify(),\n ]\n //\n await this.store.empConfig.lifeCycle.beforePlugin()\n await Promise.all(runFuns)\n await this.store.empConfig.lifeCycle.afterPlugin()\n }\n async anylayze() {\n // console.log('this.store.cliOptions.analyze', this.store.cliOptions)\n if (!this.store.cliOptions.analyze) return\n const {\n default: {BundleAnalyzerPlugin},\n } = await import('webpack-bundle-analyzer')\n this.store.chain.plugin('bundleAnalyzerPlugin').use(BundleAnalyzerPlugin, [{}])\n }\n // async html() {\n // const htmlPlugin: any = await import('@rspack/plugin-html')\n // //TODO \u4FEE\u6B63 \u4E24\u4E2A default\n // const HtmlRspackPlugin = htmlPlugin.default.default\n // const op = this.store.empConfig.html\n // this.store.chain.plugin('htmlPlugin').use(HtmlRspackPlugin, [op])\n // }\n async define() {\n this.store.chain.plugin('definePlugin').use(rspack.DefinePlugin, [this.store.empConfig.define])\n }\n async copy() {\n const publicFrom = this.store.resolve('public')\n //\u7A7A\u6587\u4EF6\u5939\u4E0D\u6267\u884C\u590D\u5236\n if (fs.existsSync(publicFrom) && fs.readdirSync(publicFrom).length > 0)\n this.store.chain.plugin('copyRspackPlugin').use(rspack.CopyRspackPlugin, [\n {\n patterns: [\n {\n from: publicFrom,\n to: this.store.resolve('dist'),\n },\n ],\n },\n ])\n }\n async progress() {\n if (!this.store.empConfig.debug.progress) return\n this.store.chain.plugin('progressPlugin').use(rspack.ProgressPlugin, [\n {\n prefix: 'EMP',\n },\n ])\n }\n async empShare() {\n const {isEmpshare} = this.store.empConfig.empShareLib\n if (!isEmpshare) return\n\n // const {ModuleFederationPluginV1, ModuleFederationPlugin} = rspack.container\n // const mfp = version === 1 ? ModuleFederationPluginV1 : ModuleFederationPlugin\n const mfp = ModuleFederationPlugin\n this.store.chain.plugin('empShare').use(mfp, [this.store.empConfig.empShareLib.pluginConfig])\n // empShare Polyfill\n // this.store.chain.plugin('empSharePolyfill').use(EmpSharePolyfillPlugin)\n }\n // production plugin\n minify() {\n this.store.chain.optimization.minimize(this.store.mode === 'production')\n // min js\n this.store.chain.optimization\n .minimizer('minJs')\n .use(rspack.SwcJsMinimizerRspackPlugin, [this.store.empConfig.build.minOptions])\n // min css\n this.store.chain.optimization.minimizer('minCss').use(rspack.SwcCssMinimizerRspackPlugin, [{}])\n }\n /* minJs() {\n if (this.store.mode !== 'production') return\n this.store.chain.plugin('minJs').use(rspack.SwcJsMinimizerRspackPlugin, [this.store.empConfig.build.minOptions])\n }\n minCss() {\n if (this.store.mode !== 'production') return\n this.store.chain.plugin('minCss').use(rspack.SwcCssMinimizerRspackPlugin, [{}])\n } */\n}\n\nexport default new RspackPlugin()\n", "import chalk from 'chalk'\nimport fs from 'fs-extra'\nimport {ip} from 'address'\nimport {gateway4sync} from 'default-gateway'\nexport const getLanIp = () => {\n const {int} = gateway4sync()\n return ip(int || '') || '127.0.0.1'\n}\n//\nexport const getPkgVersion = (pkgPath: string) => {\n try {\n const {version} = fs.readJSONSync(pkgPath)\n return version\n } catch (err) {\n return undefined\n }\n}\nexport function clearConsole() {\n process.stdout.write(process.platform === 'win32' ? '\\x1B[2J\\x1B[0f' : '\\x1B[2J\\x1B[3J\\x1B[H')\n}\n\nexport function deepAssign<T>(target: any, ...sources: any): T {\n for (const source of sources) {\n for (const k in source) {\n const vs = source[k],\n vt = target[k]\n if (Object(vs) == vs && Object(vt) === vt) {\n target[k] = deepAssign(vt, vs)\n continue\n }\n target[k] = source[k]\n }\n }\n return target\n}\n\nexport const ensureArray = <T>(params: T | T[]): T[] => {\n if (Array.isArray(params)) {\n return params\n }\n return [params]\n}\n/**\n * json Filter\n * @param d\n * @param keys\n * @returns\n */\nexport const jsonFilter = (d: any = {}, notIncludeKeys: string[] = []) =>\n Object.keys(d)\n .filter(key => !notIncludeKeys.includes(key))\n .reduce((o: any, key: string) => {\n o[key] = d[key]\n return o\n }, {})\n\nexport const vCompare = (preVersion = '', lastVersion = ''): number => {\n const sources = preVersion.replace('^', '').split('.')\n const dests = lastVersion.replace('^', '').split('.')\n const maxL = Math.max(sources.length, dests.length)\n let result = 0\n for (let i = 0; i < maxL; i++) {\n const preValue: any = sources.length > i ? sources[i] : 0\n const preNum = isNaN(Number(preValue)) ? preValue.charCodeAt() : Number(preValue)\n const lastValue: any = dests.length > i ? dests[i] : 0\n const lastNum = isNaN(Number(lastValue)) ? lastValue.charCodeAt() : Number(lastValue)\n if (preNum < lastNum) {\n result = -1\n break\n } else if (preNum > lastNum) {\n result = 1\n break\n }\n }\n return result\n}\n\nexport const timeFormat = (seconds: number) => {\n seconds = seconds / 1000\n const format = (time: string) => chalk.bold(time)\n if (seconds < 1) {\n return `${seconds * 1000} ms`\n }\n if (seconds < 10) {\n const digits = seconds >= 0.01 ? 2 : 3\n return `${format(seconds.toFixed(digits))} s`\n }\n\n if (seconds < 60) {\n return `${format(seconds.toFixed(1))} s`\n }\n\n const minutes = seconds / 60\n return `${format(minutes.toFixed(2))} m`\n}\n\nexport const importJsVm = (content: string) => `data:text/javascript,${content}`\n", "import type {GlobalStore} from 'src/store'\n//\nimport path from 'node:path'\nimport {require} from 'src/helper/nodePolyfill'\nimport {getPkgVersion} from 'src/helper/utils'\n//\nclass RspackModule {\n public store!: GlobalStore\n private swcJsOptions = {}\n private swcTsOptions = {}\n private coreJs = {\n version: '3',\n alias: '',\n path: '',\n }\n async setup(store: GlobalStore) {\n this.store = store\n const runFuns = [this.files(), this.scripts(), this.rspackGenerator(), this.rspackParser()]\n //\n await Promise.all(runFuns)\n }\n private rspackGenerator() {\n const localIdentName = this.store.isDev ? '[path][name]-[local]-[hash:5]' : '[local]-[hash:5]'\n this.store.chain.merge({\n module: {\n generator: {\n css: {localIdentName},\n 'css/auto': {localIdentName},\n 'css/module': {localIdentName},\n },\n },\n })\n }\n private rspackParser() {\n const namedExports = false\n this.store.chain.merge({\n module: {\n parser: {\n css: {namedExports},\n 'css/auto': {namedExports},\n 'css/module': {namedExports},\n },\n },\n })\n }\n private get isPolyfill() {\n // return this.store.empConfig.build.polyfill && ['es3', 'es5'].includes(this.store.empConfig.build.target)\n return this.store.empConfig.build.polyfill\n }\n private swcParser(lang: string) {\n switch (lang) {\n case 'js':\n return {\n syntax: 'ecmascript',\n jsx: true,\n decorators: true,\n decoratorsBeforeExport: false,\n }\n case 'ts':\n return {\n syntax: 'typescript',\n decorators: true,\n tsx: true,\n dynamicImport: true,\n }\n }\n }\n private swcJsc(lang: string) {\n const {target, externalHelpers} = this.store.empConfig.build\n return {\n parser: this.swcParser(lang),\n transform: {},\n target,\n externalHelpers,\n // Requires v1.2.50 or upper and requires target to be es2016 or upper.\n // keepClassNames: true,\n // https://github.com/swc-project/swc/issues/6403 Avoid the webpack magic comment to be removed\n preserveAllComments: true,\n }\n }\n private get swcCoreVersion() {\n const [major, minor] = this.coreJs.version.split('.')\n return `${major}.${minor}`\n }\n private swcOptions(lang: string) {\n const op: any = {\n jsc: this.swcJsc(lang),\n /**\n * externalHelpers *\n * mode usage *\n */\n // Source Type\n isModule: 'unknown',\n }\n if (this.isPolyfill) {\n delete op.jsc.target\n //\n op.env = {\n coreJs: this.swcCoreVersion,\n // modules: false,\n // loose: true,\n // debug: true,\n targets: this.store.empConfig.build.browserslist,\n }\n /**\n * ESM Mode \u6CA1\u6709 entry\n */\n if (!this.store.empConfig.isESM) {\n op.env.mode = this.store.empConfig.build.polyfill\n }\n if (this.store.empConfig.build.polyfill === 'usage') {\n /**\n * enable esnext polyfill\n * https://github.com/swc-project/swc/blob/b43e38d3f92bc889e263b741dbe173a6f2206d88/crates/swc_ecma_preset_env/src/corejs3/usage.rs#L75\n */\n op.env.shippedProposals = true\n /**\n * TODO \u4E34\u65F6\u652F\u6301 Module Federation\n */\n op.env.include = ['es.object.values', 'es.array.flat']\n }\n }\n // console.log(op)\n return op\n }\n swcInitOptions() {\n const {externalHelpers} = this.store.empConfig.build\n if (externalHelpers) {\n this.store.chain.resolve.alias.set('@swc/helpers', path.dirname(require.resolve('@swc/helpers/package.json')))\n }\n //\n this.coreJs.path = require.resolve('core-js/package.json')\n const version = getPkgVersion(this.coreJs.path)\n if (version) this.coreJs.version = version\n this.coreJs.alias = path.dirname(this.coreJs.path)\n if (this.store.empConfig.build.polyfill) {\n this.store.chain.resolve.alias.set('core-js', this.coreJs.alias)\n // if (this.store.empConfig.build.polyfill === 'usage') {\n this.store.chain.module.rule('javascript').exclude.add(/core-js/)\n this.store.chain.module.rule('typescript').exclude.add(/core-js/)\n // }\n }\n //\n this.swcTsOptions = this.swcOptions('ts')\n this.swcJsOptions = this.swcOptions('js')\n //\n }\n async scripts() {\n this.swcInitOptions()\n const sideEffects = false\n // const exclude = this.store.empConfig.moduleTransformRule\n // const exclude: any = [{and: [/(node_modules|bower_components)/], not: [/@module-federation/]}]\n const exclude: any = []\n this.store.chain.merge({\n module: {\n parser: {\n javascript: {\n exportsPresence: 'error',\n importExportsPresence: 'error',\n },\n },\n rule: {\n mjs: {\n test: /\\.m?js/,\n resolve: {\n fullySpecified: false,\n },\n },\n typescript: {\n test: /\\.(ts|tsx)$/,\n exclude,\n sideEffects, // \u6807\u8BB0\u6A21\u5757\u662F\u5426\u5B58\u5728\u526F\u4F5C\u7528\u3002\n use: {\n swc: {\n loader: 'builtin:swc-loader',\n options: this.swcTsOptions,\n },\n },\n },\n javascript: {\n test: /\\.(js|jsx)$/,\n exclude,\n sideEffects, // \u6807\u8BB0\u6A21\u5757\u662F\u5426\u5B58\u5728\u526F\u4F5C\u7528\u3002\n use: {\n swc: {\n loader: 'builtin:swc-loader',\n options: this.swcJsOptions,\n },\n },\n },\n },\n },\n })\n }\n\n async files() {\n this.store.chain.merge({\n module: {\n rule: {\n svg: {\n test: /\\.svg$/,\n type: 'asset/resource',\n },\n },\n },\n })\n\n // asset/inline\n this.store.chain.merge({\n module: {\n rule: {\n inline: {\n resourceQuery: /inline/,\n type: 'asset/inline',\n },\n },\n },\n })\n // asset/resource\n // test: /\\.(png|jpe?g|gif|webp|ico|otf|ttf|eot|woff|woff2|svga)$/i,\n this.store.chain.merge({\n module: {\n rule: {\n image: {\n test: /\\.(png|jpe?g|gif|webp|ico)$/i,\n type: 'asset/resource',\n },\n fonts: {\n test: /\\.(|otf|ttf|eot|woff|woff2)$/i,\n type: 'asset/resource',\n },\n svga: {\n test: /\\.(svga)$/i,\n type: 'asset/resource',\n },\n },\n },\n })\n }\n}\nexport default new RspackModule()\n", "import type {GlobalStore} from 'src/store'\n\nclass RspackCommon {\n public store!: GlobalStore\n async setup(store: GlobalStore) {\n this.store = store\n const runFuns = [\n this.common(),\n this.stats(),\n this.devServer(),\n // this.assets(),\n this.optimization(),\n ]\n //\n await Promise.all(runFuns)\n }\n async common() {\n this.store.merge({\n node: {\n global: true,\n },\n experiments: {\n rspackFuture: {\n // disableTransformByDefault: false, // \u5F00\u542F\u9ED8\u8BA4\u8F6C\u6362\n // \u79FB\u9664 experiments.rspackFuture.disableApplyEntryLazily\n // disableApplyEntryLazily: true,\n // rspack 0.6 \u9ED8\u8BA4\u5F00\u542F\u65B0\u7248 tree shaking\n // newTreeshaking: this.store.empConfig.isESM, // \u8BE5\u529F\u80FD\u542F\u7528\u4E86\u4E0E webpack \u76F8\u540C\u7684\u65B0\u6447\u6811\u4F18\u5316\u5B9E\u73B0\uFF0C\u53EF\u4EE5\u751F\u6210\u66F4\u9AD8\u6548\u548C\u66F4\u5C0F\u7684\u4EE3\u7801\u3002\n },\n outputModule: this.store.empConfig.isESM, //\u5C06\u5C3D\u53EF\u80FD\u8F93\u51FA\u7B26\u5408 ECMAScript \u8BED\u6CD5\u7684\u4EE3\u7801\n topLevelAwait: true,\n },\n target: this.store.empConfig.target, // default [web,es5]\n infrastructureLogging: this.store.empConfig.debug.infrastructureLogging,\n context: this.store.root,\n mode: this.store.mode,\n cache: this.store.empConfig.debug.rspackCache,\n devtool: this.store.empConfig.build.sourcemap ? 'source-map' : false, //Recommended\n builtins: {\n /**\n'builtins.devFriendlySplitChunks = true' has been deprecated, please switch to 'builtins.devFriendlySplitChunks = false' to use webpack's behavior.\n Set env `RSPACK_DEP_WARNINGS` to 'false' to temporarily disable deprecation warnings.\n */\n // devFriendlySplitChunks: true,\n // css: {\n // modules: {\n // // exportsOnly: false,\n // localIdentName: this.store.isDev ? '[path][name]-[local]-[hash:5]' : '[local]-[hash:5]',\n // },\n // },\n },\n output: this.store.empConfig.output,\n resolve: this.store.empConfig.resolve,\n externals: this.store.empConfig.externals,\n })\n }\n async stats() {\n this.store.merge({\n stats: {\n colors: true,\n all: false,\n assets: false,\n chunks: false,\n timings: true,\n version: true,\n },\n })\n }\n async devServer() {\n this.store.merge({\n devServer: this.store.empConfig.server,\n })\n }\n /* async assets() {\n this.store.chain.merge({\n module: {\n rule: {\n assets: {\n test: /\\.(png|jpe?g|gif|webp|ico|otf|ttf|eot|woff|woff2|svga)$/i,\n type: 'asset/resource',\n },\n },\n },\n })\n } */\n async optimization() {\n const optimization = {\n // moduleIds: 'named',\n // chunkIds: 'named',\n moduleIds: this.store.empConfig.build.moduleIds,\n chunkIds: this.store.empConfig.build.chunkIds,\n minimize: this.store.empConfig.build.minify,\n splitChunks: {\n chunks: 'async',\n // chunks: 'all',\n cacheGroups: {\n // defaultVendors: {\n // filename: 'vendors-[name].js',\n // },\n },\n },\n }\n if (this.store.empConfig.build.polyfill) {\n optimization.splitChunks.cacheGroups = {\n // empShare: {\n // test: /[\\\\/]node_modules[\\\\/](@module-federation)[\\\\/]/,\n // name: 'empShare',\n // chunks: 'all',\n // },\n // coreJs: {\n // test: /[\\\\/]node_modules[\\\\/](core-js)[\\\\/]/,\n // name: 'coreJs',\n // chunks: 'all',\n // enforce: true,\n // },\n }\n }\n this.store.chain.merge({\n optimization,\n })\n }\n}\nexport default new RspackCommon()\n", "import {HtmlType} from 'src/types/config'\nimport {EMPShareLib} from '../empShareLib'\nimport HtmlWebpackPlugin from 'html-webpack-plugin'\nimport {deepAssign, importJsVm} from 'src/helper/utils'\nimport {type Compiler} from '@rspack/core'\nimport store from 'src/store'\n//\nexport const HtmlImportMapPluginName = 'HtmlImportMapPlugin'\nexport class HtmlImportMapPlugin {\n importMap: EMPShareLib['importMap']\n constructor(importMap: EMPShareLib['importMap']) {\n this.importMap = importMap\n }\n apply(compiler: any) {\n compiler.hooks.compilation.tap(HtmlImportMapPluginName, (compilation: any) => {\n HtmlWebpackPlugin.getHooks(compilation).alterAssetTagGroups.tapAsync(HtmlImportMapPluginName, (data, cb) => {\n data.headTags.push({\n tagName: 'script',\n attributes: {type: 'importmap'},\n innerHTML: `${JSON.stringify(this.importMap, null, 2)}`,\n voidTag: false,\n meta: {\n plugin: undefined,\n },\n })\n cb(null, data)\n })\n })\n }\n}\nexport const HtmlEmpShareLibPluginName = 'HtmlEmpShareLibPlugin'\nexport class HtmlEmpShareLibPlugin {\n files: {\n css: string[]\n js: string[]\n }\n constructor(files: HtmlType['files']) {\n this.files = deepAssign({js: [], css: []}, files)\n }\n apply(compiler: any) {\n compiler.hooks.compilation.tap(HtmlEmpShareLibPluginName, (compilation: any) => {\n const files = this.files\n HtmlWebpackPlugin.getHooks(compilation).alterAssetTagGroups.tapAsync(HtmlEmpShareLibPluginName, (data, cb) => {\n // js\n files.js.map((js: any) => {\n data.headTags.push({\n tagName: 'script',\n attributes: {src: js},\n voidTag: false,\n meta: {\n plugin: undefined,\n },\n })\n })\n // css\n files.css.map((css: any) => {\n data.headTags.push({\n tagName: 'link',\n attributes: {rel: 'stylesheet', href: css},\n voidTag: false,\n meta: {\n plugin: undefined,\n },\n })\n })\n cb(null, data)\n })\n })\n }\n}\nconst getPolyfillEntry = () => {\n const content = [`import 'core-js/${store.empConfig.build.coreJsFeatures}'`].join('\\n')\n return importJsVm(content)\n}\nexport class EmpPolyfillPlugin {\n constructor() {}\n\n apply(compiler: Compiler) {\n const {webpack} = compiler\n new webpack.EntryPlugin(compiler.context, getPolyfillEntry(), {\n name: undefined,\n }).apply(compiler)\n }\n}\n", "import type {GlobalStore} from 'src/store'\nimport HtmlWebpackPlugin from 'html-webpack-plugin'\nimport glob from 'fast-glob'\nimport path from 'node:path'\nimport {EmpConfig} from '../empConfig'\nimport {RspackOptions} from '@rspack/core'\nimport {deepAssign} from 'src/helper/utils'\nimport {HtmlEmpShareLibPlugin, HtmlImportMapPlugin} from './hook'\n\ntype EntriesConfigType = {\n [chunk: string]: {\n html: EmpConfig['html']\n entry: RspackOptions['entry']\n }\n}\n\nclass RspackEntries {\n public store!: GlobalStore\n public entriesConfig: EntriesConfigType = {}\n async setup(store: GlobalStore) {\n this.store = store\n //\n await this.init()\n this.toConfig()\n // console.log('[entriesConfig]', JSON.stringify(this.entriesConfig, null, 2))\n }\n private setHtmlConfig(c: EmpConfig['html'], chunks: string[]) {\n c.template = this.setTemplate(c.template)\n c.favicon = this.setFavicion(c.favicon)\n c.chunks = chunks\n c.filename = `${chunks[0]}.html`\n if (this.store.empConfig.base) c.publicPath = this.store.empConfig.base\n // \u589E\u52A0 shareLib\u652F\u6301\n // if (this.store.empConfig.empShareLib) {\n // c.files = deepAssign(c.files, this.store.empConfig.empShareLib.externalAssets)\n // }\n // c.inject = 'body'\n c.tags = c.tags || {}\n // importMap\n\n return c\n }\n private setChunk(filename: string) {\n return filename.replace(path.extname(filename), '').replace(`${this.store.empConfig.appSrc}${path.sep}`, '')\n }\n private setTemplate(template?: string) {\n return template ? this.store.resolve(template) : this.store.empResolve(path.join('template', 'index.html'))\n }\n private setFavicion(favicon?: string) {\n return favicon ? this.store.resolve(favicon) : this.store.empResolve(path.join('template', 'favicon.ico'))\n }\n private setEntryItem(filename: string, op: EmpConfig['html'], absPath?: string) {\n absPath = absPath ? absPath : this.store.resolve(path.join(this.store.empConfig.appSrc, filename))\n const chunkName = this.setChunk(filename)\n const chunks = [absPath]\n // const {polyfill} = this.store.empConfig.build\n // if (polyfill === 'entry') {\n // // chunks.unshift('core-js')\n // chunks.unshift(importJsVm('import \"core-js\";'))\n // }\n this.entriesConfig[chunkName] = {\n entry: {[chunkName]: chunks},\n html: this.setHtmlConfig(op, [chunkName]),\n }\n }\n setRspackHtmlPlugin(config: EmpConfig['html'], chunk: string) {\n // const htmlPlugin: any = HtmlRspackPlugin\n //html plugin run\n this.store.chain.plugin(`html-plugin-${chunk}`).use(HtmlWebpackPlugin, [config])\n if (this.store.empConfig.empShareLib)\n config.files = deepAssign(config.files, this.store.empConfig.empShareLib.externalAssets)\n //html inject js css\n this.store.chain.plugin(`html-plugin-empShare-${chunk}`).use(HtmlEmpShareLibPlugin, [config.files])\n //html inject importMap\n if (this.store.empConfig.empShareLib.useImportMap) {\n this.store.chain\n .plugin(`html-plugin-import-map-${chunk}`)\n .use(HtmlImportMapPlugin, [this.store.empConfig.empShareLib.importMap])\n }\n //\n }\n setRspackEntry(entry: RspackOptions['entry']) {\n this.store.merge({entry})\n }\n async init() {\n //.replace(/\\\\/g,'/')\u662F\u4E3A\u4E86\u89E3\u51B3window\u4E0Bglob\u5339\u914D\u4E0D\u5230\u8DEF\u5F84\u95EE\u9898\n const appEntry = path\n .join(this.store.appSrc, this.store.empConfig.appEntry ? this.store.empConfig.appEntry : `index.{ts,tsx,jsx,js}`)\n .replace(/\\\\/g, '/')\n const elist = await glob([appEntry])\n // console.log('elist', elist)\n if (elist[0]) {\n const filename = path.join(\n this.store.empConfig.appSrc,\n Object.keys(this.store.empConfig.entries).length > 0 && this.store.empConfig.appEntry\n ? this.store.empConfig.appEntry\n : 'index',\n )\n this.setEntryItem(filename, this.store.empConfig.html, elist[0])\n }\n if (Object.keys(this.store.empConfig.entries).length > 0) {\n for (const [filename, op] of Object.entries(this.store.empConfig.entries)) {\n this.setEntryItem(filename, {...this.store.empConfig.html, ...op})\n }\n }\n }\n toConfig() {\n for (const [chunk, op] of Object.entries(this.entriesConfig)) {\n this.setRspackHtmlPlugin(op.html, chunk)\n this.setRspackEntry(op.entry)\n }\n }\n}\n\nexport default new RspackEntries()\n", "import type {GlobalStore} from 'src/store'\nclass RspackCss {\n public store!: GlobalStore\n async setup(store: GlobalStore) {\n this.store = store\n const runFuns = [this.sass(), this.less(), this.css()]\n //\n await Promise.all(runFuns)\n }\n\n async sass() {\n const sassLoader = {\n loader: this.store.importResolve('sass-loader'),\n options: {},\n }\n this.store.chain.merge({\n module: {\n rule: {\n sass: {\n test: /\\.(sass|scss)$/,\n use: {\n // postcss: this.postcss,\n sassLoader,\n },\n type: 'css/auto',\n },\n },\n },\n })\n }\n async less() {\n const lessLoader = {\n loader: this.store.importResolve('less-loader'),\n options: {\n lessOptions: {\n javascriptEnabled: true,\n },\n },\n }\n this.store.chain.merge({\n module: {\n rule: {\n less: {\n test: /\\.less$/,\n use: {\n // postcss: this.postcss,\n lessLoader,\n },\n type: 'css/auto',\n },\n },\n },\n })\n }\n async css() {\n this.store.chain.merge({\n module: {\n rule: {\n css: {\n test: /\\.css$/,\n use: {\n // postcss: this.postcss,\n },\n type: 'css/auto',\n },\n },\n },\n })\n }\n // get postcss() {\n // return {\n // loader: this.store.importResolve('postcss-loader'),\n // options: {\n // postcssOptions: {\n // plugins: this.store.empConfig.css.postcss,\n // },\n // },\n // }\n // }\n}\nexport default new RspackCss()\n", "import type {GlobalStore} from 'src/store'\nimport rspackPlugin from 'src/store/rspack/plugin'\nimport rspackModule from 'src/store/rspack/module'\nimport rspackCommon from 'src/store/rspack/common'\nimport rspackEntries from 'src/store/rspack/entries'\nimport rspackCss from 'src/store/rspack/css'\nexport class RspackStore {\n public store!: GlobalStore\n async setup(store: GlobalStore) {\n this.store = store\n // \u521D\u59CB\u5316\u6240\u6709\u914D\u7F6E\n const runFuns = [\n rspackCommon.setup(this.store),\n rspackModule.setup(this.store),\n rspackPlugin.setup(this.store),\n rspackEntries.setup(this.store),\n rspackCss.setup(this.store),\n ]\n await Promise.all(runFuns)\n // \u6267\u884C [emp-config] \u91CC\u9762\u7684 plugins \u51FD\u6570\n await this.store.empConfig.plugins()\n // \u6267\u884C [emp-config] \u91CC\u9762\u7684 chain \u51FD\u6570\n await this.store.empConfig.chain()\n }\n}\nexport default new RspackStore()\n", "import chalk from 'chalk'\nexport type LoggerType = 'debug' | 'info' | 'warn' | 'error'\nclass Logger {\n public pname = ''\n public logLevel = 'debug'\n setup({pname, logLevel}: any) {\n //` EMP v${store.empPkg.version} `\n this.pname = pname\n if (logLevel) this.logLevel = logLevel\n }\n debug = (...args: any[]) => ['debug'].includes(this.logLevel) && console.log(...args)\n info = (...args: any[]) => ['debug', 'info'].includes(this.logLevel) && console.log(...args)\n warn = (...args: any[]) => ['debug', 'info', 'warn'].includes(this.logLevel) && console.warn(...args)\n error = (...args: any[]) => ['debug', 'info', 'warn', 'error'].includes(this.logLevel) && console.error(...args)\n blue = (msg: string) => {\n console.log(`${chalk.white.bgBlue(this.pname)}${chalk.blue.bgWhite(` ${msg} `)}\\n`)\n }\n cyan = (msg: string) => {\n console.log(`${chalk.white.bgCyan(this.pname)}${chalk.cyan.bgWhite(` ${msg} `)}\\n`)\n }\n\n magenta = (msg: string) => {\n console.log(`${chalk.white.bgMagenta(this.pname)}${chalk.magenta.bgWhite(` ${msg} `)}\\n`)\n }\n\n green = (msg: string) => {\n console.log(`${chalk.white.bgGreen(this.pname)}${chalk.green.bgWhite(` ${msg} `)}\\n`)\n }\n\n yellow = (msg: string) => {\n console.log(`${chalk.white.bgYellow(this.pname)}${chalk.yellow.bgWhite(` ${msg} `)}\\n`)\n }\n red = (msg: string) => {\n console.log(`${chalk.white.bgRed(this.pname)}${chalk.red.bgWhite(` ${msg} `)}\\n`)\n }\n sysError = (msg: string) => {\n console.log(`${chalk.white.bgRed(` System Error Tips `)}${chalk.red.bgWhite(` ${msg} `)}\\n`)\n }\n //\n link = (msg: string) => {\n return chalk.hex('#3498db')(msg)\n }\n title = (msg: string) => {\n console.log(`${chalk.greenBright.bold(`${this.pname}`)} ${chalk.bgGreenBright(` ${msg} `)}\\n`)\n }\n}\n\nexport default new Logger()\n", "import {Configuration} from '@rspack/core'\nimport type {EMPShareType, ExternalsItemType} from 'src/types/config'\nimport store from 'src/store'\nimport {ModuleFederationPlugin} from '@module-federation/enhanced/rspack'\nexport type externalAssetsType = {\n js: string[]\n css: string[]\n}\n// export type ModuleFederationPluginOptions = moduleFederationPlugin.ModuleFederationPluginOptions\nexport type ModuleFederationPluginOptions = ConstructorParameters<typeof ModuleFederationPlugin>[0]\nexport type ImportMapType = {\n imports: {[key: string]: any}\n}\n//\nexport class EMPShareLib {\n public externals: Configuration['externals'] | any = {}\n public externalAssets: externalAssetsType = {js: [], css: []}\n private exp = /^([0-9a-zA-Z_\\s]+)@(.*)/ // \u5339\u914D\u5E93\u5185\u5BB9\u5982 React@http://\n public config!: EMPShareType\n public importMap: ImportMapType = {imports: {}}\n public version!: EMPShareType['mfVersion']\n public isEmpshare = false\n async setup() {\n this.config = store.empConfig.empShare\n this.version = store.empConfig.empShare.mfVersion\n this.isEmpshare = !!store.empConfig.empShare.name\n if (this.config.shareLib) {\n this.setShareLib()\n }\n this.prepareEsm()\n }\n /**\n * \u662F\u5426\u53D6\u7528 importMap\n */\n public get useImportMap() {\n return this.config.useImportMap && store.empConfig.isESM\n }\n public get pluginConfig(): ModuleFederationPluginOptions {\n const cf = {...{}, ...this.config}\n delete cf.mfVersion\n delete cf.shareLib\n delete cf.useImportMap\n const sc: ModuleFederationPluginOptions = {\n manifest: false,\n dts: false,\n dev: false,\n ...cf,\n // runtimePlugins: [store.empResolve('resource/empSharePlugin.js')],\n // @module-federation/runtime-tools\n // implementation: store.importResolve('@module-federation/runtime-tools'),\n // implementation: store.importResolve('@module-federation/runtime'),\n // implementation: store.empResolve('resource/empShareRuntime.js'),\n }\n // console.log(sc)\n return sc\n }\n prepareEsm() {\n // console.log('store.empConfig.isESM', store.empConfig.isESM)\n if (store.empConfig.isESM) {\n this.config.library = {type: 'module'}\n // \u53BB\u9664@ esm\u4E0D\u9700\u8981named\n const remotes: any = this.config.remotes || {}\n for (const [k, v] of Object.entries(remotes)) {\n if (typeof v === 'string') {\n const cb: any = v.match(this.exp) || []\n if (cb.length > 0) {\n remotes[k] = cb[2]\n }\n }\n }\n //\n this.config.remotes = remotes\n // console.log('empShare', this.config)\n }\n }\n async setShareLib() {\n const mf = this.config\n const externals: ExternalsItemType[] = []\n if (typeof mf.shareLib === 'object') {\n for (const [k, v] of Object.entries(mf.shareLib)) {\n let externalsItem: ExternalsItemType = {}\n externalsItem.module = k\n //\u589E\u52A0\u4E0B\u5212\u7EBF \u652F\u6301lodash \u7B49\u7279\u6B8A\u7B26\u53F7\u7684\u95EE\u9898 \u5982 _@http\n\n if (typeof v === 'string') {\n const cb: any = v.match(this.exp) || []\n if (cb.length > 0) {\n externalsItem.global = cb[1]\n externalsItem.entry = cb[2]\n externalsItem.type = 'js'\n externals.push(externalsItem)\n externalsItem = {}\n } else {\n externalsItem.global = ''\n externalsItem.entry = v\n externalsItem.type = 'js'\n externals.push(externalsItem)\n externalsItem = {}\n }\n } else if (Array.isArray(v)) {\n v.map(vo => {\n if (!vo) return\n const isCSS = vo.split('?')[0].endsWith('.css')\n if (isCSS) {\n externalsItem.entry = vo\n externalsItem.type = 'css'\n } else {\n const cb: any = vo.match(this.exp) || []\n if (cb.length > 0) {\n externalsItem.global = cb[1]\n externalsItem.entry = cb[2]\n externalsItem.type = 'js'\n } else {\n externalsItem.global = ''\n externalsItem.entry = vo\n externalsItem.type = 'js'\n }\n }\n externals.push(externalsItem)\n externalsItem = {}\n })\n } else if (typeof v === 'object' && v.entry) {\n externalsItem.entry = v.entry\n externalsItem.global = v.global\n externalsItem.type = v.type\n externals.push(externalsItem)\n externalsItem = {}\n }\n }\n }\n await Promise.all([this.setExternalAssets(externals)])\n }\n private async setExternalAssets(externals: ExternalsItemType[] = []): Promise<void> {\n if (externals.length > 0) {\n let list: ExternalsItemType[] = []\n list = list.concat(externals)\n list.map(v => {\n v.type = v.type || 'js'\n if (v.type === 'js' && v.module) {\n if (v.global) {\n this.externals[v.module] = v.global\n // this.externals[v.module] = `${v.global}${v.entry ? `@${v.entry}` : ''}`//\u5185\u90E8\u5F15\u5165 \u53D6\u4EE3 script? TODO\n } else if (store.empConfig.isESM) {\n if (!this.useImportMap) {\n this.externals[v.module] = v.entry\n } else {\n this.externals[v.module] = v.module\n this.importMap.imports[v.module] = v.entry\n }\n }\n // \u53EF\u4EE5\u4E0D\u4F20\u5165 entry \u5229\u7528\u4F20\u7EDF\u7684 merge request \u8FDB\u884C\u5408\u5E76\u8BF7\u6C42\n if (v.entry && !store.empConfig.isESM) {\n this.externalAssets.js.push(v.entry)\n }\n } else if (v.type === 'css' && v.entry) {\n this.externalAssets.css.push(v.entry)\n }\n })\n // console.log(this.importMap, this.externals)\n }\n }\n}\n", "import url from 'url'\nimport chalk from 'chalk'\nimport {getLanIp} from './utils'\ntype IpAdressOpt = {\n protocol?: string\n port?: number\n pathname?: string\n host?: string\n}\nclass IpAdress {\n imf = {\n protocol: '',\n port: 8000,\n pathname: '/',\n }\n host = '0.0.0.0'\n\n urls = {\n lanUrlForConfig: '',\n lanUrlForTerminal: chalk.gray('unavailable'),\n localUrlForTerminal: '',\n localUrlForBrowser: '',\n }\n\n setup(o: IpAdressOpt) {\n if (o.host) this.host = o.host\n if (o.protocol) this.imf.protocol = o.protocol\n if (o.pathname) this.imf.pathname = o.pathname\n if (o.port) this.imf.port = o.port\n this.setupUrls()\n }\n private setupUrls() {\n const {host} = this\n const isUnspecifiedHost = host === '0.0.0.0' || host === '::'\n let prettyHost\n if (isUnspecifiedHost) {\n prettyHost = 'localhost'\n try {\n this.urls.lanUrlForConfig = this.getLanIp()\n if (this.urls.lanUrlForConfig) {\n // Check if the address is a private ip\n // https://en.wikipedia.org/wiki/Private_network#Private_IPv4_address_spaces\n if (/^10[.]|^172[.](1[6-9]|2[0-9]|3[0-1])[.]|^192[.]168[.]/.test(this.urls.lanUrlForConfig)) {\n // Address is private, format it for later use\n this.urls.lanUrlForTerminal = this.prettyPrintUrl(this.urls.lanUrlForConfig)\n } else {\n // Address is not private, so we will discard it\n this.urls.lanUrlForConfig = ''\n }\n }\n } catch (_e) {\n // ignored\n }\n } else {\n prettyHost = host\n this.urls.lanUrlForConfig = host\n this.urls.lanUrlForTerminal = this.prettyPrintUrl(this.urls.lanUrlForConfig)\n }\n this.urls.localUrlForTerminal = this.prettyPrintUrl(prettyHost)\n this.urls.localUrlForBrowser = this.formatUrl(prettyHost)\n }\n public getLanIp = getLanIp\n formatUrl(hostname: string) {\n const {protocol, port, pathname} = this.imf\n return url.format({\n protocol,\n hostname,\n port,\n pathname,\n })\n }\n prettyPrintUrl(hostname: string) {\n const {protocol, port, pathname} = this.imf\n return url.format({\n protocol,\n hostname,\n port: chalk.bold(port),\n pathname,\n })\n }\n}\nexport default new IpAdress()\n/* export function prepareUrls(protocol: any, host: string, port: number, pathname = '/') {\n const formatUrl = (hostname: string) =>\n url.format({\n protocol,\n hostname,\n port,\n pathname,\n })\n const prettyPrintUrl = (hostname: string) =>\n url.format({\n protocol,\n hostname,\n port: chalk.bold(port),\n pathname,\n })\n\n const isUnspecifiedHost = host === '0.0.0.0' || host === '::'\n let prettyHost, lanUrlForConfig\n let lanUrlForTerminal = chalk.gray('unavailable')\n if (isUnspecifiedHost) {\n prettyHost = 'localhost'\n try {\n // This can only return an IPv4 address\n const {int} = gateway4sync()\n lanUrlForConfig = ip(int || '')\n if (lanUrlForConfig) {\n // Check if the address is a private ip\n // https://en.wikipedia.org/wiki/Private_network#Private_IPv4_address_spaces\n if (/^10[.]|^172[.](1[6-9]|2[0-9]|3[0-1])[.]|^192[.]168[.]/.test(lanUrlForConfig)) {\n // Address is private, format it for later use\n lanUrlForTerminal = prettyPrintUrl(lanUrlForConfig)\n } else {\n // Address is not private, so we will discard it\n lanUrlForConfig = undefined\n }\n }\n } catch (_e) {\n // ignored\n }\n } else {\n prettyHost = host\n lanUrlForConfig = host\n lanUrlForTerminal = prettyPrintUrl(lanUrlForConfig)\n }\n const localUrlForTerminal = prettyPrintUrl(prettyHost)\n const localUrlForBrowser = formatUrl(prettyHost)\n return {\n lanUrlForConfig,\n lanUrlForTerminal,\n localUrlForTerminal,\n localUrlForBrowser,\n }\n}\n */\n", "import ipAddress from 'src/helper/ipAddress'\nimport {deepAssign} from 'src/helper/utils'\nimport store from 'src/store'\n\nclass AutoDevBase {\n isADB = false\n isHttps = false\n get isHttpBase() {\n const base = store.empOptions.base || ''\n // console.log(\n // 'store.empOptions.base',\n // store.empOptions.base,\n // base.indexOf('http://') > -1 || base.indexOf('https://') > -1,\n // )\n return base.indexOf('http://') > -1 || base.indexOf('https://') > -1\n }\n\n setup() {\n this.isADB = !!store.empOptions.autoDevBase && store.mode === 'development' && !this.isHttpBase\n\n if (!this.isADB) return\n //\n const {server, https} = store.empOptions.server || {}\n this.isHttps = server === 'https' || (typeof server === 'object' && server.type === 'https') || https === true\n //\n const host = ipAddress.getLanIp()\n const protocol = this.isHttps ? 'https' : 'http'\n const port = store.empOptions.server?.port || 8000\n store.empOptions.base = `${protocol}://${host}:${port}/`\n store.empOptions.server = deepAssign(\n {\n // host: host,//\u5141\u8BB8\u6240\u6709host \u8BBF\u95EE\n port: port,\n client: {webSocketURL: `${this.isHttps ? 'wss' : 'ws'}://${host}:${port}/ws`},\n },\n store.empOptions.server,\n )\n }\n}\nexport default new AutoDevBase()\n", "import autoDevBase from 'src/store/cycle/autoDevBase'\nimport store from 'src/store'\nimport {EmpPolyfillPlugin} from './rspack/hook'\nexport type LifeCycleType = Partial<LifeCycle>\nexport class LifeCycle {\n op: LifeCycleType = {}\n constructor(op: LifeCycleType = {}) {\n this.op = op\n }\n // \u83B7\u53D6 empOptions \u4E4B\u540E\u3001\u521D\u59CB\u5316 empConfig \u4E4B\u524D\n async afterGetEmpOptions() {\n // \u8BBE\u7F6E auto Dev Base \u9002\u914D Proxy\n autoDevBase.setup()\n //\n if (this.op.afterGetEmpOptions) await this.op.afterGetEmpOptions()\n }\n async beforePlugin() {\n if (store.empConfig.build.polyfill === 'entry') {\n store.chain.plugin('empPolyfill').use(EmpPolyfillPlugin)\n }\n //\n if (this.op.beforePlugin) await this.op.beforePlugin()\n }\n async afterPlugin() {\n if (this.op.afterPlugin) await this.op.afterPlugin()\n }\n async beforeBuild() {\n if (this.op.beforeBuild) await this.op.beforeBuild()\n }\n async afterBulid() {\n if (this.op.afterBulid) await this.op.afterBulid()\n }\n async beforeDevServe() {\n console.log(this.op)\n if (this.op.beforeDevServe) await this.op.beforeDevServe()\n }\n async afterDevServe() {\n if (this.op.afterDevServe) await this.op.afterDevServe()\n }\n async beforeServe() {\n if (this.op.beforeServe) await this.op.beforeServe()\n }\n async afterServe() {\n if (this.op.afterServe) await this.op.afterServe()\n }\n}\n", "import {GlobalStore} from 'src/store'\nimport type {EMPConfigExport} from 'src/index'\n// import path from 'path'\n// import {HtmlRspackPluginOptions} from '@rspack/core'\nimport {BuildType, DebugType, EMPShareType, HtmlType, ModuleTransform, RsTarget, ServerType} from 'src/types/config'\nimport fs from 'node:fs'\n\nimport {deepAssign} from 'src/helper/utils'\nimport {Output, Resolve} from '@rspack/core'\nimport {EMPShareLib} from 'src/store/empShareLib'\nimport {LifeCycle} from 'src/store/lifeCycle'\n// import type {RuleSetRule} from '@rspack/core'\nexport class EmpConfig {\n private store!: GlobalStore\n /**\n * \u9879\u76EE\u4EE3\u7801\u8DEF\u5F84\n * @default 'src'\n */\n public appSrc = 'src'\n /**\n * \u9879\u76EE\u4EE3\u7801\u5165\u53E3\u6587\u4EF6 \u5982 `src/index.js`\n * (*)entries \u8BBE\u7F6E\u540E \u8BE5\u9009\u9879\u5931\u6548\n * @default 'index.js'\n */\n public appEntry = ''\n /**\n * publicPath \u6839\u8DEF\u5F84 \u53EF\u53C2\u8003webpack,\u4E1A\u52A1\u6A21\u5F0F\u9ED8\u8BA4\u4E3A auto\n * html \u90E8\u5206 publicPath \u9ED8\u8BA4\u4E3A undefined,\u53EF\u8BBE\u7F6E\u5168\u91CF\u57DF\u540D\u6216\u5B50\u76EE\u5F55\u9002\u914D\uFF0C\u4E5F\u53EF\u4EE5\u5355\u72EC\u5728html\u8BBE\u7F6E Public\n *\n * @default undefined\n */\n public base = ''\n public target: RsTarget = []\n private assign<T>(t: T, s: any): T {\n s = s || {}\n return deepAssign(t, s)\n }\n public empShareLib = new EMPShareLib()\n /**\n * \u662F\u5426\u542F\u52A8 esm \u6A21\u5757\n * @default true\n */\n public isESM = false\n async autoDevSet() {\n if (this.store.mode === 'development' && this.store.empOptions.autoDevBase) {\n }\n }\n public checkIsESM(target: string) {\n return ['es3', 'es5'].indexOf(target) === -1\n }\n public lifeCycle!: LifeCycle\n async setup(store: GlobalStore) {\n this.store = store\n //\n await this.syncEmpOptions()\n //\n this.lifeCycle = new LifeCycle(this.store.empOptions.lifeCycle)\n await this.lifeCycle.afterGetEmpOptions()\n // \u662F\u5426\u542F\u52A8 is ESM\n this.isESM = this.checkIsESM(this.build.target)\n if (this.store.empOptions.target) {\n this.target = this.store.empOptions.target\n if (Array.isArray(this.target) && !this.target.includes(this.build.target)) {\n this.target.push(this.build.target)\n }\n } else {\n this.target = ['web', this.build.target]\n }\n\n // setup common val of empConfig\n const {appSrc, base, appEntry} = this.store.empOptions\n if (appSrc) this.appSrc = appSrc\n if (base) this.base = base\n if (appEntry) this.appEntry = appEntry\n //\n if (this.store.empConfig.empShare) {\n await this.empShareLib.setup()\n }\n }\n async chain() {\n if (this.store.empOptions.chain) {\n await this.store.empOptions.chain(this.store.chain)\n }\n }\n async plugins() {\n const runPromiseFuns: any[] = []\n if (\n this.store.empOptions.plugins &&\n Array.isArray(this.store.empOptions.plugins) &&\n this.store.empOptions.plugins.length > 0\n ) {\n // await Promise.all(this.store.empOptions.plugins)\n this.store.empOptions.plugins.map(fn => {\n runPromiseFuns.push(fn.rsConfig(this.store))\n })\n await Promise.all(runPromiseFuns)\n }\n }\n get debug() {\n return this.assign<DebugType>(\n {\n loggerLevel: 'info',\n clearLog: true,\n progress: true,\n showRsconfig: false,\n showPerformance: false,\n rspackCache: true,\n infrastructureLogging: {\n appendOnly: true,\n level: 'warn',\n },\n },\n this.store.empOptions.debug,\n )\n }\n get build() {\n const staticDir = this.store.empOptions.build?.staticDir ? `${this.store.empOptions.build?.staticDir}/` : ''\n return this.assign<Required<BuildType>>(\n {\n outDir: 'dist',\n staticDir,\n assetsDir: 'assets',\n publicDir: 'public',\n chunkIds: this.store.isDev ? 'named' : 'deterministic',\n moduleIds: this.store.isDev ? 'named' : 'deterministic',\n sourcemap: true,\n minify: !this.store.isDev,\n minOptions: {},\n target: 'es5',\n polyfill: false,\n coreJsFeatures: 'stable',\n externalHelpers: false,\n browserslist: this.store.browserslistOptions.default,\n },\n {...this.store.empOptions.build, staticDir},\n )\n }\n get html() {\n const meta: any = this.store.empOptions.html?.template\n ? []\n : {\n charset: {charset: 'utf-8'},\n 'http-equiv': {'http-equiv': 'X-UA-Compatible', content: 'IE=edge'},\n viewport: {\n content: 'width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0',\n },\n keywords: {keywords: ''},\n description: {description: ''},\n }\n const op = this.assign<HtmlType>(\n {\n lang: 'zh-CN',\n title: 'EMP',\n inject: 'body',\n minify: !this.store.isDev,\n scriptLoading: !this.isESM ? 'defer' : 'module',\n meta,\n files: {\n css: [],\n js: [],\n },\n tags: {\n headTags: [],\n bodyTags: [],\n },\n },\n this.store.empOptions.html,\n )\n // if (this.isESM && op.files && op.files.js) {\n // op.files.js = []\n // }\n return op\n }\n get entries() {\n return this.store.empOptions.entries ? this.store.empOptions.entries : {}\n }\n get server(): ServerType {\n const sf: ServerType = {\n host: `0.0.0.0`,\n port: 8000,\n open: process.platform === 'darwin',\n // open: false,\n // liveReload: false,\n hot: true,\n watchFiles: ['src/**/*.html'],\n static: [\n {\n directory: this.store.publicDir,\n watch: this.store.isDev,\n },\n // \u66B4\u9732 d.ts \u6587\u4EF6\n /* {\n directory: this.store.outDir,\n watch: this.store.isDev,\n publicPath: this.base,\n staticOptions: {\n setHeaders: function (res: any, path: string) {\n if (path.toString().endsWith('.d.ts')) res?.set('Content-Type', 'application/javascript; charset=utf-8')\n },\n },\n }, */\n ],\n allowedHosts: ['all'],\n historyApiFallback: true,\n headers: {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, PATCH, OPTIONS',\n 'Access-Control-Allow-Headers': 'X-Requested-With, content-type, Authorization',\n },\n // client: {\n // webSocketURL: 'ws://172.29.104.208:8000/ws',\n // },\n }\n return this.assign(sf, this.store.empOptions.server)\n }\n get empShare(): EMPShareType {\n return this.assign({name: '', filename: 'emp.js', shared: {}, mfVersion: 1.5}, this.store.empOptions.empShare)\n }\n get css() {\n return this.assign({postcss: []}, this.store.empOptions.css)\n }\n get output(): Output {\n //TODO \u8003\u8651\u8FA8\u8BC6\u5EA6\u66F4\u597D\u7684\u65B9\u6848\n const contenthashName = !this.store.isDev ? '.[contenthash:8]' : '.[contenthash:8]'\n //HMR is not working for css when output.cssFilename contains [hash] or [contenthash]\n const cssContentHashName = !this.store.isDev ? '.[contenthash:8]' : ''\n const {assetsDir, staticDir} = this.store.empConfig.build\n const output: Output = {\n publicPath: this.store.empConfig.base ? this.store.empConfig.base : 'auto',\n // publicPath: this.base,\n crossOriginLoading: 'anonymous',\n filename: `${staticDir}js/[name]${contenthashName}.js`,\n cssFilename: `${staticDir}css/[name]${cssContentHashName}.css`,\n cssChunkFilename: `${staticDir}css/[name]${cssContentHashName}.css`,\n assetModuleFilename: `${staticDir}${assetsDir}/[name]${contenthashName}[ext][query]`,\n path: this.store.outDir,\n clean: true,\n }\n // \u6DFB\u52A0\u540E ESM \u6837\u5F0F\u5931\u6548 \u5F85\u89C2\u5BDF\n // if (this.isESM) {\n // output = this.assign(\n // {\n // chunkFormat: 'module',\n // chunkLoading: 'import',\n // library: {\n // type: 'module',\n // },\n // },\n // output,\n // )\n // }\n // console.log('output', output)\n return this.assign(output, this.store.empOptions.output)\n }\n get define() {\n let dlist: any = {mode: this.store.mode, env: this.store.cliOptions.env}\n if (this.store.empOptions.define) {\n dlist = {...dlist, ...this.store.empOptions.define}\n }\n return this.setDefine(dlist)\n }\n private setDefine(o: {[k: string]: any}): {[k: string]: string} {\n const defineFix = this.store.empOptions.defineFix ? this.store.empOptions.defineFix : this.isESM ? 'esm' : 'cjs'\n const options: any = {}\n Object.keys(o).map(key => {\n if (defineFix === 'all' || defineFix === 'esm') options[`import.meta.env.${key}`] = JSON.stringify(o[key])\n if (defineFix === 'all' || defineFix === 'cjs') options[`process.env.${key}`] = JSON.stringify(o[key])\n options[`${key}`] = JSON.stringify(o[key])\n })\n return options\n }\n get externals() {\n const o = this.assign(this.empShareLib.externals, this.store.empOptions.externals)\n return o\n }\n get resolve() {\n const rl = deepAssign<Resolve>(\n {\n alias: {\n src: this.store.resolve('src'),\n '@': this.store.resolve('src'),\n },\n extensions: [\n '...',\n '.js',\n '.jsx',\n '.mjs',\n '.ts',\n '.tsx',\n '.css',\n '.less',\n '.scss',\n '.sass',\n '.json',\n '.wasm',\n '.vue',\n '.svg',\n '.svga',\n ],\n },\n this.store.empOptions.resolve,\n )\n return rl\n }\n async syncEmpOptions() {\n const empConfigPath = this.store.resolve('emp-config.js')\n if (!fs.existsSync(empConfigPath)) return\n const {default: empOptionsFn}: {default: EMPConfigExport} = await import(this.store.importFileUrl(empConfigPath))\n if (typeof empOptionsFn === 'function') {\n this.store.empOptions = await empOptionsFn(this.store)\n } else {\n this.store.empOptions = empOptionsFn || {}\n }\n }\n get moduleTransformRule() {\n // const moduleTransformExclude: RuleSetRule['exclude'] = {and: [/(node_modules|bower_components)/]}\n const {moduleTransform} = this.store.empOptions\n const tf: ModuleTransform = this.assign({defaultExclude: false}, moduleTransform)\n const moduleTransformExclude: any = {and: [], not: []}\n if (tf.defaultExclude === true) {\n moduleTransformExclude.and.push(/(node_modules|bower_components)/)\n }\n if (tf?.exclude) {\n moduleTransformExclude.and = moduleTransformExclude.and.concat(tf.exclude)\n }\n if (moduleTransform?.include) {\n moduleTransformExclude.not = tf.include\n }\n // console.log('moduleTransformExclude', moduleTransformExclude)\n return moduleTransformExclude\n }\n get cacheDir() {\n return this.store.empOptions.cacheDir ? this.store.empOptions.cacheDir : 'node_modules/.emp-cache'\n }\n}\nexport default new EmpConfig()\n", "import path from 'node:path'\nimport fs from 'node:fs/promises'\nimport {__dirname, empRoot, getFileJson, importResolve} from 'src/helper/nodePolyfill'\nimport {EMPModeType} from 'src/types/env'\nimport WPChain from 'webpack-chain'\nimport rspackStore from 'src/store/rspack'\nimport type {Configuration as RsConfig, RspackOptions} from '@rspack/core'\nimport logger from 'src/helper/logger'\nimport type {EmpOptions} from 'src/types/config'\nimport empConfig, {EmpConfig} from 'src/store/empConfig'\nimport {pathToFileURL} from 'node:url'\nimport util from 'node:util'\nimport {deepAssign, getLanIp, vCompare} from 'src/helper/utils'\nexport class GlobalStore {\n /**\n * EMP Version\n * @default package version\n */\n public empPkg: any = {dependencies: {}, devDependencies: {}, version: '2.0.0', name: ''}\n /**\n * \u9879\u76EEpkg\u4FE1\u606F\n */\n public pkg: any = {dependencies: {}, devDependencies: {}, version: '0.0.0', name: ''}\n /**\n * \u9879\u76EE\u6839\u76EE\u5F55\u7EDD\u5BF9\u8DEF\u5F84\n * @default process.cwd()\n */\n public root = process.cwd()\n /**\n * emp \u5185\u90E8\u6839\u8DEF\u5F84\n * @default path.resolve(__dirname, '../../')\n */\n public empRoot = empRoot\n /**\n * emp \u6267\u884C\u4EE3\u7801\u8DEF\u5F84\n */\n public empSource = path.resolve(this.empRoot, 'dist')\n /**\n * \u83B7\u53D6\u9879\u76EE \u6839\u76EE\u5F55\u7EDD\u5BF9\u8DEF\u5F84\n * (*) relativePath \u53EF\u4EE5\u662F\u7EDD\u5BF9\u8DEF\u5F84\n * @param relativePath\n * @returns\n */\n public resolve = (relativePath: string) =>\n path.isAbsolute(relativePath) ? relativePath : path.resolve(this.root, relativePath)\n /**\n * \u83B7\u53D6\u9879\u76EE emp\u5185\u90E8\u6839\u76EE\u5F55\u7EDD\u5BF9\u8DEF\u5F84\n * @param relativePath\n * @returns\n */\n public empResolve = (relativePath: string) => path.resolve(this.empRoot, relativePath)\n\n /**\n * \u6E90\u7801\u5730\u5740 \u7EDD\u5BF9\u8DEF\u5F84\n */\n public appSrc = ''\n /**\n * \u6E90\u7801\u751F\u6210\u76EE\u5F55 \u7EDD\u5BF9\u8DEF\u5F84\n */\n public outDir = ''\n /**\n * \u9759\u6001\u6587\u4EF6\u76EE\u5F55 \u7EDD\u5BF9\u8DEF\u5F84\n */\n public publicDir = ''\n /**\n * \u9759\u6001\u8D44\u6E90\n */\n public resource = {\n dir: '',\n key: '',\n cert: '',\n }\n /**\n * \u7F13\u5B58\u76EE\u5F55 \u7EDD\u5BF9\u8DEF\u5F84\n */\n public cacheDir = ''\n public mode: EMPModeType = 'development'\n public cliMode: 'dev' | 'prod' = 'dev'\n public isDev = true\n /**\n * \u9879\u76EE\u914D\u7F6E\n */\n public cliOptions: any\n public chain!: WPChain\n public rsConfig!: RsConfig\n public empOptions: EmpOptions = {}\n public empConfig!: EmpConfig\n // utils\n public vCompare = vCompare\n public deepAssign = deepAssign\n public getLanIp = getLanIp\n //\n\n //\n async setup(mode: string, cliOptions: any) {\n // console.log(`[empRoot]`, this.empRoot)\n // \u521D\u59CB\u5316 store \u57FA\u7840\u53D8\u91CF\n await this.initVars(mode, cliOptions)\n // \u8BBE\u7F6E empConfig\n this.empConfig = empConfig\n await this.empConfig.setup(this)\n // \u521D\u59CB\u5316 store \u7EDD\u5BF9\u8DEF\u5F84\n this.initPaths()\n // chain \u5B9E\u4F8B\u5316\n this.chain = new WPChain()\n // rspack setup\n await rspackStore.setup(this)\n //\n this.setLogger()\n this.toConfig()\n this.logConfig()\n }\n /**\n * \u521D\u59CB\u5316 \u57FA\u7840\u53D8\u91CF\n * @param mode cli\u540D\u79F0\n * @param cliOptions cli\u914D\u7F6E\n */\n async initVars(mode: string, cliOptions: any) {\n this.cliOptions = cliOptions || {}\n this.cliMode = process.env.ENV as any\n this.mode = mode === 'dev' ? 'development' : 'production'\n this.isDev = this.mode === 'development'\n const empPkg = await getFileJson(this.empResolve('package.json'))\n const pkg = await getFileJson(this.resolve('package.json'))\n this.empPkg = {...this.empPkg, ...empPkg}\n this.pkg = {...this.pkg, ...pkg}\n }\n /**\n * \u521D\u59CB\u5316 \u57FA\u7840\u8DEF\u5F84\n */\n initPaths() {\n this.appSrc = this.resolve(this.empConfig.appSrc)\n this.outDir = this.resolve(this.empConfig.build.outDir)\n this.publicDir = this.resolve(this.empConfig.build.publicDir)\n this.cacheDir = this.resolve(this.empConfig.cacheDir)\n this.resource.dir = path.join(this.empRoot, 'resource')\n this.resource.cert = path.join(this.resource.dir, 'emp.cert')\n this.resource.key = path.join(this.resource.dir, 'emp.key')\n }\n /**\n * \u8BBE\u7F6E \u65E5\u5FD7\u7B49\u7EA7\n */\n setLogger() {\n let logLevel = this.cliMode === 'dev' ? 'debug' : 'info'\n if (this.empConfig.debug.loggerLevel) logLevel = this.empConfig.debug.loggerLevel\n logger.setup({\n pname: `EMP\u26A1${this.empPkg.version}${this.cliMode === 'dev' ? '.DEV' : ''}`,\n logLevel,\n })\n }\n merge(o: RspackOptions) {\n this.chain.merge(o)\n }\n importResolve(scope: string, importMetaUrl?: string) {\n return importResolve(scope, importMetaUrl)\n }\n /**\n * windows import() \u60C5\u51B5\u4E0B ES \u7684\u7269\u7406\u8DEF\u5F84\u8F6C\u6362\n * pathToFileURL \u662F\u4E3A\u4E86\u89E3\u51B3\u5728window\u4E0B\uFF0Cimport\u6587\u4EF6\u8DEF\u5F84\u89E3\u6790\u5F02\u5E38\n * @param scope\n * @returns\n */\n importFileUrl(scope: string) {\n return pathToFileURL(scope).toString()\n }\n /**\n * \u540C\u6B65 chain \u914D\u7F6E\u5230 rsConfig\n */\n toConfig() {\n this.rsConfig = this.chain.toConfig() as RsConfig\n }\n /**\n * \u6253\u5370 config\n */\n logConfig() {\n if (this.empConfig.debug.showRsconfig) {\n if (typeof this.empConfig.debug.showRsconfig === 'string') {\n const rsconfigPath = path.join(this.root, this.empConfig.debug.showRsconfig)\n fs.writeFile(rsconfigPath, JSON.stringify(this.rsConfig, null, 2))\n } else {\n const defaultOp = {colors: true, depth: null}\n const op: any =\n typeof this.empConfig.debug.showRsconfig === 'object'\n ? deepAssign(defaultOp, this.empConfig.debug.showRsconfig)\n : defaultOp\n console.log(logger.link(`[Compile Config]`))\n console.log(util.inspect(this.rsConfig, op))\n // console.log(JSON.stringify(this.rsConfig))\n }\n }\n }\n get browserslistOptions() {\n return {\n default: ['chrome >= 87', 'edge >= 88', 'firefox >= 78', 'safari >= 14'],\n h5: ['iOS >= 9', 'Android >= 4.4', 'last 2 versions', '> 0.2%', 'not dead'],\n node: ['node >= 20'],\n }\n }\n}\nexport default new GlobalStore()\n", "import {exec} from 'node:child_process'\nimport {promisify} from 'node:util'\nimport logger from './logger'\nimport store from 'src/store'\n\nconst execAsync = promisify(exec)\n\nconst supportedChromiumBrowsers = [\n 'Google Chrome Canary',\n 'Google Chrome Dev',\n 'Google Chrome Beta',\n 'Google Chrome',\n 'Microsoft Edge',\n 'Brave Browser',\n 'Vivaldi',\n 'Chromium',\n]\n\nconst getTargetBrowser = async () => {\n // Use user setting first\n let targetBrowser = process.env.BROWSER\n // If user setting not found or not support, use opening browser first\n if (!targetBrowser || !supportedChromiumBrowsers.includes(targetBrowser)) {\n const {stdout: ps} = await execAsync('ps cax')\n targetBrowser = supportedChromiumBrowsers.find(b => ps.includes(b))\n }\n return targetBrowser\n}\n\nexport const openBrowser = async (url: string) => {\n const shouldTryOpenChromeWithAppleScript = process.platform === 'darwin'\n\n if (shouldTryOpenChromeWithAppleScript) {\n try {\n const targetBrowser = await getTargetBrowser()\n if (targetBrowser) {\n // Try to reuse existing tab with AppleScript\n const c = `osascript openChrome.applescript \"${encodeURI(url)}\" \"${targetBrowser}\"`\n await execAsync(c, {\n cwd: store.resource.dir,\n })\n\n return true\n }\n } catch (err) {\n logger.debug(err)\n }\n }\n //\n // Fallback to open\n // (It will always open new tab)\n try {\n const {default: open} = await import('open')\n await open(url)\n return true\n } catch (err) {\n logger.error('Failed to open start URL.')\n logger.error(err)\n return false\n }\n}\nexport default openBrowser\n", "import net from 'net'\nimport os from 'os'\n\nconst minPort = 1024\nconst maxPort = 65_535\nconst httpsPort = 443\n\n/**\n * @return {Set<string|undefined>}\n */\nconst getLocalHosts = () => {\n const interfaces = os.networkInterfaces()\n\n // Add undefined value for createServer function to use default host,\n // and default IPv4 host in case createServer defaults to IPv6.\n // eslint-disable-next-line no-undefined\n const results = new Set([undefined, '0.0.0.0'])\n\n for (const _interface of Object.values(interfaces)) {\n if (_interface) {\n for (const config of _interface) {\n results.add(config.address)\n }\n }\n }\n\n return results\n}\n\n/**\n * @param {number} basePort\n * @param {string | undefined} host\n * @return {Promise<number>}\n */\nconst checkAvailablePort = (basePort: number, host?: string) =>\n new Promise((resolve, reject) => {\n const server = net.createServer()\n server.unref()\n server.on('error', reject)\n\n server.listen(basePort, host, () => {\n // Next line should return AdressInfo because we're calling it after listen() and before close()\n const {port}: any = server.address()\n server.close(() => {\n resolve(port)\n })\n })\n })\n\n/**\n * @param {number} port\n * @param {Set<string|undefined>} hosts\n * @return {Promise<number>}\n */\nconst getAvailablePort = async (port: number, hosts: any) => {\n /**\n * Errors that mean that host is not available.\n * @type {Set<string | undefined>}\n */\n const nonExistentInterfaceErrors = new Set(['EADDRNOTAVAIL', 'EINVAL'])\n /* Check if the post is available on every local host name */\n for (const host of hosts) {\n try {\n await checkAvailablePort(port, host) // eslint-disable-line no-await-in-loop\n } catch (error: any) {\n /* We throw an error only if the interface exists */\n if (!nonExistentInterfaceErrors.has(/** @type {NodeJS.ErrnoException} */ error.code)) {\n throw error\n }\n }\n }\n\n return port\n}\n\n/**\n * @param {number} basePort\n * @param {string=} host\n * @return {Promise<number>}\n */\nexport async function getPorts(basePort: number, host: string = 'localhost') {\n if (basePort !== httpsPort && (basePort < minPort || basePort > maxPort)) {\n throw new Error(`Port number must lie between ${minPort} and ${maxPort}`)\n }\n\n let port = basePort\n const localhosts = getLocalHosts()\n let hosts\n if (host && !localhosts.has(host)) {\n hosts = new Set([host])\n } else {\n /* If the host is equivalent to localhost\n we need to check every equivalent host\n else the port might falsely appear as available\n on some operating systems */\n hosts = localhosts\n }\n /** @type {Set<string | undefined>} */\n const portUnavailableErrors = new Set(['EADDRINUSE', 'EACCES'])\n while (port <= maxPort) {\n try {\n const availablePort = await getAvailablePort(port, hosts) // eslint-disable-line no-await-in-loop\n return availablePort\n } catch (error: any) {\n /* Try next port if port is busy; throw for any other error */\n if (!portUnavailableErrors.has(/** @type {NodeJS.ErrnoException} */ error.code)) {\n throw error\n }\n port += 1\n }\n }\n\n throw new Error('No available ports found')\n}\n", "import logger from 'src/helper/logger'\nimport store from 'src/store'\nimport {clearConsole} from 'src/helper/utils'\nimport fs from 'node:fs/promises'\nimport ipAddress from 'src/helper/ipAddress'\nimport chalk from 'chalk'\nimport openBrowser from 'src/helper/openBrowser'\nimport {getPorts} from 'src/helper/getPort'\nimport autoDevBase from 'src/store/cycle/autoDevBase'\n//\nexport class BaseScript {\n public sf = {\n protocol: 'http',\n host: '0.0.0.0',\n port: 8000,\n publicPath: '',\n publicHasHttp: false,\n isOpenBrower: false,\n url: '',\n urls: {localUrlForBrowser: '', localUrlForTerminal: '', lanUrlForTerminal: '', lanUrlForConfig: ''},\n }\n //\u91CD\u7F6E\u670D\u52A1\u4FE1\u606F\n async adaptServer() {\n this.sf.publicPath = store.rsConfig.output?.publicPath === 'auto' ? '/' : store.rsConfig.output?.publicPath || '/'\n this.sf.isOpenBrower = !!store.empConfig.server.open\n this.sf.protocol = this.isHttps ? 'https' : 'http'\n this.sf.host = store.empConfig.server.host ? store.empConfig.server.host : this.sf.host\n this.sf.port = store.empConfig.server.port\n // \u8BBE\u7F6E port\n await this.serverPort()\n ipAddress.setup(this.sf)\n // \u5339\u914D url\n if (\n this.sf.publicPath &&\n (this.sf.publicPath.indexOf('http://') > -1 || this.sf.publicPath.indexOf('https://') > -1)\n ) {\n this.sf.url = this.sf.publicPath\n this.sf.publicHasHttp = true\n this.sf.urls.localUrlForTerminal = ipAddress.prettyPrintUrl('localhost')\n } else {\n this.sf.urls = ipAddress.urls\n this.sf.url = this.sf.urls.localUrlForBrowser\n }\n }\n startOpen() {\n const {urls} = this.sf\n if (this.sf.publicHasHttp) {\n logger.info(`${chalk.greenBright('\u279C')} Local: ${logger.link(urls.localUrlForTerminal)}`)\n logger.info(`${chalk.greenBright('\u279C')} Network: ${logger.link(this.sf.publicPath)}`)\n } else {\n logger.info(`${chalk.greenBright('\u279C')} Local: ${logger.link(urls.localUrlForTerminal)}`)\n logger.info(`${chalk.greenBright('\u279C')} Network: ${logger.link(urls.lanUrlForTerminal)}\\n`)\n }\n // check open brower\n if (this.sf.isOpenBrower) openBrowser(this.sf.url)\n }\n // \u5B9E\u73B0\u6574\u4F53\u751F\u547D\u5468\u671F\u8FD0\u8F6C\n async setup(cliName: string, o: any) {\n //\u5B9E\u4F8B\u5316 store\n await store.setup(cliName, o)\n // \u662F\u5426\u6E05\u9664\u4E0A\u4E00\u4E2A\u65E5\u5FD7\n if (store.empConfig.debug.clearLog) {\n clearConsole()\n }\n // \u663E\u793A\u6307\u4EE4\u5B9A\u4F4D\n // logger.blue(`${this.constructor.name} Running`)\n logger.title(`${cliName}`)\n //\n await this.adaptServer()\n await this.run()\n this.afterRun()\n }\n async run() {}\n afterRun() {\n process.on('SIGINT', function () {\n process.exit()\n })\n }\n get isHttps() {\n const {server, https} = store.empConfig.server || {}\n return server === 'https' || (typeof server === 'object' && server.type === 'https') || https === true\n }\n getcert() {\n return Promise.all([fs.readFile(store.resource.key), fs.readFile(store.resource.cert)])\n }\n async serverPort() {\n if (autoDevBase.isADB) return\n const {port, host} = this.sf\n const serverPort = await getPorts(port, host)\n if (serverPort !== port) {\n this.sf.port = serverPort\n if (store.rsConfig.devServer?.port) store.rsConfig.devServer.port = serverPort\n }\n }\n}\n", "import chalk from 'chalk'\nimport type {Stats, StatsAsset} from '@rspack/core'\nimport path from 'node:path'\nimport store from 'src/store'\nimport {gzipSizeSync} from 'gzip-size'\nimport fs from 'node:fs'\nimport logger from './logger'\nimport {timeFormat} from './utils'\n// RegExp\nexport const HTML_REGEX = /\\.html$/\nexport const JS_REGEX = /\\.(?:js|mjs|cjs|jsx)$/\nexport const TS_REGEX = /\\.(?:ts|mts|cts|tsx)$/\nexport const SCRIPT_REGEX = /\\.(?:js|jsx|mjs|cjs|ts|tsx|mts|cts)$/\nexport const TS_AND_JSX_REGEX = /\\.(?:ts|tsx|jsx|mts|cts)$/\nexport const SVG_REGEX = /\\.svg$/\nexport const CSS_REGEX = /\\.css$/\nexport const LESS_REGEX = /\\.less$/\nexport const SASS_REGEX = /\\.s(?:a|c)ss$/\nexport const CSS_MODULES_REGEX = /\\.module\\.\\w+$/i\nexport const NODE_MODULES_REGEX = /[\\\\/]node_modules[\\\\/]/\n\nexport const filterAsset = (asset: string) => !/\\.map$/.test(asset) && !/\\.LICENSE\\.txt$/.test(asset)\n\nconst getAssetColor = (size: number) => {\n if (size > 300 * 1000) {\n return chalk.red\n }\n if (size > 100 * 1000) {\n return chalk.yellow\n }\n return chalk.white\n}\nconst formatAsset = (asset: StatsAsset) => {\n const fileName = asset.name.split('?')[0]\n const sizeLabel = calcFileSize(asset.size)\n const name = path.basename(fileName)\n const folder = path.join(path.basename(store.empConfig.build.outDir), path.dirname(fileName))\n const contents = fs.readFileSync(path.join(store.empConfig.build.outDir, fileName))\n const size = contents.length\n const gzippedSize = gzipSizeSync(contents)\n const gzipSizeLabel = getAssetColor(gzippedSize)(calcFileSize(gzippedSize))\n return {\n size,\n folder,\n name,\n gzippedSize,\n sizeLabel,\n gzipSizeLabel,\n }\n}\n\nfunction printHeader(longestFileLength: number, longestLabelLength: number) {\n const longestLengths = [longestFileLength, longestLabelLength]\n const headerRow = ['File', 'Size', 'Gzipped'].reduce((prev, cur, index) => {\n const length = longestLengths[index]\n let curLabel = cur\n if (length) {\n curLabel = cur.length < length ? cur + ' '.repeat(length - cur.length) : cur\n }\n return `${prev + curLabel} `\n }, ' ')\n\n console.log(chalk.bold.blue(headerRow))\n}\nconst calcFileSize = (len: number) => {\n const val = len / 1000\n return `${val.toFixed(val < 1 ? 2 : 1)} kB`\n}\nconst coloringAssetName = (assetName: string) => {\n if (JS_REGEX.test(assetName)) {\n return chalk.yellowBright(assetName)\n }\n if (CSS_REGEX.test(assetName)) {\n return chalk.greenBright(assetName)\n }\n if (HTML_REGEX.test(assetName)) {\n return chalk.blueBright(assetName)\n }\n return chalk.magenta(assetName)\n}\n\nexport async function printFileSizes(stats: Stats) {\n //\n const origin = stats.toJson({\n all: false,\n assets: true,\n timings: true,\n })\n //\n timeDone(origin.time)\n //\n const filteredAssets = origin.assets!.filter(asset => filterAsset(asset.name))\n const assets = filteredAssets.map(formatAsset)\n assets.sort((a, b) => a.size - b.size)\n // console.log('filteredAssets', assets)\n // assets.map(a => {\n // console.log(a.name, calcFileSize(a.size))\n // })\n const longestLabelLength = Math.max(...assets.map(a => a.sizeLabel.length))\n const longestFileLength = Math.max(...assets.map(a => (a.folder + path.sep + a.name).length))\n //\n printHeader(longestFileLength, longestLabelLength)\n //\n let totalSize = 0\n let totalGzipSize = 0\n assets.forEach(asset => {\n let {sizeLabel} = asset\n const {name, folder, gzipSizeLabel} = asset\n const fileNameLength = (folder + path.sep + name).length\n const sizeLength = sizeLabel.length\n\n totalSize += asset.size\n totalGzipSize += asset.gzippedSize\n\n if (sizeLength < longestLabelLength) {\n const rightPadding = ' '.repeat(longestLabelLength - sizeLength)\n sizeLabel += rightPadding\n }\n\n let fileNameLabel = chalk.gray(asset.folder + path.sep) + coloringAssetName(asset.name)\n\n if (fileNameLength < longestFileLength) {\n const rightPadding = ' '.repeat(longestFileLength - fileNameLength)\n fileNameLabel += rightPadding\n }\n\n logger.info(` ${fileNameLabel} ${chalk.gray(sizeLabel)} ${gzipSizeLabel}`)\n })\n // console.log(longestLabelLength, longestFileLength)\n const totalSizeLabel = `${chalk.bold.blue('Total size:')} ${calcFileSize(totalSize)}`\n const gzippedSizeLabel = `${chalk.bold.blue('Gzipped size:')} ${calcFileSize(totalGzipSize)}`\n logger.info(`\\n ${totalSizeLabel}\\n ${gzippedSizeLabel}\\n`)\n}\nexport function timeDone(mis: number | string = 0) {\n logger.info(`${chalk.greenBright('\u2713')} Ready in ${timeFormat(Number(mis))}`)\n}\n", "import {RspackOptions, rspack} from '@rspack/core'\nimport {RspackDevServer} from '@rspack/dev-server'\nimport store from 'src/store'\nimport {BaseScript} from 'src/script/base'\nimport logger from 'src/helper/logger'\nimport {deepAssign} from 'src/helper/utils'\nimport {timeDone} from 'src/helper/buildPrint'\n\nclass DevScript extends BaseScript {\n get rspackDevConfig(): RspackOptions {\n const cf: RspackOptions = deepAssign(store.rsConfig, {\n stats: {\n all: false,\n colors: true,\n assets: false,\n chunks: false,\n entrypoints: false,\n timings: false,\n version: false,\n errors: true,\n warnings: true,\n },\n devServer: {\n open: false,\n setupExitSignals: true,\n },\n })\n return cf\n }\n async devServerConfig() {\n const devServer = Object.assign({}, store.rsConfig.devServer)\n if (this.isHttps) {\n /**\n * \u5F03\u7F6Eoptions\n */\n if (devServer.https === true) {\n delete devServer.https\n }\n if (!devServer.server) {\n const [key, cert] = await this.getcert()\n devServer.server = {\n type: 'https',\n options: {\n key,\n cert,\n // minVersion: 'TLSv1.1',\n // key: fs.readFileSync(path.join(__dirname, './server.key')),\n // pfx: fs.readFileSync(path.join(__dirname, './server.pfx')),\n // cert: fs.readFileSync(path.join(__dirname, './server.crt')),\n // ca: fs.readFileSync(path.join(__dirname, './ca.pem')),\n // passphrase: 'webpack-dev-server',\n // requestCert: true,\n },\n }\n }\n }\n return devServer\n }\n override async run() {\n const compiler = rspack(this.rspackDevConfig)\n if (!store.rsConfig.devServer) {\n logger.error('devServer is not defined in config')\n return\n }\n const devServer = await this.devServerConfig()\n const serverApp = new RspackDevServer(devServer, compiler as any)\n //\n this.startOpen()\n if (store.empConfig.lifeCycle.beforeDevServe) await store.empConfig.lifeCycle.beforeDevServe()\n await serverApp.start()\n const showTimeDone = (s: any) => {\n const d = s?.toJson({all: false, colors: false, assets: false, chunks: false, timings: true})\n timeDone(d.time)\n }\n if (store.empConfig.debug.showPerformance) compiler.hooks.afterDone.tap('done', showTimeDone)\n serverApp.middleware?.waitUntilValid(s => {\n if (!store.empConfig.debug.showPerformance) showTimeDone(s)\n //\n if (store.empConfig.lifeCycle.afterDevServe) store.empConfig.lifeCycle.afterDevServe()\n //\n // compiler.close(e => {\n // console.log('compiler.close', e)\n // compiler.run(s => {\n // console.log('compiler.run', s)\n // })\n // })\n })\n }\n}\nexport default new DevScript()\n", "import logger from 'src/helper/logger'\nimport {rspack} from '@rspack/core'\nimport store from 'src/store'\nimport {BaseScript} from 'src/script/base'\nimport {printFileSizes} from 'src/helper/buildPrint'\nclass BuildScript extends BaseScript {\n override async run() {\n //\n if (store.empConfig.lifeCycle.beforeBuild) await store.empConfig.lifeCycle.beforeBuild()\n //\n rspack(store.rsConfig, async (err, stats) => {\n if (err !== null) {\n logger.error(err.stack || err)\n if (err.message) {\n logger.error(err.message)\n }\n return\n }\n if (!stats) {\n logger.red('Stats is Undefined.')\n return\n }\n //\n // const statsMsg = stats.toString({\n // all: false,\n // colors: true,\n // assets: true,\n // chunks: false,\n // // modules: true,\n // // moduleAssets: true,\n // // publicPath: true,\n // // outputPath: true,\n // entrypoints: true,\n // // builtAt: true,\n // timings: true,\n // version: true,\n // })\n // statsMsg = statsMsg.replace('Rspack ', '')\n if (stats.hasErrors()) {\n logger.error(\n stats.toString({\n colors: true,\n children: true,\n }),\n )\n logger.red('Failed to compile.')\n process.exit(1)\n }\n\n if (stats.hasWarnings()) {\n logger.yellow(`Compiled with warnings.`)\n logger.warn(\n stats.toString({\n colors: true,\n children: true,\n }),\n )\n }\n /* logger.info(\n stats.toString({\n all: false,\n colors: true,\n assets: true,\n chunks: false,\n entrypoints: true,\n timings: true,\n version: true,\n }),\n ) */\n await printFileSizes(stats)\n // logger.green(`Compiled successfully.`)\n if (store.empConfig.lifeCycle.afterBulid) await store.empConfig.lifeCycle.afterBulid()\n })\n }\n}\nexport default new BuildScript()\n", "import express, {Express} from 'express'\nimport cors from 'cors'\nimport compression from 'compression'\nimport https from 'https'\n\nimport {BaseScript} from 'src/script/base'\n\nexport class HttpServer extends BaseScript {\n public app!: Express\n async init() {\n const app = express()\n app.use(compression())\n app.use(cors())\n this.app = app\n }\n async server() {\n if (this.isHttps) {\n const [key, cert] = await this.getcert()\n const httpsServer = https.createServer(\n typeof this.isHttps !== 'boolean'\n ? this.isHttps\n : {\n key,\n cert,\n },\n this.app,\n )\n httpsServer.listen(this.sf.port, async () => {\n this.startOpen()\n await this.onReady()\n })\n } else {\n this.app.listen(this.sf.port, async () => {\n this.startOpen()\n await this.onReady()\n })\n }\n }\n async onReady() {}\n async middleware() {}\n async start() {\n await this.init()\n await this.middleware()\n await this.server()\n }\n}\n", "import {HttpServer} from './httpBase'\nimport store from 'src/store'\nimport express from 'express'\nimport path from 'path'\nimport fsp from 'node:fs/promises'\nimport fs from 'node:fs'\nimport logger from 'src/helper/logger'\nimport {timeDone} from 'src/helper/buildPrint'\n// import openBrowser from 'src/helper/openBrowser'\n\nclass ServeScript extends HttpServer {\n timing = 0\n override async run() {\n this.timing = Date.now()\n if (!fs.existsSync(store.outDir)) {\n return logger.sysError(`emp serve must be executed after emp build,${store.outDir} not exist!`)\n }\n if (store.empConfig.lifeCycle.beforeServe) await store.empConfig.lifeCycle.beforeServe()\n this.start()\n }\n override async middleware() {\n const staticRoot = store.resolve(store.rsConfig.output?.path as any)\n this.app.use(express.static(staticRoot))\n // \u9ED8\u8BA4\u5165\u53E3 \u9002\u914D single spa\n const html = await fsp.readFile(path.join(staticRoot, 'index.html'), 'utf8')\n this.app.get('*', (req, res) => res.send(html))\n }\n override async onReady(): Promise<void> {\n timeDone(Date.now() - this.timing)\n // if (store.empConfig.server.open) openBrowser(this.localUrl)\n //\n if (store.empConfig.lifeCycle.afterServe) await store.empConfig.lifeCycle.afterServe()\n }\n}\nexport default new ServeScript()\n", "export type {EmpOptions} from 'src/types/config'\nimport type {EmpOptions} from 'src/types/config'\nimport type {GlobalStore} from 'src/store'\nexport type {EMP3PluginType, EMP3PluginFnType} from 'src/types/plugin'\nimport store from 'src/store'\nimport runScript from 'src/script'\nimport dts from 'src/script/dts'\n// import rsBundle from 'src/script/bundle'\nexport type EMPConfigFn = (store: GlobalStore) => EmpOptions | Promise<EmpOptions>\nexport type EMPConfigExport = EmpOptions | EMPConfigFn\nexport function defineConfig(config: EMPConfigExport): EMPConfigExport {\n return config\n}\nexport {store, runScript, dts}\nexport type {GlobalStore}\n", "import {program} from 'commander'\nimport store from 'src/store'\nimport process, {exit} from 'node:process'\nimport {vCompare} from 'src/helper/utils'\nimport logger from 'src/helper/logger'\nexport default function runScript() {\n // check nodejs version\n const needVersion = '20.0.0'\n if (vCompare(needVersion, process.versions.node) === 1) {\n logger.sysError(`\u5F53\u524D\u7248\u672C\u4E3Av${process.versions.node} \u6700\u4F4E\u8981\u6C42\u4E3Av${needVersion}`)\n exit(0)\n }\n //\n program.version(store.empPkg.version, '-v, --version').usage('<command> [options]')\n /**\n * \u8C03\u8BD5\n */\n program\n .command('dev')\n .description('Dev \u6A21\u5F0F')\n .option('-e, --env <env>', '\u90E8\u7F72\u73AF\u5883 dev\u3001test\u3001prod')\n .option('-h, --hot', '\u662F\u5426\u4F7F\u7528\u70ED\u66F4\u65B0 \u9ED8\u8BA4\u542F\u52A8')\n .option('-o, --open', '\u662F\u5426\u6253\u5F00\u8C03\u8BD5\u9875\u9762 \u9ED8\u8BA4\u4E0D\u6253\u5F00')\n .option('-t, --ts', '\u751F\u6210\u7C7B\u578B\u6587\u4EF6 \u9ED8\u8BA4\u4E3A false')\n .option('-pr, --profile', '\u7EDF\u8BA1\u6A21\u5757\u6D88\u8017')\n .option('-cl, --clearLog <clearLog>', '\u6E05\u7A7A\u65E5\u5FD7 \u9ED8\u8BA4\u4E3A true')\n .option(\n '-ev, --env-vars <key=value>',\n '\u5B9A\u4E49\u4E00\u4E2A\u73AF\u5883\u53D8\u91CF -ev key=value \u591A\u4E2A\u73AF\u5883\u53D8\u91CF\u91CD\u590D\u8C03\u7528 -ev key=value -ev key=value',\n (ovalue: string, memo: Record<string, string>) => {\n const [key, value] = ovalue.split('=')\n memo[key] = value\n return memo\n },\n {},\n )\n .action(async o => {\n const {default: devScript} = await import('src/script/dev')\n await devScript.setup('dev', o)\n })\n /**\n * \u6784\u5EFA\u7F16\u8BD1\n */\n program\n .command('build')\n .description('Build \u6A21\u5F0F')\n .option('-e, --env <env>', '\u90E8\u7F72\u73AF\u5883 dev\u3001test\u3001prod')\n .option('-a, --analyze', '\u751F\u6210\u5206\u6790\u62A5\u544A \u9ED8\u8BA4\u4E3A false')\n .option('-t, --ts', '\u751F\u6210\u7C7B\u578B\u6587\u4EF6 \u9ED8\u8BA4\u4E3A false')\n .option('-pr, --profile', '\u7EDF\u8BA1\u6A21\u5757\u6D88\u8017')\n .option('-cl, --clearLog <clearLog>', '\u6E05\u7A7A\u65E5\u5FD7 \u9ED8\u8BA4\u4E3A true')\n .option(\n '-ev, --env-vars <key=value>',\n '\u5B9A\u4E49\u4E00\u4E2A\u73AF\u5883\u53D8\u91CF -ev key=value \u591A\u4E2A\u73AF\u5883\u53D8\u91CF\u91CD\u590D\u8C03\u7528 -ev key=value -ev key=value',\n (ovalue: string, memo: Record<string, string>) => {\n const [key, value] = ovalue.split('=')\n memo[key] = value\n return memo\n },\n {},\n )\n .action(async o => {\n const {default: buildScript} = await import('src/script/build')\n await buildScript.setup('build', o)\n })\n /**\n * Production \u73AF\u5883\u8C03\u8BD5\n */\n program\n .command('serve')\n .description('Server \u6A21\u5F0F')\n .option('-cl, --clearLog <clearLog>', '\u6E05\u7A7A\u65E5\u5FD7 \u9ED8\u8BA4\u4E3A true')\n .action(async o => {\n const {default: serveScript} = await import('src/script/serve')\n await serveScript.setup('serve', o)\n })\n\n /**\n * \u62C9\u53D6 remote d.ts\n */\n program\n .command('dts')\n .description('\u62C9\u53D6 remote \u9879\u76EE\u7684 d.ts')\n .option('-p, --typingsPath <typingsPath>', '\u4E0B\u8F7D\u76EE\u5F55')\n .option('-e, --env <env>', '\u90E8\u7F72\u73AF\u5883 dev\u3001test\u3001prod')\n .action(o => {\n // exec('dts', 'none', o, pkg)\n })\n\n /**\n * \u521D\u59CB\u5316\u9879\u76EE\n */\n program\n .command('init')\n .description('\u521D\u59CB\u5316 emp \u9879\u76EE')\n // .option('-t, --template <template>', '\u6A21\u7248\u6587\u4EF6URL')\n .option('-d, --data [data]', 'JSON\u6570\u636E http\u5730\u5740 \u6216\u8005 \u6587\u4EF6\u8DEF\u5F84\u76F8\u5BF9\u3001\u7EDD\u5BF9\u8DEF\u5F84')\n .action(o => {\n // exec('init', 'none', o, pkg)\n })\n // \u6267\u884C\u547D\u4EE4\n program.parse(process.argv)\n}\n", "import glob from 'fast-glob'\nimport store from 'src/store'\nimport fs from 'node:fs/promises'\nimport path from 'node:path'\n//\nconst globalImportRE =\n /(?:(?:import|export)\\s?(?:type)?\\s?(?:(?:\\{[^;\\n]+\\})|(?:[^;\\n]+))\\s?from\\s?['\"][^;\\n]+['\"])|(?:import\\(['\"][^;\\n]+?['\"]\\))/g\nconst staticImportRE = /(?:import|export)\\s?(?:type)?\\s?\\{?.+\\}?\\s?from\\s?['\"](.+)['\"]/\nconst dynamicImportRE = /import\\(['\"]([^;\\n]+?)['\"]\\)/\n//\nclass DTSBundle {\n list: string[] = []\n outDir: string = store.resolve('dist')\n aliasName = '@empjs/cli'\n async setup(outDir: string, aliasName: string) {\n if (outDir) this.outDir = outDir\n if (aliasName) this.aliasName = aliasName\n // console.log(`this.outDir`, this.outDir)\n const bs = await this.readDts()\n // console.log('bs', bs)\n await this.writeCode(bs)\n }\n async readDts() {\n this.list = await glob([`${store.empConfig.build.outDir}/**/*.d.ts`])\n const p: any[] = []\n this.list.map(d => {\n d = store.resolve(d)\n // console.log(d)\n p.push(this.readFile(d))\n })\n let bs = await Promise.all(p)\n bs = bs.map(d => this.replaceAliasPath(d))\n // console.log('[Bundle List]', bs)\n // console.log('list', this.list)\n return bs\n }\n async readFile(src: string) {\n const code = await fs.readFile(src, {encoding: 'utf-8'})\n return {src, code}\n }\n replaceAliasPath({src, code}: {src: string; code: string}) {\n code = code.replace(globalImportRE, str => {\n let matchResult = str.match(staticImportRE)\n // console.log('matchResult', matchResult)\n if (!matchResult) {\n matchResult = str.match(dynamicImportRE)\n // console.log('!matchResult', matchResult)\n }\n if (matchResult && matchResult[1]) {\n const rs = matchResult[1]\n if (!rs.startsWith('.')) return str\n\n const filename = path.resolve(path.dirname(src), rs).replace(this.outDir, this.aliasName)\n // console.log('filename', filename, matchResult[1])\n return str.replace(matchResult[1], filename)\n }\n\n return str\n })\n let mod = src.replace(this.outDir, this.aliasName).replace('.d.ts', '')\n if (mod.endsWith('/index')) {\n mod = mod.replace('/index', '')\n }\n // console.log('mod', mod)\n code = this.warpDeclareModule(mod, code)\n // console.log('code', code)\n return {code, src, mod}\n }\n warpDeclareModule(mod: string, code: string) {\n return `declare module '${mod}' {\\r\\n${code}}\\r\\n`\n }\n async writeCode(bs: {src: string; code: string; mod: string}[]) {\n let c = ''\n bs.map(d => {\n c += d.code\n })\n await fs.writeFile(path.join(this.outDir.replace('dist', 'types'), 'type.d.ts'), c)\n }\n}\nexport default new DTSBundle()\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["require", "url", "fs", "path", "require", "HtmlWebpackPlugin", "path", "chalk", "chalk", "https", "fs", "path", "fs", "url", "fs", "chalk", "https", "chalk", "path", "fs", "rspack", "rspack", "express", "path", "fs", "process", "glob", "fs", "path"]
|
|
7
|
-
}
|