lcd-router-webpack-plugin 9.2.8 → 9.2.9
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.
|
@@ -51,7 +51,7 @@ var _default = (0, _helperPluginUtils.declare)((api, options) => {
|
|
|
51
51
|
const declaration = babelPath.get('declaration');
|
|
52
52
|
// 这里判断 declaration.isIdentifier() 是为了兼容 export default state 这种情况
|
|
53
53
|
// 但是实际上,无法判断 state 这个变量 是否为 对象,所以这里并不是非常严格的判断
|
|
54
|
-
if (declaration.isObjectExpression() || declaration.isIdentifier()) {
|
|
54
|
+
if (declaration.isObjectExpression() || declaration.isIdentifier() || declaration.isCallExpression()) {
|
|
55
55
|
const program = babelPath.findParent(x => x.isProgram());
|
|
56
56
|
if (program.isProgram()) {
|
|
57
57
|
const uid = program.scope.generateUidIdentifier('storeHoc');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enhance-reducer.js","names":["_helperPluginUtils","require","_nodePath","_interopRequireDefault","_fsExtra","obj","__esModule","default","_default","declare","api","options","assertVersion","types","isMainRegex","RegExp","reducerName","name","visitor","ExportDefaultDeclaration","babelPath","ops","pageRootAbs","test","filename","path","basename","getMeJson","dir","fse","existsSync","join","dirname","baseDir","meJSON","readJSONSync","mobx","namespace","replace","isChild","declaration","get","isObjectExpression","isIdentifier","program","findParent","x","isProgram","uid","scope","generateUidIdentifier","importMobxAdapter","importDeclaration","importDefaultSpecifier","stringLiteral","unshiftContainer","expression","callExpression","node","replaceWith","buildCodeFrameError","exports"],"sources":["../../../enhance-reducer.ts"],"sourcesContent":["import type * as __babel__core from '@babel/core';\nimport { declare } from '@babel/helper-plugin-utils';\nimport path from 'node:path';\nimport fse from 'fs-extra';\nimport type { MeJSON } from '../../utils/types';\n\ninterface Options {\n pageRootAbs: string;\n reducerName: string;\n}\n\nexport default declare<Options>((api, options) => {\n const { assertVersion, types } = api;\n assertVersion(7);\n const isMainRegex = new RegExp(`^${options.reducerName}.(j|t)s$`);\n return {\n name: 'babel-plugin-enhance-reducer',\n visitor: {\n ExportDefaultDeclaration: (babelPath, ops) => {\n // 这里校验一下文件名, 仅处理 reducer 文件\n if (!new RegExp(`${options.pageRootAbs}\\/.*${options.reducerName}\\.(j|t)s`).test(ops.filename)) return;\n\n const filename = path.basename(ops.filename);\n // 获取包含 me.json 的目录,用于获取当前页面的 namespace\n function getMeJson(dir: string) {\n if (fse.existsSync(path.join(dir, 'me.json'))) {\n return dir;\n }\n // 向上递归到 pageRootAbs 后终止,返回false\n if (dir === options.pageRootAbs) return false;\n return getMeJson(path.dirname(dir));\n }\n\n // 当前页面不包含 me.json,不处理\n const baseDir = getMeJson(path.dirname(ops.filename));\n if (!baseDir) return;\n\n // 读取 me.json\n const meJSON: MeJSON = fse.readJSONSync(path.join(baseDir, 'me.json'), 'utf8');\n\n // 仅处理 mobx 模式。\n if (!meJSON.mobx) return;\n\n // 当前页面的 相对路径作为唯一key,这里是 lcd 内部的一个约定,与生成路由插件 传递的 page 参数一致\n let namespace = baseDir.replace(`${options.pageRootAbs}/`, '');\n const isChild = !isMainRegex.test(filename);\n\n if (isChild) {\n namespace += `&&${filename.replace(new RegExp(`(.*)\\.${options.reducerName}\\.(j|t)s`), '$1')}`;\n }\n const declaration = babelPath.get('declaration');\n // 这里判断 declaration.isIdentifier() 是为了兼容 export default state 这种情况\n // 但是实际上,无法判断 state 这个变量 是否为 对象,所以这里并不是非常严格的判断\n if (declaration.isObjectExpression() || declaration.isIdentifier()) {\n const program = babelPath.findParent((x) => x.isProgram());\n if (program.isProgram()) {\n const uid = program.scope.generateUidIdentifier('storeHoc');\n const importMobxAdapter = types.importDeclaration(\n [types.importDefaultSpecifier(uid)],\n isChild ? types.stringLiteral('rrc-loader-helper/lib/store') : types.stringLiteral('rrc-loader-helper/lib/mobx-adapter'),\n );\n program.unshiftContainer('body', importMobxAdapter);\n const expression = types.callExpression(uid, [declaration.node, types.stringLiteral(namespace)]);\n declaration.replaceWith(expression);\n /* c8 ignore next 3 */\n } else {\n /* c8 ignore next 3 */\n throw babelPath.buildCodeFrameError('语法解析错误,没有成功的探寻到 Program');\n }\n }\n },\n },\n };\n});\n"],"mappings":";;;;;;AACA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,QAAA,GAAAD,sBAAA,CAAAF,OAAA;AAA2B,SAAAE,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAQZ,IAAAC,0BAAO,EAAU,CAACC,GAAG,EAAEC,OAAO,KAAK;EAChD,MAAM;IAAEC,aAAa;IAAEC;EAAM,CAAC,GAAGH,GAAG;EACpCE,aAAa,CAAC,CAAC,CAAC;EAChB,MAAME,WAAW,GAAG,IAAIC,MAAM,CAAE,IAAGJ,OAAO,CAACK,WAAY,UAAS,CAAC;EACjE,OAAO;IACLC,IAAI,EAAE,8BAA8B;IACpCC,OAAO,EAAE;MACPC,wBAAwB,EAAEA,CAACC,SAAS,EAAEC,GAAG,KAAK;QAC5C;QACA,IAAI,CAAC,IAAIN,MAAM,CAAE,GAAEJ,OAAO,CAACW,WAAY,OAAMX,OAAO,CAACK,WAAY,UAAS,CAAC,CAACO,IAAI,CAACF,GAAG,CAACG,QAAQ,CAAC,EAAE;QAEhG,MAAMA,QAAQ,GAAGC,iBAAI,CAACC,QAAQ,CAACL,GAAG,CAACG,QAAQ,CAAC;QAC5C;QACA,SAASG,SAASA,CAACC,GAAW,EAAE;UAC9B,IAAIC,gBAAG,CAACC,UAAU,CAACL,iBAAI,CAACM,IAAI,CAACH,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE;YAC7C,OAAOA,GAAG;UACZ;UACA;UACA,IAAIA,GAAG,KAAKjB,OAAO,CAACW,WAAW,EAAE,OAAO,KAAK;UAC7C,OAAOK,SAAS,CAACF,iBAAI,CAACO,OAAO,CAACJ,GAAG,CAAC,CAAC;QACrC;;QAEA;QACA,MAAMK,OAAO,GAAGN,SAAS,CAACF,iBAAI,CAACO,OAAO,CAACX,GAAG,CAACG,QAAQ,CAAC,CAAC;QACrD,IAAI,CAACS,OAAO,EAAE;;QAEd;QACA,MAAMC,MAAc,GAAGL,gBAAG,CAACM,YAAY,CAACV,iBAAI,CAACM,IAAI,CAACE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC;;QAE9E;QACA,IAAI,CAACC,MAAM,CAACE,IAAI,EAAE;;QAElB;QACA,IAAIC,SAAS,GAAGJ,OAAO,CAACK,OAAO,CAAE,GAAE3B,OAAO,CAACW,WAAY,GAAE,EAAE,EAAE,CAAC;QAC9D,MAAMiB,OAAO,GAAG,CAACzB,WAAW,CAACS,IAAI,CAACC,QAAQ,CAAC;QAE3C,IAAIe,OAAO,EAAE;UACXF,SAAS,IAAK,KAAIb,QAAQ,CAACc,OAAO,CAAC,IAAIvB,MAAM,CAAE,SAAQJ,OAAO,CAACK,WAAY,UAAS,CAAC,EAAE,IAAI,CAAE,EAAC;QAChG;QACA,MAAMwB,WAAW,GAAGpB,SAAS,CAACqB,GAAG,CAAC,aAAa,CAAC;QAChD;QACA;QACA,IAAID,WAAW,CAACE,kBAAkB,EAAE,IAAIF,WAAW,CAACG,YAAY,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"enhance-reducer.js","names":["_helperPluginUtils","require","_nodePath","_interopRequireDefault","_fsExtra","obj","__esModule","default","_default","declare","api","options","assertVersion","types","isMainRegex","RegExp","reducerName","name","visitor","ExportDefaultDeclaration","babelPath","ops","pageRootAbs","test","filename","path","basename","getMeJson","dir","fse","existsSync","join","dirname","baseDir","meJSON","readJSONSync","mobx","namespace","replace","isChild","declaration","get","isObjectExpression","isIdentifier","isCallExpression","program","findParent","x","isProgram","uid","scope","generateUidIdentifier","importMobxAdapter","importDeclaration","importDefaultSpecifier","stringLiteral","unshiftContainer","expression","callExpression","node","replaceWith","buildCodeFrameError","exports"],"sources":["../../../enhance-reducer.ts"],"sourcesContent":["import type * as __babel__core from '@babel/core';\nimport { declare } from '@babel/helper-plugin-utils';\nimport path from 'node:path';\nimport fse from 'fs-extra';\nimport type { MeJSON } from '../../utils/types';\n\ninterface Options {\n pageRootAbs: string;\n reducerName: string;\n}\n\nexport default declare<Options>((api, options) => {\n const { assertVersion, types } = api;\n assertVersion(7);\n const isMainRegex = new RegExp(`^${options.reducerName}.(j|t)s$`);\n return {\n name: 'babel-plugin-enhance-reducer',\n visitor: {\n ExportDefaultDeclaration: (babelPath, ops) => {\n // 这里校验一下文件名, 仅处理 reducer 文件\n if (!new RegExp(`${options.pageRootAbs}\\/.*${options.reducerName}\\.(j|t)s`).test(ops.filename)) return;\n\n const filename = path.basename(ops.filename);\n // 获取包含 me.json 的目录,用于获取当前页面的 namespace\n function getMeJson(dir: string) {\n if (fse.existsSync(path.join(dir, 'me.json'))) {\n return dir;\n }\n // 向上递归到 pageRootAbs 后终止,返回false\n if (dir === options.pageRootAbs) return false;\n return getMeJson(path.dirname(dir));\n }\n\n // 当前页面不包含 me.json,不处理\n const baseDir = getMeJson(path.dirname(ops.filename));\n if (!baseDir) return;\n\n // 读取 me.json\n const meJSON: MeJSON = fse.readJSONSync(path.join(baseDir, 'me.json'), 'utf8');\n\n // 仅处理 mobx 模式。\n if (!meJSON.mobx) return;\n\n // 当前页面的 相对路径作为唯一key,这里是 lcd 内部的一个约定,与生成路由插件 传递的 page 参数一致\n let namespace = baseDir.replace(`${options.pageRootAbs}/`, '');\n const isChild = !isMainRegex.test(filename);\n\n if (isChild) {\n namespace += `&&${filename.replace(new RegExp(`(.*)\\.${options.reducerName}\\.(j|t)s`), '$1')}`;\n }\n const declaration = babelPath.get('declaration');\n // 这里判断 declaration.isIdentifier() 是为了兼容 export default state 这种情况\n // 但是实际上,无法判断 state 这个变量 是否为 对象,所以这里并不是非常严格的判断\n if (declaration.isObjectExpression() || declaration.isIdentifier() || declaration.isCallExpression()) {\n const program = babelPath.findParent((x) => x.isProgram());\n if (program.isProgram()) {\n const uid = program.scope.generateUidIdentifier('storeHoc');\n const importMobxAdapter = types.importDeclaration(\n [types.importDefaultSpecifier(uid)],\n isChild ? types.stringLiteral('rrc-loader-helper/lib/store') : types.stringLiteral('rrc-loader-helper/lib/mobx-adapter'),\n );\n program.unshiftContainer('body', importMobxAdapter);\n const expression = types.callExpression(uid, [declaration.node, types.stringLiteral(namespace)]);\n declaration.replaceWith(expression);\n /* c8 ignore next 3 */\n } else {\n /* c8 ignore next 3 */\n throw babelPath.buildCodeFrameError('语法解析错误,没有成功的探寻到 Program');\n }\n }\n },\n },\n };\n});\n"],"mappings":"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"}
|