@tarojs/plugin-framework-react 4.0.0-canary.9 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +8 -8
- package/dist/api-loader.js.map +1 -1
- package/dist/index.js +90 -141
- package/dist/index.js.map +1 -1
- package/dist/runtime.js +108 -42
- package/dist/runtime.js.map +1 -1
- package/package.json +36 -36
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/api-loader.ts","../src/loader-meta.ts","../src/vite.h5.ts","../src/vite.harmony.ts","../src/vite.mini.ts","../src/webpack.h5.ts","../src/webpack.harmony.ts","../src/webpack.mini.ts","../src/index.ts"],"sourcesContent":["export default function (str: string) {\n return `import {\n useAddToFavorites,\n useDidHide,\n useDidShow,\n useError,\n useLaunch,\n useLoad,\n useOptionMenuClick,\n usePageNotFound,\n usePageScroll,\n usePullDownRefresh,\n usePullIntercept,\n useReachBottom,\n useReady,\n useResize,\n useRouter,\n useSaveExitState,\n useShareAppMessage,\n useShareTimeline,\n useTabItemTap,\n useTitleClick,\n useScope,\n useUnhandledRejection,\n useUnload\n} from '@tarojs/plugin-framework-react/dist/runtime'\n${str}\n\ntaro.useAddToFavorites = useAddToFavorites\ntaro.useDidHide = useDidHide\ntaro.useDidShow = useDidShow\ntaro.useError = useError\ntaro.useLaunch = useLaunch\ntaro.useLoad = useLoad\ntaro.useOptionMenuClick = useOptionMenuClick\ntaro.usePageNotFound = usePageNotFound\ntaro.usePageScroll = usePageScroll\ntaro.usePullDownRefresh = usePullDownRefresh\ntaro.usePullIntercept = usePullIntercept\ntaro.useReachBottom = useReachBottom\ntaro.useReady = useReady\ntaro.useResize = useResize\ntaro.useRouter = useRouter\ntaro.useSaveExitState = useSaveExitState\ntaro.useShareAppMessage = useShareAppMessage\ntaro.useShareTimeline = useShareTimeline\ntaro.useTabItemTap = useTabItemTap\ntaro.useTitleClick = useTitleClick\ntaro.useScope = useScope\ntaro.useUnhandledRejection = useUnhandledRejection\ntaro.useUnload = useUnload\n\nexport {\n useAddToFavorites,\n useDidHide,\n useDidShow,\n useError,\n useLaunch,\n useLoad,\n useOptionMenuClick,\n usePageNotFound,\n usePageScroll,\n usePullDownRefresh,\n usePullIntercept,\n useReachBottom,\n useReady,\n useResize,\n useRouter,\n useSaveExitState,\n useShareAppMessage,\n useShareTimeline,\n useTabItemTap,\n useTitleClick,\n useScope,\n useUnhandledRejection,\n useUnload\n}\n`\n}\n","import * as acorn from 'acorn'\nimport * as walk from 'acorn-walk'\n\nimport { Frameworks } from './index'\n\nimport type { ILoaderMeta } from '@tarojs/taro/types/compile/config/plugin'\n\nfunction addConfig (source) {\n const configsMap = {\n enableShareAppMessage: ['onShareAppMessage', 'useShareAppMessage'],\n enableShareTimeline: ['onShareTimeline', 'useShareTimeline']\n }\n const ast = acorn.parse(source, {\n ecmaVersion: 'latest',\n sourceType: 'module'\n })\n\n const additionConfig: Record<string, any> = {}\n\n function check (name: string) {\n Object.keys(configsMap).forEach(configName => {\n const apis: string[] = configsMap[configName]\n if (apis.includes(name)) {\n additionConfig[configName] = true\n }\n })\n }\n\n walk.simple(ast, {\n FunctionExpression (node: any) {\n if (!node.id || !node.id.name) return\n check(node.id.name)\n },\n FunctionDeclaration (node: any) {\n if (!node.id || !node.id.name) return\n check(node.id.name)\n },\n CallExpression (node: any) {\n const { callee } = node\n if (callee.type === 'Identifier') {\n check(callee.name)\n } else if (callee.type === 'MemberExpression') {\n if (callee.property.type === 'Identifier') {\n check(callee.property.name)\n } else if (callee.property.type === 'Literal') {\n check(callee.property.value)\n }\n }\n node.arguments.forEach(item => {\n if (item.type === 'Literal' && item.value) {\n check(item.value)\n }\n })\n }\n })\n\n return additionConfig\n}\n\nconst nervMeta = {\n importFrameworkStatement: `\nimport Nerv from 'nervjs';\n`,\n mockAppStatement: `\nclass App extends Nerv.Component {\n render () {\n return this.props.children\n }\n}\n`,\n frameworkArgs: 'Nerv, Nerv, config',\n importFrameworkName: 'Nerv'\n}\n\nexport function getLoaderMeta (framework: Frameworks): ILoaderMeta {\n const loaderMeta = {\n importFrameworkStatement: `\nimport * as React from 'react'\nimport ReactDOM from 'react-dom'\n`,\n mockAppStatement: `\nclass App extends React.Component {\n render () {\n return this.props.children\n }\n}\n`,\n frameworkArgs: 'React, ReactDOM, config',\n creator: 'createReactApp',\n creatorLocation: '@tarojs/plugin-framework-react/dist/runtime',\n importFrameworkName: 'React',\n extraImportForWeb: '',\n execBeforeCreateWebApp: '',\n modifyConfig (config, source) {\n Object.assign(config, addConfig(source))\n }\n }\n if (framework === 'nerv') {\n Object.assign(loaderMeta, nervMeta)\n }\n\n if (process.env.TARO_PLATFORM === 'web') {\n if (framework === 'react') {\n const react = require('react')\n const majorVersion = Number((react.version || '18').split('.')[0])\n if ( majorVersion >= 18) {\n // Note: In react 18 or above, should using react-dom/client\n loaderMeta.importFrameworkStatement = loaderMeta.importFrameworkStatement.replace('\\'react-dom\\'', '\\'react-dom/client\\'')\n loaderMeta.extraImportForWeb += `import { findDOMNode, render, unstable_batchedUpdates } from 'react-dom'\\n`\n loaderMeta.execBeforeCreateWebApp += `Object.assign(ReactDOM, { findDOMNode, render, unstable_batchedUpdates })\\n`\n }\n }\n }\n return loaderMeta\n}\n","import { fs, REG_TARO_H5_RUNTIME_API } from '@tarojs/helper'\nimport { mergeWith } from 'lodash'\n\nimport apiLoader from './api-loader'\nimport { getLoaderMeta } from './loader-meta'\n\nimport type { IPluginContext } from '@tarojs/service'\nimport type { PluginOption } from 'vite'\nimport type { Frameworks } from './index'\n\nexport function h5iVitePlugin (ctx: IPluginContext, framework: Frameworks): PluginOption {\n return [\n injectLoaderMeta(ctx, framework),\n setTaroApi(),\n esbuildExclude(framework)\n ]\n}\n\nfunction injectLoaderMeta (ctx: IPluginContext, framework: Frameworks): PluginOption {\n function customizer (object = '', sources = '') {\n if ([object, sources].every(e => typeof e === 'string')) return object + sources\n }\n const { runnerUtils } = ctx\n const { getViteH5CompilerContext } = runnerUtils\n return {\n name: 'taro-react:loader-meta',\n async buildStart () {\n const viteCompilerContext = await getViteH5CompilerContext(this)\n if (viteCompilerContext) {\n viteCompilerContext.loaderMeta = mergeWith(\n getLoaderMeta(framework), viteCompilerContext.loaderMeta, customizer\n )\n }\n }\n }\n}\n\nfunction setTaroApi (): PluginOption {\n // dev 环境通过 esbuild 来做; pro 环境通过 rollup load 钩子来做;因为生产环境不会走 esbuild\n return {\n name: 'taro-react:process-import-taro',\n enforce: 'pre',\n config: () => ({\n optimizeDeps: {\n force: true,\n esbuildOptions: {\n plugins: [\n {\n name: 'taro:react-api',\n setup (build) {\n build.onLoad({ filter: REG_TARO_H5_RUNTIME_API }, async (args) => {\n const input = await fs.readFile(args.path, 'utf8')\n return {\n contents: apiLoader(input + '\\n' + 'const taro = Taro__default\\n')\n }\n })\n },\n }\n ]\n }\n },\n }),\n async load (id) {\n if (process.env.NODE_ENV === 'production' && REG_TARO_H5_RUNTIME_API.test(id)) {\n try {\n const input = await fs.readFile(id, 'utf8')\n return apiLoader(input + '\\n' + 'const taro = Taro__default\\n')\n } catch (_) {\n return null\n }\n }\n }\n }\n}\n\n// todo 后面看看能否把 preact 改为虚拟模块\nfunction esbuildExclude (framework: Frameworks): PluginOption {\n if (framework !== 'preact') return null\n return {\n name: 'taro-react:esvuild-exclude',\n enforce: 'pre',\n config: ()=>({\n optimizeDeps: {\n exclude: ['react', 'preact']\n }\n })\n }\n}\n","import { fs } from '@tarojs/helper'\n\nimport { getLoaderMeta } from './loader-meta'\n\nimport type { IPluginContext } from '@tarojs/service'\nimport type { PluginOption } from 'vite'\nimport type { Frameworks } from './index'\n\nexport function harmonyVitePlugin (ctx: IPluginContext, framework: Frameworks): PluginOption {\n return [\n injectLoaderMeta(ctx, framework),\n aliasPlugin(ctx, framework),\n ]\n}\n\nfunction injectLoaderMeta (ctx: IPluginContext, framework: Frameworks): PluginOption {\n return {\n name: 'taro-react:loader-meta',\n buildStart () {\n const { runnerUtils } = ctx\n const { getViteHarmonyCompilerContext } = runnerUtils\n const viteCompilerContext = getViteHarmonyCompilerContext(this)\n if (viteCompilerContext) {\n viteCompilerContext.loaderMeta = getLoaderMeta(framework)\n }\n }\n }\n}\n\nfunction aliasPlugin (ctx: IPluginContext, framework: Frameworks): PluginOption {\n if (framework === 'react') {\n return {\n name: 'taro-react:alias',\n config (config) {\n const alias: ({ find: string | RegExp, replacement: string })[] = [\n { find: /react-dom$/, replacement: '@tarojs/react' }\n ]\n\n const isProd = config.mode === 'production'\n // TODO:harmony 目前会导致部分包用 production 版本,部分用 development 版本,导致许多 api 报错\n const isHarmony = ctx.runOpts.options.platform === 'harmony'\n if (!isProd && ctx.initialConfig.harmony?.debugReact !== true && !isHarmony) {\n // 不是生产环境,且没有设置 debugReact,则使用压缩版本的 react 依赖,减少体积\n alias.push({ find: /react-reconciler$/, replacement: 'react-reconciler/cjs/react-reconciler.production.min.js' })\n alias.push({ find: /react$/, replacement: 'react/cjs/react.production.min.js' })\n alias.push({ find: /scheduler$/, replacement: 'scheduler/cjs/scheduler.production.min.js' })\n alias.push({ find: /react\\/jsx-runtime$/, replacement: 'react/cjs/react-jsx-runtime.production.min.js' })\n\n // 在React18中,使用了exports字段约定了模块暴露路径,其中并未暴露 ./cjs/ 。这将使上面的alias在编译时报错。相当的tricky。\n // Why writeJson? prebundle will load package.json via readFile to check exports property.\n const reactPkgPath = require.resolve('react/package.json', { paths: [process.cwd()] })\n if (reactPkgPath) {\n const reactPkg = require('react/package.json')\n const reactVersion = (reactPkg.version || '')\n if ((/^[~^]?18/).test(reactVersion) && reactPkg.exports) {\n reactPkg.exports = Object.assign(reactPkg.exports, {\n './cjs/': './cjs/'\n })\n fs.writeJsonSync(reactPkgPath, reactPkg, { spaces: 2 })\n }\n }\n }\n\n return {\n resolve: {\n alias\n }\n }\n }\n }\n }\n return []\n}\n","import { fs } from '@tarojs/helper'\n\nimport { getLoaderMeta } from './loader-meta'\n\nimport type { IPluginContext } from '@tarojs/service'\nimport type { PluginOption } from 'vite'\nimport type { Frameworks } from './index'\n\nexport function miniVitePlugin (ctx: IPluginContext, framework: Frameworks): PluginOption {\n return [\n injectLoaderMeta(ctx, framework),\n aliasPlugin(ctx, framework),\n ]\n}\n\nfunction injectLoaderMeta (ctx: IPluginContext, framework: Frameworks): PluginOption {\n return {\n name: 'taro-react:loader-meta',\n buildStart () {\n const { runnerUtils } = ctx\n const { getViteMiniCompilerContext } = runnerUtils\n const viteCompilerContext = getViteMiniCompilerContext(this)\n if (viteCompilerContext) {\n viteCompilerContext.loaderMeta = getLoaderMeta(framework)\n }\n }\n }\n}\n\nfunction aliasPlugin (ctx: IPluginContext, framework: Frameworks): PluginOption {\n if (framework === 'react') {\n return {\n name: 'taro-react:alias',\n config (config) {\n const alias: ({ find: string | RegExp, replacement: string })[] = [\n { find: /react-dom$/, replacement: '@tarojs/react' }\n ]\n\n const isProd = config.mode === 'production'\n // TODO:harmony 目前会导致部分包用 production 版本,部分用 development 版本,导致许多 api 报错\n const isHarmony = ctx.runOpts.options.platform === 'harmony'\n if (!isProd && ctx.initialConfig.mini?.debugReact !== true && !isHarmony) {\n // 不是生产环境,且没有设置 debugReact,则使用压缩版本的 react 依赖,减少体积\n alias.push({ find: /react-reconciler$/, replacement: 'react-reconciler/cjs/react-reconciler.production.min.js' })\n alias.push({ find: /^(?!.*mobx-react$).*react$/, replacement: 'react/cjs/react.production.min.js' })\n alias.push({ find: /scheduler$/, replacement: 'scheduler/cjs/scheduler.production.min.js' })\n alias.push({ find: /react\\/jsx-runtime$/, replacement: 'react/cjs/react-jsx-runtime.production.min.js' })\n\n // 在React18中,使用了exports字段约定了模块暴露路径,其中并未暴露 ./cjs/ 。这将使上面的alias在编译时报错。相当的tricky。\n // Why writeJson? prebundle will load package.json via readFile to check exports property.\n const reactPkgPath = require.resolve('react/package.json', { paths: [process.cwd()] })\n if (reactPkgPath) {\n const reactPkg = require('react/package.json')\n const reactVersion = (reactPkg.version || '')\n if ((/^[~^]?18/).test(reactVersion) && reactPkg.exports) {\n reactPkg.exports = Object.assign(reactPkg.exports, {\n './cjs/': './cjs/'\n })\n fs.writeJsonSync(reactPkgPath, reactPkg, { spaces: 2 })\n }\n }\n }\n\n return {\n resolve: {\n alias\n }\n }\n }\n }\n }\n return []\n}\n","import { REG_TARO_H5 } from '@tarojs/helper'\nimport { mergeWith } from 'lodash'\n\nimport { getLoaderMeta } from './loader-meta'\n\nimport type { IPluginContext } from '@tarojs/service'\nimport type Chain from 'webpack-chain'\nimport type { Frameworks } from './index'\n\nexport function modifyH5WebpackChain (ctx: IPluginContext, framework: Frameworks, chain: Chain) {\n setLoader(framework, chain)\n setPlugin(ctx, framework, chain)\n\n const { isBuildNativeComp = false } = ctx.runOpts?.options || {}\n const externals: Record<string, string> = {}\n if (isBuildNativeComp) {\n // Note: 该模式不支持 prebundle 优化,不必再处理\n externals.react = 'React'\n externals['react-dom'] = 'ReactDOM'\n if (framework === 'preact') {\n externals.preact = 'preact'\n }\n }\n\n chain.merge({\n externals,\n module: {\n rule: {\n 'process-import-taro-h5': {\n test: REG_TARO_H5,\n loader: require.resolve('./api-loader'),\n },\n },\n },\n })\n\n chain.merge({\n externals,\n module: {\n rule: {\n 'process-import-taro-harmony-hybrid': {\n test: /taro-platform-harmony-hybrid[\\\\/]dist[\\\\/]api[\\\\/]apis[\\\\/]taro/,\n loader: require.resolve('./api-loader')\n }\n }\n },\n })\n\n chain.merge({\n externals,\n module: {\n rule: {\n 'process-import-taro-harmony-hybrid': {\n test: /taro-platform-harmony-hybrid[\\\\/]dist[\\\\/]api[\\\\/]apis[\\\\/]taro/,\n loader: require.resolve('./api-loader')\n }\n }\n },\n })\n}\n\nfunction setLoader(framework: Frameworks, chain) {\n function customizer(object = '', sources = '') {\n if ([object, sources].every((e) => typeof e === 'string')) return object + sources\n }\n chain.plugin('mainPlugin').tap((args) => {\n args[0].loaderMeta = mergeWith(getLoaderMeta(framework), args[0].loaderMeta, customizer)\n return args\n })\n}\n\nfunction setPlugin(ctx: IPluginContext, framework: Frameworks, chain) {\n const config = ctx.initialConfig\n const webpackConfig = chain.toConfig()\n const isProd = webpackConfig.mode === 'production'\n if (!isProd && config.h5?.devServer?.hot !== false) {\n // 默认开启 fast-refresh\n if (framework === 'react') {\n chain.plugin('fastRefreshPlugin').use(require('@pmmmwh/react-refresh-webpack-plugin'))\n } else if (framework === 'preact') {\n chain.plugin('hotModuleReplacementPlugin').use(require('webpack').HotModuleReplacementPlugin)\n chain.plugin('fastRefreshPlugin').use(require('@prefresh/webpack'))\n }\n }\n}\n","import { fs } from '@tarojs/helper'\nimport path from 'path'\n\nimport { getLoaderMeta } from './loader-meta'\n\nimport type { IPluginContext } from '@tarojs/service'\nimport type { Frameworks } from './index'\n\nexport function modifyHarmonyWebpackChain (ctx: IPluginContext, framework: Frameworks, chain) {\n setAlias(ctx, framework, chain)\n setLoader(framework, chain)\n}\n\nfunction setAlias (ctx: IPluginContext, framework: Frameworks, chain) {\n const config = ctx.initialConfig\n const alias = chain.resolve.alias\n\n if (framework === 'react') {\n alias.set('react-dom$', '@tarojs/react')\n alias.set('react-dom/client$', '@tarojs/react')\n const webpackConfig = chain.toConfig()\n const isProd = webpackConfig.mode === 'production'\n if (!isProd && config.harmony?.debugReact !== true) {\n // 不是生产环境,且没有设置 debugReact,则使用压缩版本的 react 依赖,减少体积\n // 兼容pnpm workspace\n const reactModulePath = require.resolve('react', { paths: [process.cwd()] })\n const newFilePath = path.join(path.dirname(reactModulePath), 'cjs', 'react.production.min.js')\n\n alias.set('react-reconciler$', 'react-reconciler/cjs/react-reconciler.production.min.js')\n alias.set('react$', newFilePath)\n alias.set('react/jsx-runtime$', 'react/cjs/react-jsx-runtime.production.min.js')\n\n // 在React18中,使用了exports字段约定了模块暴露路径,其中并未暴露 ./cjs/ 。这将使上面的alias在编译时报错。相当的tricky。\n // Why writeJson? prebundle will load package.json via readFile to check exports property.\n const reactPkgPath = require.resolve('react/package.json', { paths: [process.cwd()] })\n if (reactPkgPath) {\n const reactPkg = require('react/package.json')\n const reactVersion = reactPkg.version || ''\n if (/^[~^]?18/.test(reactVersion) && reactPkg.exports) {\n reactPkg.exports = Object.assign(reactPkg.exports, {\n './cjs/': './cjs/',\n })\n fs.writeJsonSync(reactPkgPath, reactPkg, { spaces: 2 })\n }\n }\n }\n }\n}\n\nfunction setLoader (framework: Frameworks, chain) {\n chain.plugin('mainPlugin').tap((args) => {\n args[0].loaderMeta = getLoaderMeta(framework)\n return args\n })\n}\n","import { fs } from '@tarojs/helper'\nimport path from 'path'\n\nimport { getLoaderMeta } from './loader-meta'\n\nimport type { IPluginContext } from '@tarojs/service'\nimport type { Frameworks } from './index'\n\nexport function modifyMiniWebpackChain (ctx: IPluginContext, framework: Frameworks, chain) {\n setAlias(ctx, framework, chain)\n setLoader(framework, chain)\n}\n\nfunction setAlias (ctx: IPluginContext, framework: Frameworks, chain) {\n const config = ctx.initialConfig\n const alias = chain.resolve.alias\n\n if (framework === 'react') {\n alias.set('react-dom$', '@tarojs/react')\n alias.set('react-dom/client$', '@tarojs/react')\n const webpackConfig = chain.toConfig()\n const isProd = webpackConfig.mode === 'production'\n if (!isProd && config.mini?.debugReact !== true) {\n // 不是生产环境,且没有设置 debugReact,则使用压缩版本的 react 依赖,减少体积\n // 兼容pnpm workspace\n const reactModulePath = require.resolve('react', { paths: [process.cwd()] })\n const newFilePath = path.join(path.dirname(reactModulePath), 'cjs', 'react.production.min.js')\n\n alias.set('react-reconciler$', 'react-reconciler/cjs/react-reconciler.production.min.js')\n alias.set(/^(?!.*mobx-react$).*react$/, newFilePath)\n alias.set('react/jsx-runtime$', 'react/cjs/react-jsx-runtime.production.min.js')\n\n // 在React18中,使用了exports字段约定了模块暴露路径,其中并未暴露 ./cjs/ 。这将使上面的alias在编译时报错。相当的tricky。\n // Why writeJson? prebundle will load package.json via readFile to check exports property.\n const reactPkgPath = require.resolve('react/package.json', { paths: [process.cwd()] })\n if (reactPkgPath) {\n const reactPkg = require('react/package.json')\n const reactVersion = reactPkg.version || ''\n if (/^[~^]?18/.test(reactVersion) && reactPkg.exports) {\n reactPkg.exports = Object.assign(reactPkg.exports, {\n './cjs/': './cjs/',\n })\n fs.writeJsonSync(reactPkgPath, reactPkg, { spaces: 2 })\n }\n }\n }\n }\n}\n\nfunction setLoader (framework: Frameworks, chain) {\n chain.plugin('miniPlugin').tap((args) => {\n args[0].loaderMeta = getLoaderMeta(framework)\n return args\n })\n}\n","import { fs, REG_TARO_H5 } from '@tarojs/helper'\nimport { isString } from '@tarojs/shared'\n\nimport { h5iVitePlugin } from './vite.h5'\nimport { harmonyVitePlugin } from './vite.harmony'\nimport { miniVitePlugin } from './vite.mini'\nimport { modifyH5WebpackChain } from './webpack.h5'\nimport { modifyHarmonyWebpackChain } from './webpack.harmony'\nimport { modifyMiniWebpackChain } from './webpack.mini'\n\nimport type { esbuild } from '@tarojs/helper'\nimport type { IPluginContext } from '@tarojs/service'\nimport type { IProjectConfig } from '@tarojs/taro/types/compile'\nimport type { PluginOption } from 'vite'\n\nexport type Frameworks = 'react' | 'preact' | 'nerv'\n\nexport function isReactLike(framework: IProjectConfig['framework'] = 'react'): framework is Frameworks {\n return ['react', 'preact', 'nerv', 'solid'].includes(framework)\n}\n\nexport default (ctx: IPluginContext) => {\n const { framework = 'react' } = ctx.initialConfig\n\n if (!isReactLike(framework)) return\n\n ctx.modifyWebpackChain(({ chain }) => {\n // 通用\n setAlias(framework, chain)\n chain.plugin('definePlugin').tap((args) => {\n const config = args[0]\n config.__TARO_FRAMEWORK__ = `\"${framework}\"`\n return args\n })\n\n if (process.env.TARO_PLATFORM === 'web') {\n // H5\n modifyH5WebpackChain(ctx, framework, chain)\n } else if (process.env.TARO_PLATFORM === 'harmony' || process.env.TARO_ENV === 'harmony') {\n // 鸿蒙\n modifyHarmonyWebpackChain(ctx, framework, chain)\n } else {\n // 小程序\n modifyMiniWebpackChain(ctx, framework, chain)\n }\n })\n\n ctx.modifyRunnerOpts(({ opts }) => {\n if (!opts?.compiler) return\n\n if (isString(opts.compiler)) {\n opts.compiler = {\n type: opts.compiler,\n }\n }\n\n const { compiler } = opts\n if (compiler.type === 'webpack5') {\n // 提供给 webpack5 依赖预编译收集器的第三方依赖\n const deps = ['react', 'react-dom', 'react/jsx-runtime', '@tarojs/plugin-framework-react/dist/runtime']\n compiler.prebundle ||= {}\n const prebundleOptions = compiler.prebundle\n prebundleOptions.include ||= []\n prebundleOptions.include = prebundleOptions.include.concat(deps)\n prebundleOptions.exclude ||= []\n prebundleOptions.exclude.push(/mobx/) // 依赖会对 webpack 修改,默认排除\n if (prebundleOptions.enable === false) return\n\n const taroReactPlugin: esbuild.Plugin = {\n name: 'taroReactPlugin',\n setup(build) {\n build.onLoad({ filter: REG_TARO_H5 }, ({ path }) => {\n const content = fs.readFileSync(path).toString()\n return {\n contents: require('./api-loader')(content),\n }\n })\n build.onLoad({ filter: /taro-platform-harmony-hybrid[\\\\/]dist[\\\\/]api[\\\\/]apis[\\\\/]taro/ }, ({ path }) => {\n const content = fs.readFileSync(path).toString()\n return {\n contents: require('./api-loader')(content)\n }\n })\n },\n }\n\n prebundleOptions.esbuild ||= {}\n const esbuildConfig = prebundleOptions.esbuild\n esbuildConfig.plugins ||= []\n esbuildConfig.plugins.push(taroReactPlugin)\n } else if (compiler.type === 'vite') {\n compiler.vitePlugins ||= []\n compiler.vitePlugins.push(viteCommonPlugin(framework))\n compiler.vitePlugins.push(VitePresetPlugin(framework))\n if (process.env.TARO_PLATFORM === 'web') {\n // H5\n compiler.vitePlugins.push(h5iVitePlugin(ctx, framework))\n } else if (process.env.TARO_PLATFORM === 'harmony' || process.env.TARO_ENV === 'harmony') {\n // 鸿蒙\n compiler.vitePlugins.push(harmonyVitePlugin(ctx, framework))\n } else {\n // 小程序\n compiler.vitePlugins.push(miniVitePlugin(ctx, framework))\n }\n }\n })\n}\n\nfunction setAlias(framework: Frameworks, chain) {\n const alias = chain.resolve.alias\n\n switch (framework) {\n case 'preact':\n alias.set('react', 'preact/compat')\n alias.set('react-dom/test-utils', 'preact/test-utils')\n alias.set('react-dom', 'preact/compat')\n alias.set('react/jsx-runtime', 'preact/jsx-runtime')\n break\n case 'nerv':\n alias.set('react$', 'nervjs')\n alias.set('react-dom$', 'nervjs')\n break\n }\n}\n\nfunction VitePresetPlugin (framework: Frameworks): PluginOption {\n return framework === 'preact'\n ? require('@preact/preset-vite').preact({\n babel: {\n plugins: [\n ['@babel/plugin-proposal-decorators', { legacy: true }],\n ['@babel/plugin-proposal-class-properties', { loose: true }],\n ],\n },\n })\n : require('@vitejs/plugin-react').default({\n babel: {\n plugins: [\n ['@babel/plugin-proposal-decorators', { legacy: true }],\n ['@babel/plugin-proposal-class-properties', { loose: true }],\n ],\n },\n })\n}\n\nfunction viteCommonPlugin(framework: Frameworks): PluginOption {\n return {\n name: 'taro-react:common',\n config() {\n const alias =\n framework === 'preact'\n ? [\n { find: 'react', replacement: 'preact/compat' },\n { find: 'react-dom/test-utils', replacement: 'preact/test-utils' },\n { find: 'react-dom', replacement: 'preact/compat' },\n { find: 'react/jsx-runtime', replacement: 'preact/jsx-runtime' },\n ]\n : []\n\n return {\n optimizeDeps:{\n esbuildOptions:{\n define: {\n __TARO_FRAMEWORK__: `\"${framework}\"`\n }\n }\n },\n define: {\n __TARO_FRAMEWORK__: `\"${framework}\"`,\n },\n resolve: {\n alias,\n },\n }\n },\n }\n}\n"],"names":["acorn","walk","injectLoaderMeta","mergeWith","REG_TARO_H5_RUNTIME_API","fs","aliasPlugin","setLoader","REG_TARO_H5","setAlias","isString"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/api-loader.ts","../src/loader-meta.ts","../src/vite.h5.ts","../src/vite.harmony.ts","../src/vite.mini.ts","../src/webpack.h5.ts","../src/webpack.harmony.ts","../src/webpack.mini.ts","../src/index.ts"],"sourcesContent":["export default function (str: string) {\n return `import {\n useAddToFavorites,\n useDidHide,\n useDidShow,\n useError,\n useLaunch,\n useLoad,\n useOptionMenuClick,\n usePageNotFound,\n usePageScroll,\n usePullDownRefresh,\n usePullIntercept,\n useReachBottom,\n useReady,\n useResize,\n useRouter,\n useSaveExitState,\n useShareAppMessage,\n useShareTimeline,\n useTabItemTap,\n useTitleClick,\n useScope,\n useUnhandledRejection,\n useUnload\n} from '@tarojs/plugin-framework-react/dist/runtime'\n${str}\n\ntaro.useAddToFavorites = useAddToFavorites\ntaro.useDidHide = useDidHide\ntaro.useDidShow = useDidShow\ntaro.useError = useError\ntaro.useLaunch = useLaunch\ntaro.useLoad = useLoad\ntaro.useOptionMenuClick = useOptionMenuClick\ntaro.usePageNotFound = usePageNotFound\ntaro.usePageScroll = usePageScroll\ntaro.usePullDownRefresh = usePullDownRefresh\ntaro.usePullIntercept = usePullIntercept\ntaro.useReachBottom = useReachBottom\ntaro.useReady = useReady\ntaro.useResize = useResize\ntaro.useRouter = useRouter\ntaro.useSaveExitState = useSaveExitState\ntaro.useShareAppMessage = useShareAppMessage\ntaro.useShareTimeline = useShareTimeline\ntaro.useTabItemTap = useTabItemTap\ntaro.useTitleClick = useTitleClick\ntaro.useScope = useScope\ntaro.useUnhandledRejection = useUnhandledRejection\ntaro.useUnload = useUnload\n\nexport {\n useAddToFavorites,\n useDidHide,\n useDidShow,\n useError,\n useLaunch,\n useLoad,\n useOptionMenuClick,\n usePageNotFound,\n usePageScroll,\n usePullDownRefresh,\n usePullIntercept,\n useReachBottom,\n useReady,\n useResize,\n useRouter,\n useSaveExitState,\n useShareAppMessage,\n useShareTimeline,\n useTabItemTap,\n useTitleClick,\n useScope,\n useUnhandledRejection,\n useUnload\n}\n`\n}\n","import * as acorn from 'acorn'\nimport * as walk from 'acorn-walk'\n\nimport { Frameworks } from './index'\n\nimport type { ILoaderMeta } from '@tarojs/taro/types/compile/config/plugin'\n\nfunction addConfig (source) {\n const configsMap = {\n enableShareAppMessage: ['onShareAppMessage', 'useShareAppMessage'],\n enableShareTimeline: ['onShareTimeline', 'useShareTimeline']\n }\n const ast = acorn.parse(source, {\n ecmaVersion: 'latest',\n sourceType: 'module'\n })\n\n const additionConfig: Record<string, any> = {}\n\n function check (name: string) {\n Object.keys(configsMap).forEach(configName => {\n const apis: string[] = configsMap[configName]\n if (apis.includes(name)) {\n additionConfig[configName] = true\n }\n })\n }\n\n walk.simple(ast, {\n FunctionExpression (node: any) {\n if (!node.id || !node.id.name) return\n check(node.id.name)\n },\n FunctionDeclaration (node: any) {\n if (!node.id || !node.id.name) return\n check(node.id.name)\n },\n CallExpression (node: any) {\n const { callee } = node\n if (callee.type === 'Identifier') {\n check(callee.name)\n } else if (callee.type === 'MemberExpression') {\n if (callee.property.type === 'Identifier') {\n check(callee.property.name)\n } else if (callee.property.type === 'Literal') {\n check(callee.property.value)\n }\n }\n node.arguments.forEach(item => {\n if (item.type === 'Literal' && item.value) {\n check(item.value)\n }\n })\n }\n })\n\n return additionConfig\n}\n\nexport function getLoaderMeta (framework: Frameworks): ILoaderMeta {\n const loaderMeta = {\n importFrameworkStatement: `\nimport * as React from 'react'\nimport ReactDOM from 'react-dom'\n`,\n mockAppStatement: `\nclass App extends React.Component {\n render () {\n return this.props.children\n }\n}\n`,\n frameworkArgs: 'React, ReactDOM, config',\n creator: 'createReactApp',\n creatorLocation: '@tarojs/plugin-framework-react/dist/runtime',\n importFrameworkName: 'React',\n extraImportForWeb: '',\n execBeforeCreateWebApp: '',\n modifyConfig (config, source) {\n Object.assign(config, addConfig(source))\n }\n }\n\n if (process.env.TARO_PLATFORM === 'web') {\n if (framework === 'react') {\n const react = require('react')\n const majorVersion = Number((react.version || '18').split('.')[0])\n if (majorVersion >= 18) {\n // Note: In react 18 or above, should using react-dom/client\n loaderMeta.importFrameworkStatement = loaderMeta.importFrameworkStatement.replace('\\'react-dom\\'', '\\'react-dom/client\\'')\n loaderMeta.extraImportForWeb += `import { findDOMNode, render, unstable_batchedUpdates } from 'react-dom'\\n`\n loaderMeta.execBeforeCreateWebApp += `Object.assign(ReactDOM, { findDOMNode, render, unstable_batchedUpdates })\\n`\n }\n }\n }\n return loaderMeta\n}\n","import { fs, REG_TARO_H5_RUNTIME_API } from '@tarojs/helper'\nimport { mergeWith } from 'lodash'\n\nimport apiLoader from './api-loader'\nimport { getLoaderMeta } from './loader-meta'\n\nimport type { IPluginContext } from '@tarojs/service'\nimport type { PluginOption } from 'vite'\nimport type { Frameworks } from './index'\n\nexport function h5iVitePlugin (ctx: IPluginContext, framework: Frameworks): PluginOption {\n return [\n injectLoaderMeta(ctx, framework),\n setTaroApi(),\n esbuildExclude(framework)\n ]\n}\n\nfunction injectLoaderMeta (ctx: IPluginContext, framework: Frameworks): PluginOption {\n function customizer (object = '', sources = '') {\n if ([object, sources].every(e => typeof e === 'string')) return object + sources\n }\n const { runnerUtils } = ctx\n const { getViteH5CompilerContext } = runnerUtils\n return {\n name: 'taro-react:loader-meta',\n async buildStart () {\n const viteCompilerContext = await getViteH5CompilerContext(this)\n if (viteCompilerContext) {\n viteCompilerContext.loaderMeta = mergeWith(\n getLoaderMeta(framework), viteCompilerContext.loaderMeta, customizer\n )\n }\n }\n }\n}\n\nfunction setTaroApi (): PluginOption {\n // dev 环境通过 esbuild 来做; pro 环境通过 rollup load 钩子来做;因为生产环境不会走 esbuild\n return {\n name: 'taro-react:process-import-taro',\n enforce: 'pre',\n config: () => ({\n optimizeDeps: {\n esbuildOptions: {\n plugins: [\n {\n name: 'taro:react-api',\n setup (build) {\n build.onLoad({ filter: REG_TARO_H5_RUNTIME_API }, async (args) => {\n const input = await fs.readFile(args.path, 'utf8')\n return {\n contents: apiLoader(input + '\\n' + 'const taro = Taro__default\\n')\n }\n })\n },\n }\n ]\n }\n },\n }),\n async load (id) {\n if (process.env.NODE_ENV === 'production' && REG_TARO_H5_RUNTIME_API.test(id)) {\n try {\n const input = await fs.readFile(id, 'utf8')\n return apiLoader(input + '\\n' + 'const taro = Taro__default\\n')\n } catch (_) {\n return null\n }\n }\n }\n }\n}\n\n// todo 后面看看能否把 preact 改为虚拟模块\nfunction esbuildExclude (framework: Frameworks): PluginOption {\n if (framework !== 'preact') return null\n return {\n name: 'taro-react:esvuild-exclude',\n enforce: 'pre',\n config: () => ({\n optimizeDeps: {\n exclude: ['react', 'preact']\n }\n })\n }\n}\n","import { defaultMainFields, fs, resolveSync } from '@tarojs/helper'\n\nimport { getLoaderMeta } from './loader-meta'\n\nimport type { IPluginContext } from '@tarojs/service'\nimport type { PluginOption } from 'vite'\nimport type { Frameworks } from './index'\n\nexport function harmonyVitePlugin (ctx: IPluginContext, framework: Frameworks): PluginOption {\n return [\n injectLoaderMeta(ctx, framework),\n aliasPlugin(ctx, framework),\n ]\n}\n\nfunction injectLoaderMeta (ctx: IPluginContext, framework: Frameworks): PluginOption {\n return {\n name: 'taro-react:loader-meta',\n buildStart () {\n const { runnerUtils } = ctx\n const { getViteHarmonyCompilerContext } = runnerUtils\n const viteCompilerContext = getViteHarmonyCompilerContext(this)\n if (viteCompilerContext) {\n viteCompilerContext.loaderMeta ||= {}\n Object.assign(viteCompilerContext.loaderMeta, getLoaderMeta(framework))\n }\n }\n }\n}\n\nfunction aliasPlugin (ctx: IPluginContext, framework: Frameworks): PluginOption {\n if (framework === 'react') {\n return {\n name: 'taro-react:alias',\n config (config) {\n const alias: ({ find: string | RegExp, replacement: string })[] = [\n { find: /react-dom$/, replacement: '@tarojs/react' },\n { find: /react-dom\\/client$/, replacement: '@tarojs/react' },\n ]\n\n const mainFields = ['unpkg', ...defaultMainFields]\n const resolveOptions = {\n basedir: process.cwd(),\n mainFields,\n }\n const isProd = config.mode === 'production'\n // TODO:harmony 目前会导致部分包用 production 版本,部分用 development 版本,导致许多 api 报错\n const isHarmony = ctx.runOpts.options.platform === 'harmony'\n if (!isProd && ctx.initialConfig.harmony?.debugReact !== true && !isHarmony) {\n // 在React18中,使用了exports字段约定了模块暴露路径,其中并未暴露 ./cjs/ 。这将使上面的alias在编译时报错。相当的tricky。\n // Why writeJson? prebundle will load package.json via readFile to check exports property.\n const reactPkgPath = resolveSync('react/package.json', resolveOptions)\n if (reactPkgPath) {\n const reactPkg = require('react/package.json')\n const reactVersion = (reactPkg.version || '')\n if ((/^[~^]?18/).test(reactVersion) && reactPkg.exports) {\n reactPkg.exports = Object.assign(reactPkg.exports, {\n './cjs/': './cjs/'\n })\n fs.writeJsonSync(reactPkgPath, reactPkg, { spaces: 2 })\n }\n }\n }\n\n return {\n resolve: {\n alias\n }\n }\n }\n }\n }\n return []\n}\n","import { defaultMainFields, fs, resolveSync } from '@tarojs/helper'\n\nimport { getLoaderMeta } from './loader-meta'\n\nimport type { IPluginContext } from '@tarojs/service'\nimport type { PluginOption } from 'vite'\nimport type { Frameworks } from './index'\n\nexport function miniVitePlugin (ctx: IPluginContext, framework: Frameworks): PluginOption {\n return [\n injectLoaderMeta(ctx, framework),\n aliasPlugin(ctx, framework),\n ]\n}\n\nfunction injectLoaderMeta (ctx: IPluginContext, framework: Frameworks): PluginOption {\n return {\n name: 'taro-react:loader-meta',\n buildStart () {\n const { runnerUtils } = ctx\n const { getViteMiniCompilerContext } = runnerUtils\n const viteCompilerContext = getViteMiniCompilerContext(this)\n if (viteCompilerContext) {\n viteCompilerContext.loaderMeta ||= {}\n Object.assign(viteCompilerContext.loaderMeta, getLoaderMeta(framework))\n }\n }\n }\n}\n\nfunction aliasPlugin (ctx: IPluginContext, framework: Frameworks): PluginOption {\n if (framework === 'react') {\n return {\n name: 'taro-react:alias',\n config (config) {\n const alias: ({ find: string | RegExp, replacement: string })[] = [\n { find: /react-dom$/, replacement: '@tarojs/react' },\n { find: /react-dom\\/client$/, replacement: '@tarojs/react' },\n ]\n\n const mainFields = ['unpkg', ...defaultMainFields]\n const resolveOptions = {\n basedir: process.cwd(),\n mainFields,\n }\n const isProd = config.mode === 'production'\n // TODO:harmony 目前会导致部分包用 production 版本,部分用 development 版本,导致许多 api 报错\n const isHarmony = ctx.runOpts.options.platform === 'harmony'\n if (!isProd && ctx.initialConfig.mini?.debugReact !== true && !isHarmony) {\n // 不是生产环境,且没有设置 debugReact,则使用压缩版本的 react 依赖,减少体积\n alias.push({ find: /react-reconciler$/, replacement: 'react-reconciler/cjs/react-reconciler.production.min.js' })\n alias.push({ find: /^(?!.*mobx-react$).*react$/, replacement: 'react/cjs/react.production.min.js' })\n alias.push({ find: /scheduler$/, replacement: 'scheduler/cjs/scheduler.production.min.js' })\n alias.push({ find: /react\\/jsx-runtime$/, replacement: 'react/cjs/react-jsx-runtime.production.min.js' })\n\n // 在React18中,使用了exports字段约定了模块暴露路径,其中并未暴露 ./cjs/ 。这将使上面的alias在编译时报错。相当的tricky。\n // Why writeJson? prebundle will load package.json via readFile to check exports property.\n const reactPkgPath = resolveSync('react/package.json', resolveOptions)\n if (reactPkgPath) {\n const reactPkg = require('react/package.json')\n const reactVersion = (reactPkg.version || '')\n if ((/^[~^]?18/).test(reactVersion) && reactPkg.exports) {\n reactPkg.exports = Object.assign(reactPkg.exports, {\n './cjs/': './cjs/'\n })\n fs.writeJsonSync(reactPkgPath, reactPkg, { spaces: 2 })\n }\n }\n }\n\n return {\n resolve: {\n alias\n }\n }\n }\n }\n }\n return []\n}\n","import { defaultMainFields, REG_TARO_H5, resolveSync } from '@tarojs/helper'\nimport { mergeWith } from 'lodash'\n\nimport { getLoaderMeta } from './loader-meta'\n\nimport type { IPluginContext } from '@tarojs/service'\nimport type Chain from 'webpack-chain'\nimport type { Frameworks } from './index'\n\nexport function modifyH5WebpackChain (ctx: IPluginContext, framework: Frameworks, chain: Chain) {\n setLoader(framework, chain)\n setPlugin(ctx, framework, chain)\n\n const { isBuildNativeComp = false } = ctx.runOpts?.options || {}\n const externals: Record<string, { [externalType: string]: string } | string> = {}\n if (isBuildNativeComp) {\n // Note: 该模式不支持 prebundle 优化,不必再处理\n externals.react = {\n commonjs: 'react',\n commonjs2: 'react',\n amd: 'react',\n root: 'React'\n }\n externals['react-dom'] = {\n commonjs: 'react-dom',\n commonjs2: 'react-dom',\n amd: 'react-dom',\n root: 'ReactDOM'\n }\n if (framework === 'preact') {\n externals.preact = 'preact'\n }\n\n chain.merge({\n externalsType: 'umd'\n })\n }\n\n chain.merge({\n externals,\n module: {\n rule: {\n 'process-import-taro-h5': {\n test: REG_TARO_H5,\n loader: require.resolve('./api-loader'),\n },\n },\n },\n })\n}\n\nfunction setLoader (framework: Frameworks, chain) {\n function customizer (object = '', sources = '') {\n if ([object, sources].every((e) => typeof e === 'string')) return object + sources\n }\n chain.plugin('mainPlugin').tap((args) => {\n args[0].loaderMeta = mergeWith(getLoaderMeta(framework), args[0].loaderMeta, customizer)\n return args\n })\n}\n\nfunction setPlugin (ctx: IPluginContext, framework: Frameworks, chain) {\n const config = ctx.initialConfig\n const webpackConfig = chain.toConfig()\n const isProd = webpackConfig.mode === 'production'\n if (!isProd && config.h5?.devServer?.hot !== false) {\n // 默认开启 fast-refresh\n if (framework === 'react') {\n chain.plugin('fastRefreshPlugin').use(require('@pmmmwh/react-refresh-webpack-plugin'))\n } else if (framework === 'preact') {\n chain.plugin('hotModuleReplacementPlugin').use(require('webpack').HotModuleReplacementPlugin)\n chain.plugin('fastRefreshPlugin').use(require('@prefresh/webpack'))\n }\n }\n\n const mainFields = ['unpkg', ...defaultMainFields]\n const resolveOptions = {\n basedir: process.cwd(),\n mainFields,\n }\n if (framework === 'react') {\n const alias = chain.resolve.alias\n // Note: 本地 link 调试时,避免 react 重复打包\n alias.set('react$', resolveSync('react', resolveOptions))\n alias.set('react-dom$', resolveSync('react-dom', resolveOptions))\n }\n}\n","import path from 'node:path'\n\nimport { defaultMainFields, fs, resolveSync } from '@tarojs/helper'\n\nimport { getLoaderMeta } from './loader-meta'\n\nimport type { IPluginContext } from '@tarojs/service'\nimport type { Frameworks } from './index'\n\nexport function modifyHarmonyWebpackChain (ctx: IPluginContext, framework: Frameworks, chain) {\n setAlias(ctx, framework, chain)\n setLoader(framework, chain)\n}\n\nfunction setAlias (ctx: IPluginContext, framework: Frameworks, chain) {\n const config = ctx.initialConfig\n const alias = chain.resolve.alias\n\n const mainFields = ['unpkg', ...defaultMainFields]\n const resolveOptions = {\n basedir: process.cwd(),\n mainFields,\n }\n if (framework === 'react') {\n alias.set('react-dom$', '@tarojs/react')\n alias.set('react-dom/client$', '@tarojs/react')\n const webpackConfig = chain.toConfig()\n const isProd = webpackConfig.mode === 'production'\n if (!isProd && config.harmony?.debugReact !== true) {\n // 不是生产环境,且没有设置 debugReact,则使用压缩版本的 react 依赖,减少体积\n // 兼容pnpm workspace\n const reactModulePath = resolveSync('react', resolveOptions)!\n const newFilePath = path.join(path.dirname(reactModulePath), 'cjs', 'react.production.min.js')\n\n alias.set('react-reconciler$', 'react-reconciler/cjs/react-reconciler.production.min.js')\n alias.set('react$', newFilePath)\n alias.set('react/jsx-runtime$', 'react/cjs/react-jsx-runtime.production.min.js')\n\n // 在React18中,使用了exports字段约定了模块暴露路径,其中并未暴露 ./cjs/ 。这将使上面的alias在编译时报错。相当的tricky。\n // Why writeJson? prebundle will load package.json via readFile to check exports property.\n const reactPkgPath = resolveSync('react/package.json', resolveOptions)\n if (reactPkgPath) {\n const reactPkg = require('react/package.json')\n const reactVersion = reactPkg.version || ''\n if (/^[~^]?18/.test(reactVersion) && reactPkg.exports) {\n reactPkg.exports = Object.assign(reactPkg.exports, {\n './cjs/': './cjs/',\n })\n fs.writeJsonSync(reactPkgPath, reactPkg, { spaces: 2 })\n }\n }\n }\n }\n}\n\nfunction setLoader (framework: Frameworks, chain) {\n chain.plugin('mainPlugin').tap((args) => {\n args[0].loaderMeta ||= {}\n Object.assign(args[0].loaderMeta, getLoaderMeta(framework))\n return args\n })\n}\n","import path from 'node:path'\n\nimport { defaultMainFields, fs, resolveSync } from '@tarojs/helper'\n\nimport { getLoaderMeta } from './loader-meta'\n\nimport type { IPluginContext } from '@tarojs/service'\nimport type { Frameworks } from './index'\n\nexport function modifyMiniWebpackChain (ctx: IPluginContext, framework: Frameworks, chain) {\n setAlias(ctx, framework, chain)\n setLoader(framework, chain)\n}\n\nfunction setAlias (ctx: IPluginContext, framework: Frameworks, chain) {\n const config = ctx.initialConfig\n const alias = chain.resolve.alias\n\n const mainFields = ['unpkg', ...defaultMainFields]\n const resolveOptions = {\n basedir: process.cwd(),\n mainFields,\n }\n if (framework === 'react') {\n alias.set('react-dom$', '@tarojs/react')\n alias.set('react-dom/client$', '@tarojs/react')\n const webpackConfig = chain.toConfig()\n const isProd = webpackConfig.mode === 'production'\n if (!isProd && config.mini?.debugReact !== true) {\n // 不是生产环境,且没有设置 debugReact,则使用压缩版本的 react 依赖,减少体积\n // 兼容pnpm workspace\n const reactModulePath = resolveSync('react', resolveOptions)!\n const newFilePath = path.join(path.dirname(reactModulePath), 'cjs', 'react.production.min.js')\n\n alias.set('react-reconciler$', 'react-reconciler/cjs/react-reconciler.production.min.js')\n alias.set(/^(?!.*mobx-react$).*react$/, newFilePath)\n alias.set('react/jsx-runtime$', 'react/cjs/react-jsx-runtime.production.min.js')\n\n // 在React18中,使用了exports字段约定了模块暴露路径,其中并未暴露 ./cjs/ 。这将使上面的alias在编译时报错。相当的tricky。\n // Why writeJson? prebundle will load package.json via readFile to check exports property.\n const reactPkgPath = resolveSync('react/package.json', resolveOptions)\n if (reactPkgPath) {\n const reactPkg = require('react/package.json')\n const reactVersion = reactPkg.version || ''\n if (/^[~^]?18/.test(reactVersion) && reactPkg.exports) {\n reactPkg.exports = Object.assign(reactPkg.exports, {\n './cjs/': './cjs/',\n })\n fs.writeJsonSync(reactPkgPath, reactPkg, { spaces: 2 })\n }\n }\n }\n }\n}\n\nfunction setLoader (framework: Frameworks, chain) {\n chain.plugin('miniPlugin').tap((args) => {\n args[0].loaderMeta ||= {}\n Object.assign(args[0].loaderMeta, getLoaderMeta(framework))\n return args\n })\n}\n","import { fs, REG_TARO_H5 } from '@tarojs/helper'\nimport { isString } from '@tarojs/shared'\n\nimport { h5iVitePlugin } from './vite.h5'\nimport { harmonyVitePlugin } from './vite.harmony'\nimport { miniVitePlugin } from './vite.mini'\nimport { modifyH5WebpackChain } from './webpack.h5'\nimport { modifyHarmonyWebpackChain } from './webpack.harmony'\nimport { modifyMiniWebpackChain } from './webpack.mini'\n\nimport type { esbuild } from '@tarojs/helper'\nimport type { IPluginContext } from '@tarojs/service'\nimport type { IProjectConfig } from '@tarojs/taro/types/compile'\nimport type { PluginOption } from 'vite'\n\nexport type Frameworks = 'react' | 'preact'\n\nexport function isReactLike(framework: IProjectConfig['framework'] = 'react'): framework is Frameworks {\n return ['react', 'preact'].includes(framework)\n}\n\nexport default (ctx: IPluginContext) => {\n const { framework = 'react' } = ctx.initialConfig\n\n if (!isReactLike(framework)) return\n\n ctx.modifyWebpackChain(({ chain }) => {\n // 通用\n setAlias(framework, chain)\n\n if (process.env.TARO_PLATFORM === 'web') {\n // H5\n modifyH5WebpackChain(ctx, framework, chain)\n } else if (process.env.TARO_PLATFORM === 'harmony' || process.env.TARO_ENV === 'harmony') {\n // 鸿蒙\n modifyHarmonyWebpackChain(ctx, framework, chain)\n } else {\n // 小程序\n modifyMiniWebpackChain(ctx, framework, chain)\n }\n })\n\n ctx.modifyRunnerOpts(({ opts }) => {\n if (!opts?.compiler) return\n\n if (isString(opts.compiler)) {\n opts.compiler = {\n type: opts.compiler,\n }\n }\n\n const { compiler } = opts\n if (compiler.type === 'webpack5') {\n // 提供给 webpack5 依赖预编译收集器的第三方依赖\n const deps = ['react', 'react-dom', 'react/jsx-runtime', '@tarojs/plugin-framework-react/dist/runtime']\n compiler.prebundle ||= {}\n const prebundleOptions = compiler.prebundle\n prebundleOptions.include ||= []\n prebundleOptions.include = prebundleOptions.include.concat(deps)\n prebundleOptions.exclude ||= []\n prebundleOptions.exclude.push(/mobx/) // 依赖会对 webpack 修改,默认排除\n if (prebundleOptions.enable === false) return\n\n const taroReactPlugin: esbuild.Plugin = {\n name: 'taroReactPlugin',\n setup (build) {\n build.onLoad({ filter: REG_TARO_H5 }, ({ path }) => {\n const content = fs.readFileSync(path).toString()\n return {\n contents: require('./api-loader')(content),\n }\n })\n }\n }\n\n prebundleOptions.esbuild ||= {}\n const esbuildConfig = prebundleOptions.esbuild\n esbuildConfig.plugins ||= []\n esbuildConfig.plugins.push(taroReactPlugin)\n } else if (compiler.type === 'vite') {\n compiler.vitePlugins ||= []\n compiler.vitePlugins.push(viteCommonPlugin(framework))\n compiler.vitePlugins.push(VitePresetPlugin(framework))\n if (process.env.TARO_PLATFORM === 'web') {\n // H5\n compiler.vitePlugins.push(h5iVitePlugin(ctx, framework))\n } else if (process.env.TARO_PLATFORM === 'harmony' || process.env.TARO_ENV === 'harmony') {\n // 鸿蒙\n compiler.vitePlugins.push(harmonyVitePlugin(ctx, framework))\n } else {\n // 小程序\n compiler.vitePlugins.push(miniVitePlugin(ctx, framework))\n }\n }\n })\n}\n\nfunction setAlias (framework: Frameworks, chain) {\n const alias = chain.resolve.alias\n if (framework === 'preact') {\n alias.set('react', 'preact/compat')\n alias.set('react-dom/test-utils', 'preact/test-utils')\n alias.set('react-dom', 'preact/compat')\n alias.set('react/jsx-runtime', 'preact/jsx-runtime')\n }\n}\n\nfunction VitePresetPlugin (framework: Frameworks): PluginOption {\n return framework === 'preact'\n ? require('@preact/preset-vite').preact({\n babel: {\n plugins: [\n ['@babel/plugin-proposal-decorators', { legacy: true }],\n ['@babel/plugin-proposal-class-properties', { loose: true }],\n ],\n },\n })\n : require('@vitejs/plugin-react').default({\n babel: {\n plugins: [\n ['@babel/plugin-proposal-decorators', { legacy: true }],\n ['@babel/plugin-proposal-class-properties', { loose: true }],\n ],\n },\n })\n}\n\nfunction viteCommonPlugin (framework: Frameworks): PluginOption {\n return {\n name: 'taro-react:common',\n config () {\n const alias =\n framework === 'preact'\n ? [\n { find: 'react', replacement: 'preact/compat' },\n { find: 'react-dom/test-utils', replacement: 'preact/test-utils' },\n { find: 'react-dom', replacement: 'preact/compat' },\n { find: 'react/jsx-runtime', replacement: 'preact/jsx-runtime' },\n ]\n : []\n\n return {\n resolve: {\n alias,\n },\n }\n },\n }\n}\n"],"names":["acorn","walk","injectLoaderMeta","mergeWith","REG_TARO_H5_RUNTIME_API","__awaiter","fs","aliasPlugin","defaultMainFields","resolveSync","setLoader","REG_TARO_H5","setAlias","isString"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAc,kBAAA,EAAW,GAAW,EAAA;IAClC,OAAO,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;EAyBP,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDJ,CAAA;AACD;;ACvEA,SAAS,SAAS,CAAE,MAAM,EAAA;AACxB,IAAA,MAAM,UAAU,GAAG;AACjB,QAAA,qBAAqB,EAAE,CAAC,mBAAmB,EAAE,oBAAoB,CAAC;AAClE,QAAA,mBAAmB,EAAE,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;KAC7D,CAAA;AACD,IAAA,MAAM,GAAG,GAAGA,gBAAK,CAAC,KAAK,CAAC,MAAM,EAAE;AAC9B,QAAA,WAAW,EAAE,QAAQ;AACrB,QAAA,UAAU,EAAE,QAAQ;AACrB,KAAA,CAAC,CAAA;IAEF,MAAM,cAAc,GAAwB,EAAE,CAAA;IAE9C,SAAS,KAAK,CAAE,IAAY,EAAA;QAC1B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,UAAU,IAAG;AAC3C,YAAA,MAAM,IAAI,GAAa,UAAU,CAAC,UAAU,CAAC,CAAA;AAC7C,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACvB,gBAAA,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,CAAA;aAClC;AACH,SAAC,CAAC,CAAA;KACH;AAED,IAAAC,eAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACf,QAAA,kBAAkB,CAAE,IAAS,EAAA;YAC3B,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI;gBAAE,OAAM;AACrC,YAAA,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;SACpB;AACD,QAAA,mBAAmB,CAAE,IAAS,EAAA;YAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI;gBAAE,OAAM;AACrC,YAAA,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;SACpB;AACD,QAAA,cAAc,CAAE,IAAS,EAAA;AACvB,YAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;AACvB,YAAA,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE;AAChC,gBAAA,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;aACnB;AAAM,iBAAA,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB,EAAE;gBAC7C,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE;AACzC,oBAAA,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;iBAC5B;qBAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;AAC7C,oBAAA,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;iBAC7B;aACF;AACD,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAG;gBAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,EAAE;AACzC,oBAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;iBAClB;AACH,aAAC,CAAC,CAAA;SACH;AACF,KAAA,CAAC,CAAA;AAEF,IAAA,OAAO,cAAc,CAAA;AACvB,CAAC;AAEK,SAAU,aAAa,CAAE,SAAqB,EAAA;AAClD,IAAA,MAAM,UAAU,GAAG;AACjB,QAAA,wBAAwB,EAAE,CAAA;;;AAG7B,CAAA;AACG,QAAA,gBAAgB,EAAE,CAAA;;;;;;AAMrB,CAAA;AACG,QAAA,aAAa,EAAE,yBAAyB;AACxC,QAAA,OAAO,EAAE,gBAAgB;AACzB,QAAA,eAAe,EAAE,6CAA6C;AAC9D,QAAA,mBAAmB,EAAE,OAAO;AAC5B,QAAA,iBAAiB,EAAE,EAAE;AACrB,QAAA,sBAAsB,EAAE,EAAE;QAC1B,YAAY,CAAE,MAAM,EAAE,MAAM,EAAA;YAC1B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;SACzC;KACF,CAAA;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,KAAK,EAAE;AACvC,QAAA,IAAI,SAAS,KAAK,OAAO,EAAE;AACzB,YAAA,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;YAC9B,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAClE,YAAA,IAAI,YAAY,IAAI,EAAE,EAAE;;AAEtB,gBAAA,UAAU,CAAC,wBAAwB,GAAG,UAAU,CAAC,wBAAwB,CAAC,OAAO,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAAA;AAC1H,gBAAA,UAAU,CAAC,iBAAiB,IAAI,CAAA,0EAAA,CAA4E,CAAA;AAC5G,gBAAA,UAAU,CAAC,sBAAsB,IAAI,CAAA,2EAAA,CAA6E,CAAA;aACnH;SACF;KACF;AACD,IAAA,OAAO,UAAU,CAAA;AACnB;;ACtFgB,SAAA,aAAa,CAAE,GAAmB,EAAE,SAAqB,EAAA;IACvE,OAAO;AACL,QAAAC,kBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC;AAChC,QAAA,UAAU,EAAE;QACZ,cAAc,CAAC,SAAS,CAAC;KAC1B,CAAA;AACH,CAAC;AAED,SAASA,kBAAgB,CAAE,GAAmB,EAAE,SAAqB,EAAA;IACnE,SAAS,UAAU,CAAE,MAAM,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAA;AAC5C,QAAA,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC;YAAE,OAAO,MAAM,GAAG,OAAO,CAAA;KACjF;AACD,IAAA,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAA;AAC3B,IAAA,MAAM,EAAE,wBAAwB,EAAE,GAAG,WAAW,CAAA;IAChD,OAAO;AACL,QAAA,IAAI,EAAE,wBAAwB;QACxB,UAAU,GAAA;;AACd,gBAAA,MAAM,mBAAmB,GAAG,MAAM,wBAAwB,CAAC,IAAI,CAAC,CAAA;gBAChE,IAAI,mBAAmB,EAAE;AACvB,oBAAA,mBAAmB,CAAC,UAAU,GAAGC,gBAAS,CACxC,aAAa,CAAC,SAAS,CAAC,EAAE,mBAAmB,CAAC,UAAU,EAAE,UAAU,CACrE,CAAA;iBACF;aACF,CAAA,CAAA;AAAA,SAAA;KACF,CAAA;AACH,CAAC;AAED,SAAS,UAAU,GAAA;;IAEjB,OAAO;AACL,QAAA,IAAI,EAAE,gCAAgC;AACtC,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,MAAM,EAAE,OAAO;AACb,YAAA,YAAY,EAAE;AACZ,gBAAA,cAAc,EAAE;AACd,oBAAA,OAAO,EAAE;AACP,wBAAA;AACE,4BAAA,IAAI,EAAE,gBAAgB;AACtB,4BAAA,KAAK,CAAE,KAAK,EAAA;AACV,gCAAA,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAEC,8BAAuB,EAAE,EAAE,CAAO,IAAI,KAAIC,eAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AAC/D,oCAAA,MAAM,KAAK,GAAG,MAAMC,SAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;oCAClD,OAAO;wCACL,QAAQ,EAAE,SAAS,CAAC,KAAK,GAAG,IAAI,GAAG,8BAA8B,CAAC;qCACnE,CAAA;iCACF,CAAA,CAAC,CAAA;6BACH;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;SACF,CAAC;AACI,QAAA,IAAI,CAAE,EAAE,EAAA;;AACZ,gBAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAIF,8BAAuB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AAC7E,oBAAA,IAAI;wBACF,MAAM,KAAK,GAAG,MAAME,SAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;wBAC3C,OAAO,SAAS,CAAC,KAAK,GAAG,IAAI,GAAG,8BAA8B,CAAC,CAAA;qBAChE;oBAAC,OAAO,CAAC,EAAE;AACV,wBAAA,OAAO,IAAI,CAAA;qBACZ;iBACF;aACF,CAAA,CAAA;AAAA,SAAA;KACF,CAAA;AACH,CAAC;AAED;AACA,SAAS,cAAc,CAAE,SAAqB,EAAA;IAC5C,IAAI,SAAS,KAAK,QAAQ;AAAE,QAAA,OAAO,IAAI,CAAA;IACvC,OAAO;AACL,QAAA,IAAI,EAAE,4BAA4B;AAClC,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,MAAM,EAAE,OAAO;AACb,YAAA,YAAY,EAAE;AACZ,gBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC7B,aAAA;SACF,CAAC;KACH,CAAA;AACH;;AC9EgB,SAAA,iBAAiB,CAAE,GAAmB,EAAE,SAAqB,EAAA;IAC3E,OAAO;AACL,QAAAJ,kBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC;AAChC,QAAAK,aAAW,CAAC,GAAG,EAAE,SAAS,CAAC;KAC5B,CAAA;AACH,CAAC;AAED,SAASL,kBAAgB,CAAE,GAAmB,EAAE,SAAqB,EAAA;IACnE,OAAO;AACL,QAAA,IAAI,EAAE,wBAAwB;QAC9B,UAAU,GAAA;AACR,YAAA,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAA;AAC3B,YAAA,MAAM,EAAE,6BAA6B,EAAE,GAAG,WAAW,CAAA;AACrD,YAAA,MAAM,mBAAmB,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAA;YAC/D,IAAI,mBAAmB,EAAE;gBACvB,mBAAmB,CAAC,UAAU,KAA9B,mBAAmB,CAAC,UAAU,GAAK,EAAE,CAAA,CAAA;AACrC,gBAAA,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAA;aACxE;SACF;KACF,CAAA;AACH,CAAC;AAED,SAASK,aAAW,CAAE,GAAmB,EAAE,SAAqB,EAAA;AAC9D,IAAA,IAAI,SAAS,KAAK,OAAO,EAAE;QACzB,OAAO;AACL,YAAA,IAAI,EAAE,kBAAkB;AACxB,YAAA,MAAM,CAAE,MAAM,EAAA;;AACZ,gBAAA,MAAM,KAAK,GAAuD;AAChE,oBAAA,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE;AACpD,oBAAA,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,eAAe,EAAE;iBAC7D,CAAA;gBAED,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,GAAGC,wBAAiB,CAAC,CAAA;AAClD,gBAAA,MAAM,cAAc,GAAG;AACrB,oBAAA,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;oBACtB,UAAU;iBACX,CAAA;AACD,gBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,KAAK,YAAY,CAAA;;gBAE3C,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAA;AAC5D,gBAAA,IAAI,CAAC,MAAM,IAAI,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,aAAa,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,MAAK,IAAI,IAAI,CAAC,SAAS,EAAE;;;oBAG3E,MAAM,YAAY,GAAGC,kBAAW,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAA;oBACtE,IAAI,YAAY,EAAE;AAChB,wBAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAA;wBAC9C,MAAM,YAAY,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;AAC7C,wBAAA,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE;4BACvD,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;AACjD,gCAAA,QAAQ,EAAE,QAAQ;AACnB,6BAAA,CAAC,CAAA;AACF,4BAAAH,SAAE,CAAC,aAAa,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;yBACxD;qBACF;iBACF;gBAED,OAAO;AACL,oBAAA,OAAO,EAAE;wBACP,KAAK;AACN,qBAAA;iBACF,CAAA;aACF;SACF,CAAA;KACF;AACD,IAAA,OAAO,EAAE,CAAA;AACX;;ACjEgB,SAAA,cAAc,CAAE,GAAmB,EAAE,SAAqB,EAAA;IACxE,OAAO;AACL,QAAA,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC;AAChC,QAAA,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC;KAC5B,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CAAE,GAAmB,EAAE,SAAqB,EAAA;IACnE,OAAO;AACL,QAAA,IAAI,EAAE,wBAAwB;QAC9B,UAAU,GAAA;AACR,YAAA,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAA;AAC3B,YAAA,MAAM,EAAE,0BAA0B,EAAE,GAAG,WAAW,CAAA;AAClD,YAAA,MAAM,mBAAmB,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAA;YAC5D,IAAI,mBAAmB,EAAE;gBACvB,mBAAmB,CAAC,UAAU,KAA9B,mBAAmB,CAAC,UAAU,GAAK,EAAE,CAAA,CAAA;AACrC,gBAAA,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAA;aACxE;SACF;KACF,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAE,GAAmB,EAAE,SAAqB,EAAA;AAC9D,IAAA,IAAI,SAAS,KAAK,OAAO,EAAE;QACzB,OAAO;AACL,YAAA,IAAI,EAAE,kBAAkB;AACxB,YAAA,MAAM,CAAE,MAAM,EAAA;;AACZ,gBAAA,MAAM,KAAK,GAAuD;AAChE,oBAAA,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE;AACpD,oBAAA,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,eAAe,EAAE;iBAC7D,CAAA;gBAED,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,GAAGE,wBAAiB,CAAC,CAAA;AAClD,gBAAA,MAAM,cAAc,GAAG;AACrB,oBAAA,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;oBACtB,UAAU;iBACX,CAAA;AACD,gBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,KAAK,YAAY,CAAA;;gBAE3C,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAA;AAC5D,gBAAA,IAAI,CAAC,MAAM,IAAI,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,aAAa,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,MAAK,IAAI,IAAI,CAAC,SAAS,EAAE;;AAExE,oBAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,yDAAyD,EAAE,CAAC,CAAA;AACjH,oBAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC,CAAA;AACpG,oBAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,2CAA2C,EAAE,CAAC,CAAA;AAC5F,oBAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,+CAA+C,EAAE,CAAC,CAAA;;;oBAIzG,MAAM,YAAY,GAAGC,kBAAW,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAA;oBACtE,IAAI,YAAY,EAAE;AAChB,wBAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAA;wBAC9C,MAAM,YAAY,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;AAC7C,wBAAA,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE;4BACvD,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;AACjD,gCAAA,QAAQ,EAAE,QAAQ;AACnB,6BAAA,CAAC,CAAA;AACF,4BAAAH,SAAE,CAAC,aAAa,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;yBACxD;qBACF;iBACF;gBAED,OAAO;AACL,oBAAA,OAAO,EAAE;wBACP,KAAK;AACN,qBAAA;iBACF,CAAA;aACF;SACF,CAAA;KACF;AACD,IAAA,OAAO,EAAE,CAAA;AACX;;SCtEgB,oBAAoB,CAAE,GAAmB,EAAE,SAAqB,EAAE,KAAY,EAAA;;AAC5F,IAAAI,WAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;AAC3B,IAAA,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;AAEhC,IAAA,MAAM,EAAE,iBAAiB,GAAG,KAAK,EAAE,GAAG,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,KAAI,EAAE,CAAA;IAChE,MAAM,SAAS,GAAgE,EAAE,CAAA;IACjF,IAAI,iBAAiB,EAAE;;QAErB,SAAS,CAAC,KAAK,GAAG;AAChB,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,IAAI,EAAE,OAAO;SACd,CAAA;QACD,SAAS,CAAC,WAAW,CAAC,GAAG;AACvB,YAAA,QAAQ,EAAE,WAAW;AACrB,YAAA,SAAS,EAAE,WAAW;AACtB,YAAA,GAAG,EAAE,WAAW;AAChB,YAAA,IAAI,EAAE,UAAU;SACjB,CAAA;AACD,QAAA,IAAI,SAAS,KAAK,QAAQ,EAAE;AAC1B,YAAA,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAA;SAC5B;QAED,KAAK,CAAC,KAAK,CAAC;AACV,YAAA,aAAa,EAAE,KAAK;AACrB,SAAA,CAAC,CAAA;KACH;IAED,KAAK,CAAC,KAAK,CAAC;QACV,SAAS;AACT,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE;AACJ,gBAAA,wBAAwB,EAAE;AACxB,oBAAA,IAAI,EAAEC,kBAAW;AACjB,oBAAA,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;AACxC,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA,CAAC,CAAA;AACJ,CAAC;AAED,SAASD,WAAS,CAAE,SAAqB,EAAE,KAAK,EAAA;IAC9C,SAAS,UAAU,CAAE,MAAM,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAA;AAC5C,QAAA,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ,CAAC;YAAE,OAAO,MAAM,GAAG,OAAO,CAAA;KACnF;IACD,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;QACtC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,GAAGP,gBAAS,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;AACxF,QAAA,OAAO,IAAI,CAAA;AACb,KAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,SAAS,CAAE,GAAmB,EAAE,SAAqB,EAAE,KAAK,EAAA;;AACnE,IAAA,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAA;AAChC,IAAA,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;AACtC,IAAA,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,KAAK,YAAY,CAAA;AAClD,IAAA,IAAI,CAAC,MAAM,IAAI,CAAA,CAAA,EAAA,GAAA,MAAA,MAAM,CAAC,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,MAAK,KAAK,EAAE;;AAElD,QAAA,IAAI,SAAS,KAAK,OAAO,EAAE;AACzB,YAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,CAAA;SACvF;AAAM,aAAA,IAAI,SAAS,KAAK,QAAQ,EAAE;AACjC,YAAA,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,0BAA0B,CAAC,CAAA;AAC7F,YAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAA;SACpE;KACF;IAED,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,GAAGK,wBAAiB,CAAC,CAAA;AAClD,IAAA,MAAM,cAAc,GAAG;AACrB,QAAA,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;QACtB,UAAU;KACX,CAAA;AACD,IAAA,IAAI,SAAS,KAAK,OAAO,EAAE;AACzB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAA;;AAEjC,QAAA,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAEC,kBAAW,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAA;AACzD,QAAA,KAAK,CAAC,GAAG,CAAC,YAAY,EAAEA,kBAAW,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAA;KAClE;AACH;;SC7EgB,yBAAyB,CAAE,GAAmB,EAAE,SAAqB,EAAE,KAAK,EAAA;AAC1F,IAAAG,UAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;AAC/B,IAAAF,WAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;AAC7B,CAAC;AAED,SAASE,UAAQ,CAAE,GAAmB,EAAE,SAAqB,EAAE,KAAK,EAAA;;AAClE,IAAA,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAA;AAChC,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAA;IAEjC,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,GAAGJ,wBAAiB,CAAC,CAAA;AAClD,IAAA,MAAM,cAAc,GAAG;AACrB,QAAA,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;QACtB,UAAU;KACX,CAAA;AACD,IAAA,IAAI,SAAS,KAAK,OAAO,EAAE;AACzB,QAAA,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,eAAe,CAAC,CAAA;AACxC,QAAA,KAAK,CAAC,GAAG,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAA;AAC/C,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;AACtC,QAAA,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,KAAK,YAAY,CAAA;AAClD,QAAA,IAAI,CAAC,MAAM,IAAI,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,MAAK,IAAI,EAAE;;;YAGlD,MAAM,eAAe,GAAGC,kBAAW,CAAC,OAAO,EAAE,cAAc,CAAE,CAAA;AAC7D,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,yBAAyB,CAAC,CAAA;AAE9F,YAAA,KAAK,CAAC,GAAG,CAAC,mBAAmB,EAAE,yDAAyD,CAAC,CAAA;AACzF,YAAA,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;AAChC,YAAA,KAAK,CAAC,GAAG,CAAC,oBAAoB,EAAE,+CAA+C,CAAC,CAAA;;;YAIhF,MAAM,YAAY,GAAGA,kBAAW,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAA;YACtE,IAAI,YAAY,EAAE;AAChB,gBAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAA;AAC9C,gBAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAA;gBAC3C,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE;oBACrD,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;AACjD,wBAAA,QAAQ,EAAE,QAAQ;AACnB,qBAAA,CAAC,CAAA;AACF,oBAAAH,SAAE,CAAC,aAAa,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;iBACxD;aACF;SACF;KACF;AACH,CAAC;AAED,SAASI,WAAS,CAAE,SAAqB,EAAE,KAAK,EAAA;IAC9C,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;;QACtC,CAAA,EAAA,GAAA,IAAI,CAAC,CAAC,CAAC,EAAC,UAAU,KAAV,EAAA,CAAA,UAAU,GAAK,EAAE,CAAA,CAAA;AACzB,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAA;AAC3D,QAAA,OAAO,IAAI,CAAA;AACb,KAAC,CAAC,CAAA;AACJ;;SCpDgB,sBAAsB,CAAE,GAAmB,EAAE,SAAqB,EAAE,KAAK,EAAA;AACvF,IAAAE,UAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;AAC/B,IAAA,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;AAC7B,CAAC;AAED,SAASA,UAAQ,CAAE,GAAmB,EAAE,SAAqB,EAAE,KAAK,EAAA;;AAClE,IAAA,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAA;AAChC,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAA;IAEjC,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,GAAGJ,wBAAiB,CAAC,CAAA;AAClD,IAAA,MAAM,cAAc,GAAG;AACrB,QAAA,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;QACtB,UAAU;KACX,CAAA;AACD,IAAA,IAAI,SAAS,KAAK,OAAO,EAAE;AACzB,QAAA,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,eAAe,CAAC,CAAA;AACxC,QAAA,KAAK,CAAC,GAAG,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAA;AAC/C,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;AACtC,QAAA,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,KAAK,YAAY,CAAA;AAClD,QAAA,IAAI,CAAC,MAAM,IAAI,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,MAAK,IAAI,EAAE;;;YAG/C,MAAM,eAAe,GAAGC,kBAAW,CAAC,OAAO,EAAE,cAAc,CAAE,CAAA;AAC7D,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,yBAAyB,CAAC,CAAA;AAE9F,YAAA,KAAK,CAAC,GAAG,CAAC,mBAAmB,EAAE,yDAAyD,CAAC,CAAA;AACzF,YAAA,KAAK,CAAC,GAAG,CAAC,4BAA4B,EAAE,WAAW,CAAC,CAAA;AACpD,YAAA,KAAK,CAAC,GAAG,CAAC,oBAAoB,EAAE,+CAA+C,CAAC,CAAA;;;YAIhF,MAAM,YAAY,GAAGA,kBAAW,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAA;YACtE,IAAI,YAAY,EAAE;AAChB,gBAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAA;AAC9C,gBAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAA;gBAC3C,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE;oBACrD,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;AACjD,wBAAA,QAAQ,EAAE,QAAQ;AACnB,qBAAA,CAAC,CAAA;AACF,oBAAAH,SAAE,CAAC,aAAa,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;iBACxD;aACF;SACF;KACF;AACH,CAAC;AAED,SAAS,SAAS,CAAE,SAAqB,EAAE,KAAK,EAAA;IAC9C,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;;QACtC,CAAA,EAAA,GAAA,IAAI,CAAC,CAAC,CAAC,EAAC,UAAU,KAAV,EAAA,CAAA,UAAU,GAAK,EAAE,CAAA,CAAA;AACzB,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAA;AAC3D,QAAA,OAAO,IAAI,CAAA;AACb,KAAC,CAAC,CAAA;AACJ;;AC5CgB,SAAA,WAAW,CAAC,SAAA,GAAyC,OAAO,EAAA;IAC1E,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;AAChD,CAAC;AAED,YAAe,CAAC,GAAmB,KAAI;IACrC,MAAM,EAAE,SAAS,GAAG,OAAO,EAAE,GAAG,GAAG,CAAC,aAAa,CAAA;AAEjD,IAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QAAE,OAAM;IAEnC,GAAG,CAAC,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAI;;AAEnC,QAAA,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QAE1B,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,KAAK,EAAE;;AAEvC,YAAA,oBAAoB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;SAC5C;AAAM,aAAA,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE;;AAExF,YAAA,yBAAyB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;SACjD;aAAM;;AAEL,YAAA,sBAAsB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;SAC9C;AACH,KAAC,CAAC,CAAA;IAEF,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,KAAI;QAChC,IAAI,EAAC,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,QAAQ,CAAA;YAAE,OAAM;AAE3B,QAAA,IAAIO,eAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC3B,IAAI,CAAC,QAAQ,GAAG;gBACd,IAAI,EAAE,IAAI,CAAC,QAAQ;aACpB,CAAA;SACF;AAED,QAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;AACzB,QAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE;;YAEhC,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,6CAA6C,CAAC,CAAA;YACvG,QAAQ,CAAC,SAAS,KAAlB,QAAQ,CAAC,SAAS,GAAK,EAAE,CAAA,CAAA;AACzB,YAAA,MAAM,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAA;YAC3C,gBAAgB,CAAC,OAAO,KAAxB,gBAAgB,CAAC,OAAO,GAAK,EAAE,CAAA,CAAA;YAC/B,gBAAgB,CAAC,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAChE,gBAAgB,CAAC,OAAO,KAAxB,gBAAgB,CAAC,OAAO,GAAK,EAAE,CAAA,CAAA;YAC/B,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AACrC,YAAA,IAAI,gBAAgB,CAAC,MAAM,KAAK,KAAK;gBAAE,OAAM;AAE7C,YAAA,MAAM,eAAe,GAAmB;AACtC,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,KAAK,CAAE,KAAK,EAAA;AACV,oBAAA,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAEF,kBAAW,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,KAAI;wBACjD,MAAM,OAAO,GAAGL,SAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAA;wBAChD,OAAO;AACL,4BAAA,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC;yBAC3C,CAAA;AACH,qBAAC,CAAC,CAAA;iBACH;aACF,CAAA;YAED,gBAAgB,CAAC,OAAO,KAAxB,gBAAgB,CAAC,OAAO,GAAK,EAAE,CAAA,CAAA;AAC/B,YAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAA;YAC9C,aAAa,CAAC,OAAO,KAArB,aAAa,CAAC,OAAO,GAAK,EAAE,CAAA,CAAA;AAC5B,YAAA,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;SAC5C;AAAM,aAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE;YACnC,QAAQ,CAAC,WAAW,KAApB,QAAQ,CAAC,WAAW,GAAK,EAAE,CAAA,CAAA;YAC3B,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAA;YACtD,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAA;YACtD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,KAAK,EAAE;;AAEvC,gBAAA,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAA;aACzD;AAAM,iBAAA,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE;;AAExF,gBAAA,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAA;aAC7D;iBAAM;;AAEL,gBAAA,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAA;aAC1D;SACF;AACH,KAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,SAAS,QAAQ,CAAE,SAAqB,EAAE,KAAK,EAAA;AAC7C,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAA;AACjC,IAAA,IAAI,SAAS,KAAK,QAAQ,EAAE;AAC1B,QAAA,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,CAAA;AACnC,QAAA,KAAK,CAAC,GAAG,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,CAAA;AACtD,QAAA,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,eAAe,CAAC,CAAA;AACvC,QAAA,KAAK,CAAC,GAAG,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAA;KACrD;AACH,CAAC;AAED,SAAS,gBAAgB,CAAE,SAAqB,EAAA;IAC9C,OAAO,SAAS,KAAK,QAAQ;AAC3B,UAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC;AACtC,YAAA,KAAK,EAAE;AACL,gBAAA,OAAO,EAAE;AACP,oBAAA,CAAC,mCAAmC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACvD,oBAAA,CAAC,yCAAyC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,iBAAA;AACF,aAAA;SACF,CAAC;AACF,UAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC;AACxC,YAAA,KAAK,EAAE;AACL,gBAAA,OAAO,EAAE;AACP,oBAAA,CAAC,mCAAmC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACvD,oBAAA,CAAC,yCAAyC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CAAA;AACN,CAAC;AAED,SAAS,gBAAgB,CAAE,SAAqB,EAAA;IAC9C,OAAO;AACL,QAAA,IAAI,EAAE,mBAAmB;QACzB,MAAM,GAAA;AACJ,YAAA,MAAM,KAAK,GACT,SAAS,KAAK,QAAQ;AACpB,kBAAE;AACA,oBAAA,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE;AAC/C,oBAAA,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,mBAAmB,EAAE;AAClE,oBAAA,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE;AACnD,oBAAA,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,oBAAoB,EAAE;AACjE,iBAAA;kBACC,EAAE,CAAA;YAER,OAAO;AACL,gBAAA,OAAO,EAAE;oBACP,KAAK;AACN,iBAAA;aACF,CAAA;SACF;KACF,CAAA;AACH;;;;;"}
|
package/dist/runtime.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { EMPTY_OBJ, isFunction, isArray, hooks, ensure, isUndefined } from '@tarojs/shared';
|
|
2
|
-
import { Current, getPageInstance, injectPageInstance, incrementId, document, getPath, window, CONTEXT_ACTIONS, safeExecute, removePageInstance, ON_READY, requestAnimationFrame, eventCenter, getOnReadyEventKey, ON_SHOW, getOnShowEventKey, ON_HIDE, getOnHideEventKey, eventHandler, addLeadingSlash } from '@tarojs/runtime';
|
|
2
|
+
import { Current, getPageInstance, injectPageInstance, incrementId, document, perf, PAGE_INIT, CONTAINER, getPath, window, CONTEXT_ACTIONS, safeExecute, removePageInstance, ON_READY, requestAnimationFrame, eventCenter, getOnReadyEventKey, ON_SHOW, getOnShowEventKey, ON_HIDE, getOnHideEventKey, eventHandler, addLeadingSlash } from '@tarojs/runtime';
|
|
3
3
|
|
|
4
4
|
const reactMeta = {
|
|
5
5
|
PageContext: EMPTY_OBJ,
|
|
6
|
-
R: EMPTY_OBJ
|
|
6
|
+
R: EMPTY_OBJ,
|
|
7
7
|
};
|
|
8
8
|
|
|
9
9
|
const HOOKS_APP_ID = 'taro-app';
|
|
@@ -122,30 +122,30 @@ const useTabItemTap = createTaroHook('onTabItemTap');
|
|
|
122
122
|
const useScope = () => undefined;
|
|
123
123
|
|
|
124
124
|
var taroHooks = /*#__PURE__*/Object.freeze({
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
125
|
+
__proto__: null,
|
|
126
|
+
useAddToFavorites: useAddToFavorites,
|
|
127
|
+
useDidHide: useDidHide,
|
|
128
|
+
useDidShow: useDidShow,
|
|
129
|
+
useError: useError,
|
|
130
|
+
useLaunch: useLaunch,
|
|
131
|
+
useLoad: useLoad,
|
|
132
|
+
useOptionMenuClick: useOptionMenuClick,
|
|
133
|
+
usePageNotFound: usePageNotFound,
|
|
134
|
+
usePageScroll: usePageScroll,
|
|
135
|
+
usePullDownRefresh: usePullDownRefresh,
|
|
136
|
+
usePullIntercept: usePullIntercept,
|
|
137
|
+
useReachBottom: useReachBottom,
|
|
138
|
+
useReady: useReady,
|
|
139
|
+
useResize: useResize,
|
|
140
|
+
useRouter: useRouter,
|
|
141
|
+
useSaveExitState: useSaveExitState,
|
|
142
|
+
useScope: useScope,
|
|
143
|
+
useShareAppMessage: useShareAppMessage,
|
|
144
|
+
useShareTimeline: useShareTimeline,
|
|
145
|
+
useTabItemTap: useTabItemTap,
|
|
146
|
+
useTitleClick: useTitleClick,
|
|
147
|
+
useUnhandledRejection: useUnhandledRejection,
|
|
148
|
+
useUnload: useUnload
|
|
149
149
|
});
|
|
150
150
|
|
|
151
151
|
let h$1;
|
|
@@ -164,7 +164,7 @@ function setReconciler(ReactDOM) {
|
|
|
164
164
|
});
|
|
165
165
|
});
|
|
166
166
|
hooks.tap('batchedEventUpdates', function (cb) {
|
|
167
|
-
ReactDOM.unstable_batchedUpdates(cb);
|
|
167
|
+
ReactDOM === null || ReactDOM === void 0 ? void 0 : ReactDOM.unstable_batchedUpdates(cb);
|
|
168
168
|
});
|
|
169
169
|
hooks.tap('mergePageInstance', function (prev, next) {
|
|
170
170
|
if (!prev || !next)
|
|
@@ -192,8 +192,19 @@ function setReconciler(ReactDOM) {
|
|
|
192
192
|
return h$1(customWrapper || 'taro-pull-to-refresh-core', null, h$1(el, Object.assign(Object.assign({}, newProps), refs)));
|
|
193
193
|
});
|
|
194
194
|
});
|
|
195
|
-
hooks.tap('getDOMNode', inst => {
|
|
196
|
-
|
|
195
|
+
hooks.tap('getDOMNode', (inst) => {
|
|
196
|
+
// 由于react 18移除了ReactDOM.findDOMNode方法,修复H5端 Taro.createSelectorQuery设置in(scope)时,报错问题
|
|
197
|
+
// https://zh-hans.react.dev/reference/react-dom/findDOMNode
|
|
198
|
+
if (!inst) {
|
|
199
|
+
return document;
|
|
200
|
+
}
|
|
201
|
+
else if (inst instanceof HTMLElement) {
|
|
202
|
+
return inst;
|
|
203
|
+
}
|
|
204
|
+
else if (inst.$taroPath) {
|
|
205
|
+
const el = document.getElementById(inst.$taroPath);
|
|
206
|
+
return el !== null && el !== void 0 ? el : document;
|
|
207
|
+
}
|
|
197
208
|
});
|
|
198
209
|
}
|
|
199
210
|
}
|
|
@@ -254,7 +265,7 @@ function connectReactPage(R, id) {
|
|
|
254
265
|
*/
|
|
255
266
|
function createReactApp(App, react, dom, config) {
|
|
256
267
|
if (process.env.NODE_ENV !== 'production') {
|
|
257
|
-
ensure(!!dom, '构建 React/
|
|
268
|
+
ensure(!!dom, '构建 React/Preact 项目请把 process.env.FRAMEWORK 设置为 \'react\'/\'preact\' ');
|
|
258
269
|
}
|
|
259
270
|
reactMeta.R = react;
|
|
260
271
|
h$1 = react.createElement;
|
|
@@ -270,15 +281,23 @@ function createReactApp(App, react, dom, config) {
|
|
|
270
281
|
return appInstanceRef.current;
|
|
271
282
|
}
|
|
272
283
|
function waitAppWrapper(cb) {
|
|
273
|
-
|
|
284
|
+
/**
|
|
285
|
+
* 当同个事件触发多次时,waitAppWrapper 会出现同步和异步任务的执行顺序问题,
|
|
286
|
+
* 导致某些场景下 onShow 会优于 onLaunch 执行
|
|
287
|
+
*/
|
|
288
|
+
appWrapperPromise.then(() => cb());
|
|
289
|
+
// appWrapper ? cb() : appWrapperPromise.then(() => cb())
|
|
274
290
|
}
|
|
275
291
|
function renderReactRoot() {
|
|
276
292
|
var _a, _b;
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
293
|
+
const appId = (config === null || config === void 0 ? void 0 : config.appId) || 'app';
|
|
294
|
+
let container = document.getElementById(appId);
|
|
295
|
+
if (container == null) {
|
|
296
|
+
const appContainer = document.getElementById(CONTAINER);
|
|
297
|
+
container = document.createElement(appId);
|
|
298
|
+
container.id = appId;
|
|
299
|
+
appContainer === null || appContainer === void 0 ? void 0 : appContainer.appendChild(container);
|
|
280
300
|
}
|
|
281
|
-
const container = document.getElementById(appId);
|
|
282
301
|
if ((react.version || '').startsWith('18')) {
|
|
283
302
|
const root = ReactDOM$1.createRoot(container);
|
|
284
303
|
(_a = root.render) === null || _a === void 0 ? void 0 : _a.call(root, h$1(AppWrapper));
|
|
@@ -302,7 +321,10 @@ function createReactApp(App, react, dom, config) {
|
|
|
302
321
|
const key = id + pageKeyId();
|
|
303
322
|
const page = () => h$1(pageWrapper, { key, tid: id });
|
|
304
323
|
this.pages.push(page);
|
|
305
|
-
this.forceUpdate(
|
|
324
|
+
this.forceUpdate((...args) => {
|
|
325
|
+
perf.stop(PAGE_INIT);
|
|
326
|
+
return cb(...args);
|
|
327
|
+
});
|
|
306
328
|
}
|
|
307
329
|
unmount(id, cb) {
|
|
308
330
|
const elements = this.elements;
|
|
@@ -340,7 +362,12 @@ function createReactApp(App, react, dom, config) {
|
|
|
340
362
|
}
|
|
341
363
|
},
|
|
342
364
|
unmount(id, cb) {
|
|
343
|
-
appWrapper
|
|
365
|
+
if (appWrapper) {
|
|
366
|
+
appWrapper.unmount(id, cb);
|
|
367
|
+
}
|
|
368
|
+
else {
|
|
369
|
+
appWrapperPromise.then(appWrapper => appWrapper.unmount(id, cb));
|
|
370
|
+
}
|
|
344
371
|
}
|
|
345
372
|
}, {
|
|
346
373
|
config: setDefaultDescriptor({
|
|
@@ -475,6 +502,7 @@ let h;
|
|
|
475
502
|
let ReactDOM;
|
|
476
503
|
let nativeComponentApp;
|
|
477
504
|
function initNativeComponentEntry(params) {
|
|
505
|
+
var _a;
|
|
478
506
|
const { R, ReactDOM, cb, isDefaultEntryDom = true } = params;
|
|
479
507
|
class NativeComponentWrapper extends R.Component {
|
|
480
508
|
constructor() {
|
|
@@ -558,7 +586,7 @@ function initNativeComponentEntry(params) {
|
|
|
558
586
|
// create
|
|
559
587
|
const nativeApp = document.createElement('nativeComponent');
|
|
560
588
|
// insert
|
|
561
|
-
app === null || app === void 0 ? void 0 : app.appendChild(nativeApp);
|
|
589
|
+
(_a = app === null || app === void 0 ? void 0 : app.parentNode) === null || _a === void 0 ? void 0 : _a.appendChild(nativeApp);
|
|
562
590
|
app = nativeApp;
|
|
563
591
|
}
|
|
564
592
|
// eslint-disable-next-line react/no-deprecated
|
|
@@ -728,6 +756,13 @@ function createNativePageConfig(Component, pageName, data, react, reactDOM, page
|
|
|
728
756
|
hooks.call('modifyPageObject', pageObj);
|
|
729
757
|
return pageObj;
|
|
730
758
|
}
|
|
759
|
+
function createH5NativeComponentConfig(Component, react, reactdom) {
|
|
760
|
+
reactMeta.R = react;
|
|
761
|
+
h = react.createElement;
|
|
762
|
+
ReactDOM = reactdom;
|
|
763
|
+
setReconciler(ReactDOM);
|
|
764
|
+
return Component;
|
|
765
|
+
}
|
|
731
766
|
function createNativeComponentConfig(Component, react, reactdom, componentConfig) {
|
|
732
767
|
var _a, _b;
|
|
733
768
|
reactMeta.R = react;
|
|
@@ -742,12 +777,27 @@ function createNativeComponentConfig(Component, react, reactdom, componentConfig
|
|
|
742
777
|
type: null,
|
|
743
778
|
value: null,
|
|
744
779
|
observer(_newVal, oldVal) {
|
|
745
|
-
var _a;
|
|
746
|
-
|
|
780
|
+
var _a, _b, _c, _d;
|
|
781
|
+
if (process.env.TARO_ENV === 'swan') {
|
|
782
|
+
// 百度模版传递 props 时 函数参数会被忽略,这里需要根据 id 获取 TaroElement 中的 props 赋值到 ctx.data 中
|
|
783
|
+
const inst = document.getElementById(this.id);
|
|
784
|
+
if (((_b = (_a = this.component) === null || _a === void 0 ? void 0 : _a.ctx) === null || _b === void 0 ? void 0 : _b.data) && inst) {
|
|
785
|
+
this.component.ctx.data.props = (_c = inst === null || inst === void 0 ? void 0 : inst.props) === null || _c === void 0 ? void 0 : _c.props;
|
|
786
|
+
}
|
|
787
|
+
}
|
|
788
|
+
oldVal && ((_d = this.component) === null || _d === void 0 ? void 0 : _d.forceUpdate());
|
|
747
789
|
}
|
|
748
790
|
}
|
|
749
791
|
},
|
|
750
792
|
created() {
|
|
793
|
+
var _a, _b;
|
|
794
|
+
if (process.env.TARO_ENV === 'swan') {
|
|
795
|
+
const inst = document.getElementById(this.id);
|
|
796
|
+
// 百度小程序 真机上 props中的函数会被转为Object 调用报错 导致后续组件无法渲染 这里先取TaroElement上的props,在properties中会重新赋值
|
|
797
|
+
if (((_a = this.data) === null || _a === void 0 ? void 0 : _a.props) && inst) {
|
|
798
|
+
this.data.props = ((_b = inst.props) === null || _b === void 0 ? void 0 : _b.props) || {};
|
|
799
|
+
}
|
|
800
|
+
}
|
|
751
801
|
const app = (isNewBlended ? nativeComponentApp : Current.app);
|
|
752
802
|
if (!app) {
|
|
753
803
|
initNativeComponentEntry({
|
|
@@ -826,6 +876,22 @@ function createNativeComponentConfig(Component, react, reactdom, componentConfig
|
|
|
826
876
|
return safeExecute(this.compId, 'onShareTimeline');
|
|
827
877
|
};
|
|
828
878
|
}
|
|
879
|
+
if (process.env.TARO_ENV === 'alipay') {
|
|
880
|
+
/**
|
|
881
|
+
* 支付宝需要修改生命周期 同时宿主需要开启component2
|
|
882
|
+
* 如果不开启 props对象中的函数参数会被忽略 导致无法调用
|
|
883
|
+
* @see https://opendocs.alipay.com/mini/03dbc3#compileOptions
|
|
884
|
+
* @returns
|
|
885
|
+
*/
|
|
886
|
+
componentObj.onInit = componentObj.created;
|
|
887
|
+
componentObj.didMount = componentObj.attached;
|
|
888
|
+
componentObj.didUpdate = function () {
|
|
889
|
+
var _a, _b;
|
|
890
|
+
this.data.props = this.props.props;
|
|
891
|
+
(_b = (_a = this === null || this === void 0 ? void 0 : this.component) === null || _a === void 0 ? void 0 : _a.forceUpdate) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
892
|
+
};
|
|
893
|
+
componentObj.didUnmount = componentObj.detached;
|
|
894
|
+
}
|
|
829
895
|
return componentObj;
|
|
830
896
|
}
|
|
831
897
|
function setCurrent(compId) {
|
|
@@ -867,7 +933,7 @@ hooks.tap('initNativeApi', function (taro) {
|
|
|
867
933
|
taro[hook] = taroHooks[hook];
|
|
868
934
|
}
|
|
869
935
|
});
|
|
870
|
-
if (
|
|
936
|
+
if (process.env.FRAMEWORK === 'preact' && process.env.TARO_PLATFORM === 'mini') {
|
|
871
937
|
const options = require('preact').options;
|
|
872
938
|
const oldVNodeHook = options.vnode;
|
|
873
939
|
const oldDiffedHook = options.diffed;
|
|
@@ -930,5 +996,5 @@ if (__TARO_FRAMEWORK__ === 'preact' && process.env.TARO_PLATFORM === 'mini') {
|
|
|
930
996
|
// })
|
|
931
997
|
}
|
|
932
998
|
|
|
933
|
-
export { connectReactPage, createNativeComponentConfig, createNativePageConfig, createReactApp, setReconciler, useAddToFavorites, useDidHide, useDidShow, useError, useLaunch, useLoad, useOptionMenuClick, usePageNotFound, usePageScroll, usePullDownRefresh, usePullIntercept, useReachBottom, useReady, useResize, useRouter, useSaveExitState, useScope, useShareAppMessage, useShareTimeline, useTabItemTap, useTitleClick, useUnhandledRejection, useUnload };
|
|
999
|
+
export { connectReactPage, createH5NativeComponentConfig, createNativeComponentConfig, createNativePageConfig, createReactApp, setReconciler, useAddToFavorites, useDidHide, useDidShow, useError, useLaunch, useLoad, useOptionMenuClick, usePageNotFound, usePageScroll, usePullDownRefresh, usePullIntercept, useReachBottom, useReady, useResize, useRouter, useSaveExitState, useScope, useShareAppMessage, useShareTimeline, useTabItemTap, useTitleClick, useUnhandledRejection, useUnload };
|
|
934
1000
|
//# sourceMappingURL=runtime.js.map
|