@empjs/share 3.3.1-beta.1 → 3.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugins/rspack/share.ts","../src/helper/config.ts","../src/helper/index.ts","../src/plugins/rspack/plugin.ts","../src/plugins/rspack/utils.ts","../src/plugins/rspack/index.ts"],"sourcesContent":["import type {GlobalStore} from '@empjs/cli'\nimport {ModuleFederationPlugin} from '@module-federation/enhanced/rspack'\nimport {shareGlobalName} from 'src/helper/config'\nimport {EmpShareRemoteLibPlugin} from './plugin'\nimport type {EMPPluginShareType, ExternalsItemType, ModuleFederationPluginOptions} from './types'\nimport {getRuntimeLib} from './utils'\nconst exp = /^([0-9a-zA-Z_\\s]+)@(.*)/\nexport class EmpShare {\n private op: EMPPluginShareType\n private store: GlobalStore\n /**\n * 注入资源\n */\n private injectHtml: any[] = []\n /**\n * 兼容 shareLib\n */\n private externalsLib: ExternalsItemType[] = []\n constructor(op: EMPPluginShareType, store: GlobalStore) {\n this.op = op || {}\n this.store = store\n }\n setup() {\n this.setMF() // 设置 MF 配置\n this.injectGlobalVal() // 插入全局变量 方便emp外的项目调用\n this.injectFramework() // 插入ui框架库\n this.setShareLib() //兼容 emp Sharelib的共享模型设置\n this.setRuntimeLib() // 设置 MF SDK\n this.injectToHtml() //触发插入动作\n this.setExternal() // 设置 external 降低包体\n }\n private injectToHtml() {\n const {store, injectHtml} = this\n if (injectHtml.length > 0) {\n store.injectTags(injectHtml, 'EMPShare')\n }\n }\n private injectFramework() {\n if (!this.op.empRuntime || !this.op.empRuntime.frameworkLib) return\n const {store, injectHtml} = this\n const {frameworkLib} = this.op.empRuntime\n if (frameworkLib) {\n const url = getRuntimeLib(frameworkLib, store.mode)\n injectHtml.push({\n attributes: {\n src: url,\n },\n tagName: 'script',\n })\n }\n }\n private injectGlobalVal() {\n if (!this.op.empRuntime) return\n const {empRuntime} = this.op\n const {injectHtml} = this\n empRuntime.framework = Object.hasOwn(empRuntime, 'framework') ? empRuntime.framework : 'react'\n empRuntime.runtimeGlobal = empRuntime.runtimeGlobal || shareGlobalName\n empRuntime.frameworkGlobal = empRuntime.frameworkGlobal || (empRuntime.shareLib ? 'window' : '')\n\n const injectGlobalValToHtml = empRuntime.injectGlobalValToHtml === false ? false : true\n // 插入全局引用变量 让 empRuntime 可以提前实例化 不需要在页面重复实例化\n if (injectGlobalValToHtml) {\n injectHtml.push({\n // type: 'js',\n tagName: 'script',\n innerHTML: `EMPShareGlobalVal={frameworkLib:'${empRuntime.frameworkGlobal}',runtimeLib:'${empRuntime.runtimeGlobal}',framework:'${empRuntime.framework}'}`,\n })\n }\n }\n private setExternal() {\n if (!this.op.empRuntime) return\n const {store, externalsLib} = this\n const {empRuntime} = this.op\n const {framework, shareLib, runtimeGlobal, frameworkGlobal} = empRuntime\n const externalRuntime = {\n '@module-federation/runtime': `MFRuntime`,\n '@module-federation/sdk': `MFSDK`,\n }\n const externals = {}\n for (const [key, value] of Object.entries(externalRuntime)) {\n externals[key] = `${runtimeGlobal}.${value}`\n }\n if (framework === 'react' && !shareLib && frameworkGlobal) {\n const externalReact = {\n react: `React`,\n 'react-dom': `ReactDOM`,\n }\n for (const [key, value] of Object.entries(externalReact)) {\n externals[key] = `${frameworkGlobal}.${value}`\n }\n }\n if (shareLib) {\n externalsLib.map(v => {\n if (v.type === 'js' && v.module && v.global) {\n externals[v.module] = `${frameworkGlobal}.${v.global}`\n }\n })\n }\n if (empRuntime.setExternals) empRuntime.setExternals(externals)\n //\n // console.log('externals in plugin', externals)\n store.chain.merge({externals})\n }\n private setRuntimeLib() {\n if (!this.op.empRuntime) return\n\n const {runtimeLib, shareLib} = this.op.empRuntime\n const {store, injectHtml} = this\n const {empRuntime} = this.op\n if (!runtimeLib) {\n // 内置 runtimeLib\n store.chain.plugin('plugin-emp-share-framework').use(EmpShareRemoteLibPlugin, [empRuntime])\n }\n // 统一封装到 frameworkLib\n else if (runtimeLib === 'useFrameworkLib' && !shareLib) {\n } else {\n // 插入 runtime\n injectHtml.push({tagName: 'script', pos: 'head', attributes: {src: runtimeLib}})\n }\n }\n private setMF() {\n const o = this.op\n const {store} = this\n if (o.name) {\n const op = store.deepAssign<ModuleFederationPluginOptions & {empRuntime: any}>(\n {\n filename: 'emp.js',\n manifest: false,\n dts: false,\n dev: {\n disableDynamicRemoteTypeHints: true,\n },\n },\n o,\n )\n if (op.empRuntime) {\n delete op.empRuntime\n }\n store.chain.plugin('plugin-emp-share').use(ModuleFederationPlugin, [op])\n }\n }\n private setShareLib() {\n if (!this.op.empRuntime) return\n const {shareLib} = this.op.empRuntime\n const {externalsLib, injectHtml} = this\n if (shareLib && typeof shareLib === 'object') {\n for (const [k, v] of Object.entries(shareLib)) {\n let externalsItem: ExternalsItemType = {}\n externalsItem.module = k\n //增加下划线 支持lodash 等特殊符号的问题 如 _@http\n\n if (typeof v === 'string') {\n const cb: any = v.match(exp) || []\n if (cb.length > 0) {\n externalsItem.global = cb[1]\n externalsItem.entry = cb[2]\n externalsItem.type = 'js'\n externalsLib.push(externalsItem)\n externalsItem = {}\n } else {\n externalsItem.global = ''\n externalsItem.entry = v\n externalsItem.type = 'js'\n externalsLib.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(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 externalsLib.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 externalsLib.push(externalsItem)\n externalsItem = {}\n }\n }\n // console.log(externalsLib)\n externalsLib.map(v => {\n if (v.type === 'js') {\n injectHtml.push({\n attributes: {\n src: v.entry,\n },\n tagName: 'script',\n })\n } else if (v.type === 'css') {\n injectHtml.push({\n attributes: {\n href: v.entry,\n rel: 'stylesheet',\n },\n tagName: 'link',\n })\n }\n })\n }\n }\n}\n","export const shareGlobalName = 'EMP_SHARE_RUNTIME'\n","export const importJsVm = (content: string) => `data:text/javascript,${content}`\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 checkVersion = (version: string) => (version ? Number(version.split('.')[0]) : 0)\nexport const isPromise = (p: any) => p && Object.prototype.toString.call(p) === '[object Promise]'\n\n//\nexport const isDev = process.env.EMPSHARE_ENV === 'dev'\nexport const log = isDev ? console.log.bind(console, '[EMP Share]') : () => {}\n","import type {Compiler} from '@rspack/core'\nimport {importJsVm} from 'src/helper'\nimport type {EMPSHARERuntimeOptions} from './types'\nconst getShareRuntimeEntry = url => {\n const content = [`import '${url}'`].join('\\n')\n return importJsVm(content)\n}\nexport class EmpShareRemoteLibPlugin {\n options: EMPSHARERuntimeOptions\n constructor(op: EMPSHARERuntimeOptions) {\n this.options = op\n }\n apply(compiler: Compiler) {\n const {webpack} = compiler\n const {runtimeLib} = this.options\n if (!runtimeLib) {\n const entry = getShareRuntimeEntry('@empjs/share/library')\n new webpack.EntryPlugin(compiler.context, entry, {\n name: undefined,\n }).apply(compiler)\n }\n }\n}\n","import type {EMPSHARERuntimeOptions} from './types'\nexport function getRuntimeLib(host: EMPSHARERuntimeOptions['frameworkLib'], mode: string) {\n if (typeof host === 'string') return `${host}/runtime${mode === 'development' ? '.development' : ''}.umd.js`\n else if (typeof host === 'object') {\n if (mode === 'development') return host.dev\n else return host.prod\n }\n return ''\n}\n","import type {GlobalStore} from '@empjs/cli'\nimport {EmpShare} from './share'\nimport type {EMPPluginShareType} from './types'\nexport const pluginRspackEmpShare = (o: EMPPluginShareType = {}) => {\n return {\n name: '@empjs/share',\n async rsConfig(store: GlobalStore) {\n //\n if (o.manifest === true) {\n o.manifest = {\n fileName: 'emp.json',\n }\n } else if (typeof o.manifest === 'object') {\n o.manifest = store.deepAssign({fileName: 'emp.json'}, o.manifest)\n }\n //\n const empShare = new EmpShare(o, store)\n empShare.setup()\n },\n }\n}\nexport default pluginRspackEmpShare\n"],"mappings":"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","names":["ModuleFederationPlugin","shareGlobalName","importJsVm","content","isDev","log","getShareRuntimeEntry","url","content","importJsVm","EmpShareRemoteLibPlugin","op","compiler","webpack","runtimeLib","entry","getRuntimeLib","host","mode","exp","EmpShare","op","store","injectHtml","frameworkLib","url","getRuntimeLib","empRuntime","shareGlobalName","externalsLib","framework","shareLib","runtimeGlobal","frameworkGlobal","externalRuntime","externals","key","value","externalReact","v","runtimeLib","EmpShareRemoteLibPlugin","o","ModuleFederationPlugin","k","externalsItem","cb","vo","pluginRspackEmpShare","o","store","EmpShare","rspack_default"]}
1
+ {"version":3,"sources":["../src/plugins/rspack/share.ts","../src/helper/config.ts","../src/helper/index.ts","../src/plugins/rspack/plugin.ts","../src/plugins/rspack/utils.ts","../src/plugins/rspack/index.ts"],"sourcesContent":["import type {GlobalStore} from '@empjs/cli'\nimport {ModuleFederationPlugin} from '@module-federation/enhanced/rspack'\nimport {shareGlobalName} from 'src/helper/config'\nimport {EmpShareRemoteLibPlugin} from './plugin'\nimport type {EMPPluginShareType, ExternalsItemType, ModuleFederationPluginOptions} from './types'\nimport {getRuntimeLib} from './utils'\nconst exp = /^([0-9a-zA-Z_\\s]+)@(.*)/\nexport class EmpShare {\n private op: EMPPluginShareType\n private store: GlobalStore\n /**\n * 注入资源\n */\n private injectHtml: any[] = []\n /**\n * 兼容 shareLib\n */\n private externalsLib: ExternalsItemType[] = []\n constructor(op: EMPPluginShareType, store: GlobalStore) {\n this.op = op || {}\n this.store = store\n }\n setup() {\n this.setMfName() //设置 mfName 默认为 uniqueName\n this.setMF() // 设置 MF 配置\n this.injectGlobalVal() // 插入全局变量 方便emp外的项目调用\n this.injectFramework() // 插入ui框架库\n this.setShareLib() //兼容 emp Sharelib的共享模型设置\n this.setRuntimeLib() // 设置 MF SDK\n this.injectToHtml() //触发插入动作\n this.setExternal() // 设置 external 降低包体\n }\n private injectToHtml() {\n const {store, injectHtml} = this\n if (injectHtml.length > 0) {\n store.injectTags(injectHtml, 'EMPShare')\n }\n }\n private injectFramework() {\n if (!this.op.empRuntime || !this.op.empRuntime.frameworkLib) return\n const {store, injectHtml} = this\n const {frameworkLib} = this.op.empRuntime\n if (frameworkLib) {\n const url = getRuntimeLib(frameworkLib, store.mode)\n injectHtml.push({\n attributes: {\n src: url,\n },\n tagName: 'script',\n })\n }\n }\n private injectGlobalVal() {\n if (!this.op.empRuntime) return\n const {empRuntime} = this.op\n const {injectHtml} = this\n empRuntime.framework = Object.hasOwn(empRuntime, 'framework') ? empRuntime.framework : 'react'\n empRuntime.runtimeGlobal = empRuntime.runtimeGlobal || shareGlobalName\n empRuntime.frameworkGlobal = empRuntime.frameworkGlobal || (empRuntime.shareLib ? 'window' : '')\n\n const injectGlobalValToHtml = empRuntime.injectGlobalValToHtml === false ? false : true\n // 插入全局引用变量 让 empRuntime 可以提前实例化 不需要在页面重复实例化\n if (injectGlobalValToHtml) {\n injectHtml.push({\n // type: 'js',\n tagName: 'script',\n innerHTML: `EMPShareGlobalVal={frameworkLib:'${empRuntime.frameworkGlobal}',runtimeLib:'${empRuntime.runtimeGlobal}',framework:'${empRuntime.framework}'}`,\n })\n }\n }\n private setExternal() {\n if (!this.op.empRuntime) return\n const {store, externalsLib} = this\n const {empRuntime} = this.op\n const {framework, shareLib, runtimeGlobal, frameworkGlobal} = empRuntime\n const externalRuntime = {\n '@module-federation/runtime': `MFRuntime`,\n '@module-federation/sdk': `MFSDK`,\n }\n const externals = {}\n for (const [key, value] of Object.entries(externalRuntime)) {\n externals[key] = `${runtimeGlobal}.${value}`\n }\n if (framework === 'react' && !shareLib && frameworkGlobal) {\n const externalReact = {\n react: `React`,\n 'react-dom': `ReactDOM`,\n }\n for (const [key, value] of Object.entries(externalReact)) {\n externals[key] = `${frameworkGlobal}.${value}`\n }\n }\n if (shareLib) {\n externalsLib.map(v => {\n if (v.type === 'js' && v.module && v.global) {\n externals[v.module] = `${frameworkGlobal}.${v.global}`\n }\n })\n }\n if (empRuntime.setExternals) empRuntime.setExternals(externals)\n //\n // console.log('externals in plugin', externals)\n store.chain.merge({externals})\n }\n private setRuntimeLib() {\n if (!this.op.empRuntime) return\n\n const {runtimeLib, shareLib} = this.op.empRuntime\n const {store, injectHtml} = this\n const {empRuntime} = this.op\n if (!runtimeLib) {\n // 内置 runtimeLib\n store.chain.plugin('plugin-emp-share-framework').use(EmpShareRemoteLibPlugin, [empRuntime])\n }\n // 统一封装到 frameworkLib\n else if (runtimeLib === 'useFrameworkLib' && !shareLib) {\n } else {\n // 插入 runtime\n injectHtml.push({tagName: 'script', pos: 'head', attributes: {src: runtimeLib}})\n }\n }\n private setMfName() {\n if (this.op.name) {\n this.op.name = this.store.encodeVarName(this.op.name)\n if (this.op.name !== this.store.empConfig.output.uniqueName) {\n this.store.chain.output.set('uniqueName', this.op.name)\n }\n } else {\n this.op.name = this.store.empConfig.output.uniqueName\n }\n }\n private setMF() {\n const o = this.op\n const {store} = this\n if (o.name) {\n const op = store.deepAssign<ModuleFederationPluginOptions & {empRuntime: any}>(\n {\n filename: 'emp.js',\n manifest: false,\n dts: false,\n dev: {\n disableDynamicRemoteTypeHints: true,\n },\n },\n o,\n )\n if (op.empRuntime) {\n delete op.empRuntime\n }\n store.chain.plugin('plugin-emp-share').use(ModuleFederationPlugin, [op])\n }\n }\n private setShareLib() {\n if (!this.op.empRuntime) return\n const {shareLib} = this.op.empRuntime\n const {externalsLib, injectHtml} = this\n if (shareLib && typeof shareLib === 'object') {\n for (const [k, v] of Object.entries(shareLib)) {\n let externalsItem: ExternalsItemType = {}\n externalsItem.module = k\n //增加下划线 支持lodash 等特殊符号的问题 如 _@http\n\n if (typeof v === 'string') {\n const cb: any = v.match(exp) || []\n if (cb.length > 0) {\n externalsItem.global = cb[1]\n externalsItem.entry = cb[2]\n externalsItem.type = 'js'\n externalsLib.push(externalsItem)\n externalsItem = {}\n } else {\n externalsItem.global = ''\n externalsItem.entry = v\n externalsItem.type = 'js'\n externalsLib.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(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 externalsLib.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 externalsLib.push(externalsItem)\n externalsItem = {}\n }\n }\n // console.log(externalsLib)\n externalsLib.map(v => {\n if (v.type === 'js') {\n injectHtml.push({\n attributes: {\n src: v.entry,\n },\n tagName: 'script',\n })\n } else if (v.type === 'css') {\n injectHtml.push({\n attributes: {\n href: v.entry,\n rel: 'stylesheet',\n },\n tagName: 'link',\n })\n }\n })\n }\n }\n}\n","export const shareGlobalName = 'EMP_SHARE_RUNTIME'\n","export const importJsVm = (content: string) => `data:text/javascript,${content}`\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 checkVersion = (version: string) => (version ? Number(version.split('.')[0]) : 0)\nexport const isPromise = (p: any) => p && Object.prototype.toString.call(p) === '[object Promise]'\n\n//\nexport const isDev = process.env.EMPSHARE_ENV === 'dev'\nexport const log = isDev ? console.log.bind(console, '[EMP Share]') : () => {}\n","import type {Compiler} from '@rspack/core'\nimport {importJsVm} from 'src/helper'\nimport type {EMPSHARERuntimeOptions} from './types'\nconst getShareRuntimeEntry = url => {\n const content = [`import '${url}'`].join('\\n')\n return importJsVm(content)\n}\nexport class EmpShareRemoteLibPlugin {\n options: EMPSHARERuntimeOptions\n constructor(op: EMPSHARERuntimeOptions) {\n this.options = op\n }\n apply(compiler: Compiler) {\n const {webpack} = compiler\n const {runtimeLib} = this.options\n if (!runtimeLib) {\n const entry = getShareRuntimeEntry('@empjs/share/library')\n new webpack.EntryPlugin(compiler.context, entry, {\n name: undefined,\n }).apply(compiler)\n }\n }\n}\n","import type {EMPSHARERuntimeOptions} from './types'\nexport function getRuntimeLib(host: EMPSHARERuntimeOptions['frameworkLib'], mode: string) {\n if (typeof host === 'string') return `${host}/runtime${mode === 'development' ? '.development' : ''}.umd.js`\n else if (typeof host === 'object') {\n if (mode === 'development') return host.dev\n else return host.prod\n }\n return ''\n}\n","import type {GlobalStore} from '@empjs/cli'\nimport {EmpShare} from './share'\nimport type {EMPPluginShareType} from './types'\nexport const pluginRspackEmpShare = (o: EMPPluginShareType = {}) => {\n return {\n name: '@empjs/share',\n async rsConfig(store: GlobalStore) {\n //\n if (o.manifest === true) {\n o.manifest = {\n fileName: 'emp.json',\n }\n } else if (typeof o.manifest === 'object') {\n o.manifest = store.deepAssign({fileName: 'emp.json'}, o.manifest)\n }\n const empShare = new EmpShare(o, store)\n empShare.setup()\n },\n }\n}\nexport default pluginRspackEmpShare\n"],"mappings":"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","names":["ModuleFederationPlugin","shareGlobalName","importJsVm","content","isDev","log","getShareRuntimeEntry","url","content","importJsVm","EmpShareRemoteLibPlugin","op","compiler","webpack","runtimeLib","entry","getRuntimeLib","host","mode","exp","EmpShare","op","store","injectHtml","frameworkLib","url","getRuntimeLib","empRuntime","shareGlobalName","externalsLib","framework","shareLib","runtimeGlobal","frameworkGlobal","externalRuntime","externals","key","value","externalReact","v","runtimeLib","EmpShareRemoteLibPlugin","o","ModuleFederationPlugin","k","externalsItem","cb","vo","pluginRspackEmpShare","o","store","EmpShare","rspack_default"]}