lcd-router-webpack-plugin 9.0.0-alpha.9 → 9.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.
@@ -1 +1 @@
1
- {"version":3,"file":"Generator.d.ts","sourceRoot":"","sources":["../src/Generator.ts"],"names":[],"mappings":"AACA,qBAAa,SAAS,CAAC,CAAC;IACtB,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;;IAKhC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAI1B,SAAS,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM;IAItC,SAAS,CAAC,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAO/D;;;;;;OAMG;IACH,SAAS,CAAC,sBAAsB,CAC9B,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,EACpD,MAAM,EAAE,MAAM;CAcjB"}
1
+ {"version":3,"file":"Generator.d.ts","sourceRoot":"","sources":["../src/Generator.ts"],"names":[],"mappings":"AACA,qBAAa,SAAS,CAAC,CAAC;IACtB,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;;IAKhC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAI1B,SAAS,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM;IAItC,SAAS,CAAC,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAI/D;;;;;;OAMG;IACH,SAAS,CAAC,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM;CAUtG"}
@@ -1 +1 @@
1
- {"version":3,"file":"Generator.js","names":["_core","require","Generator","cache","constructor","Map","set","name","value","identifierString","arg","replace","importDefaultDeclaration","source","types","importDeclaration","importDefaultSpecifier","identifier","stringLiteral","importNamedDeclaration","names","map","x","importSpecifier","exports"],"sources":["../Generator.ts"],"sourcesContent":["import { types } from '@babel/core';\nexport class Generator<T> {\n protected cache: Map<string, T>;\n constructor() {\n this.cache = new Map<string, T>();\n }\n\n set(name: string, value: T) {\n this.cache.set(name, value);\n }\n\n protected identifierString(arg: string) {\n return arg.replace(/(\\/|-)/g, '_');\n }\n\n protected importDefaultDeclaration(name: string, source: string) {\n return types.importDeclaration(\n [types.importDefaultSpecifier(types.identifier(this.identifierString(name)))],\n types.stringLiteral(source),\n );\n }\n\n /**\n * 创建一条 import 语句, 例如:\n * importNamedDeclaration(['a', 'b'], 'xxx/c') 会生成 import {a, b} from 'xxx/c'\n *\n * 也支持 alias, 例如:\n * importNamedDeclaration([['a', 'aliasName'], 'b'], 'xxx/c') 会生成 import {a as aliasName, b} from 'xxx/c'\n */\n protected importNamedDeclaration(\n names: Array<string | [name: string, alias: string]>,\n source: string,\n ) {\n return types.importDeclaration(\n names.map((x) =>\n typeof x === 'string'\n ? types.importSpecifier(types.identifier(x), types.identifier(x))\n : types.importSpecifier(\n types.identifier(this.identifierString(x[1])),\n types.identifier(x[0]),\n ),\n ),\n types.stringLiteral(source),\n );\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACO,MAAMC,SAAS,CAAI;EACdC,KAAK;EACfC,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACD,KAAK,GAAG,IAAIE,GAAG,EAAa;EACnC;EAEAC,GAAGA,CAACC,IAAY,EAAEC,KAAQ,EAAE;IAC1B,IAAI,CAACL,KAAK,CAACG,GAAG,CAACC,IAAI,EAAEC,KAAK,CAAC;EAC7B;EAEUC,gBAAgBA,CAACC,GAAW,EAAE;IACtC,OAAOA,GAAG,CAACC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;EACpC;EAEUC,wBAAwBA,CAACL,IAAY,EAAEM,MAAc,EAAE;IAC/D,OAAOC,WAAK,CAACC,iBAAiB,CAC5B,CAACD,WAAK,CAACE,sBAAsB,CAACF,WAAK,CAACG,UAAU,CAAC,IAAI,CAACR,gBAAgB,CAACF,IAAI,CAAC,CAAC,CAAC,CAAC,EAC7EO,WAAK,CAACI,aAAa,CAACL,MAAM,CAAC,CAC5B;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACYM,sBAAsBA,CAC9BC,KAAoD,EACpDP,MAAc,EACd;IACA,OAAOC,WAAK,CAACC,iBAAiB,CAC5BK,KAAK,CAACC,GAAG,CAAEC,CAAC,IACV,OAAOA,CAAC,KAAK,QAAQ,GACjBR,WAAK,CAACS,eAAe,CAACT,WAAK,CAACG,UAAU,CAACK,CAAC,CAAC,EAAER,WAAK,CAACG,UAAU,CAACK,CAAC,CAAC,CAAC,GAC/DR,WAAK,CAACS,eAAe,CACnBT,WAAK,CAACG,UAAU,CAAC,IAAI,CAACR,gBAAgB,CAACa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7CR,WAAK,CAACG,UAAU,CAACK,CAAC,CAAC,CAAC,CAAC,CAAC,CACvB,CACN,EACDR,WAAK,CAACI,aAAa,CAACL,MAAM,CAAC,CAC5B;EACH;AACF;AAACW,OAAA,CAAAtB,SAAA,GAAAA,SAAA"}
1
+ {"version":3,"file":"Generator.js","names":["_core","require","Generator","cache","constructor","Map","set","name","value","identifierString","arg","replace","importDefaultDeclaration","source","types","importDeclaration","importDefaultSpecifier","identifier","stringLiteral","importNamedDeclaration","names","map","x","importSpecifier","exports"],"sources":["../Generator.ts"],"sourcesContent":["import { types } from '@babel/core';\nexport class Generator<T> {\n protected cache: Map<string, T>;\n constructor() {\n this.cache = new Map<string, T>();\n }\n\n set(name: string, value: T) {\n this.cache.set(name, value);\n }\n\n protected identifierString(arg: string) {\n return arg.replace(/(\\/|-)/g, '_');\n }\n\n protected importDefaultDeclaration(name: string, source: string) {\n return types.importDeclaration([types.importDefaultSpecifier(types.identifier(this.identifierString(name)))], types.stringLiteral(source));\n }\n\n /**\n * 创建一条 import 语句, 例如:\n * importNamedDeclaration(['a', 'b'], 'xxx/c') 会生成 import {a, b} from 'xxx/c'\n *\n * 也支持 alias, 例如:\n * importNamedDeclaration([['a', 'aliasName'], 'b'], 'xxx/c') 会生成 import {a as aliasName, b} from 'xxx/c'\n */\n protected importNamedDeclaration(names: Array<string | [name: string, alias: string]>, source: string) {\n return types.importDeclaration(\n names.map((x) =>\n typeof x === 'string'\n ? types.importSpecifier(types.identifier(x), types.identifier(x))\n : types.importSpecifier(types.identifier(this.identifierString(x[1])), types.identifier(x[0])),\n ),\n types.stringLiteral(source),\n );\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACO,MAAMC,SAAS,CAAI;EACdC,KAAK;EACfC,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACD,KAAK,GAAG,IAAIE,GAAG,EAAa;EACnC;EAEAC,GAAGA,CAACC,IAAY,EAAEC,KAAQ,EAAE;IAC1B,IAAI,CAACL,KAAK,CAACG,GAAG,CAACC,IAAI,EAAEC,KAAK,CAAC;EAC7B;EAEUC,gBAAgBA,CAACC,GAAW,EAAE;IACtC,OAAOA,GAAG,CAACC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;EACpC;EAEUC,wBAAwBA,CAACL,IAAY,EAAEM,MAAc,EAAE;IAC/D,OAAOC,WAAK,CAACC,iBAAiB,CAAC,CAACD,WAAK,CAACE,sBAAsB,CAACF,WAAK,CAACG,UAAU,CAAC,IAAI,CAACR,gBAAgB,CAACF,IAAI,CAAC,CAAC,CAAC,CAAC,EAAEO,WAAK,CAACI,aAAa,CAACL,MAAM,CAAC,CAAC;EAC5I;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACYM,sBAAsBA,CAACC,KAAoD,EAAEP,MAAc,EAAE;IACrG,OAAOC,WAAK,CAACC,iBAAiB,CAC5BK,KAAK,CAACC,GAAG,CAAEC,CAAC,IACV,OAAOA,CAAC,KAAK,QAAQ,GACjBR,WAAK,CAACS,eAAe,CAACT,WAAK,CAACG,UAAU,CAACK,CAAC,CAAC,EAAER,WAAK,CAACG,UAAU,CAACK,CAAC,CAAC,CAAC,GAC/DR,WAAK,CAACS,eAAe,CAACT,WAAK,CAACG,UAAU,CAAC,IAAI,CAACR,gBAAgB,CAACa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAER,WAAK,CAACG,UAAU,CAACK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACjG,EACDR,WAAK,CAACI,aAAa,CAACL,MAAM,CAAC,CAC5B;EACH;AACF;AAACW,OAAA,CAAAtB,SAAA,GAAAA,SAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ReducersGenerator.d.ts","sourceRoot":"","sources":["../src/ReducersGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,UAAU,0BAA0B;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AACD,qBAAa,iBAAkB,SAAQ,SAAS,CAAC,0BAA0B,CAAC;;IAM1E,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG;IAe/E,eAAe,CAAC,OAAO,EAAE,MAAM;CAyDhC"}
1
+ {"version":3,"file":"ReducersGenerator.d.ts","sourceRoot":"","sources":["../src/ReducersGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,UAAU,0BAA0B;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AACD,qBAAa,iBAAkB,SAAQ,SAAS,CAAC,0BAA0B,CAAC;;IAM1E,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG;IAY/E,eAAe,CAAC,OAAO,EAAE,MAAM;CA0ChC"}
@@ -28,6 +28,7 @@ class ReducersGenerator extends _Generator.Generator {
28
28
  writeCodeToFile(absPath) {
29
29
  const items = Array.from(this.cache.values());
30
30
  const code = (0, _core.transformSync)('', {
31
+ babelrc: false,
31
32
  plugins: [() => {
32
33
  return {
33
34
  name: 'babel-plugin-replace-react-redux',
@@ -35,7 +36,9 @@ class ReducersGenerator extends _Generator.Generator {
35
36
  Program: {
36
37
  enter: path => {
37
38
  const codes = [this.importDefaultDeclaration('decorate', 'rrc-loader-helper/lib/reducer-decorate')];
38
- items.filter(x => x.meJSON.sync || x.isExternal).map(x => this.importNamedDeclaration([['reducer', x.namespace]], x.meJSONPath)).forEach(x => codes.push(x));
39
+ items.filter(x => x.meJSON.sync || x.isExternal)
40
+ // 创建一个 import 语句,从 me.json 中导入 reducer 函数
41
+ .map(x => this.importNamedDeclaration([['reducer', x.namespace]], x.meJSONPath)).forEach(x => codes.push(x));
39
42
  const properties = items.map(x => {
40
43
  if (x.isExternal || x.meJSON.sync) {
41
44
  if (x.meJSON.mobx) {
@@ -1 +1 @@
1
- {"version":3,"file":"ReducersGenerator.js","names":["_fs","_interopRequireDefault","require","_core","_Generator","obj","__esModule","default","ReducersGenerator","Generator","constructor","objectPropertyValue","type","value","types","callExpression","identifier","identifierString","stringLiteral","writeCodeToFile","absPath","items","Array","from","cache","values","code","transformSync","plugins","name","visitor","Program","enter","path","codes","importDefaultDeclaration","filter","x","meJSON","sync","isExternal","map","importNamedDeclaration","namespace","meJSONPath","forEach","push","properties","mobx","objectProperty","exportDefaultDeclaration","objectExpression","pushContainer","fs","writeFileSync","encoding","exports"],"sources":["../ReducersGenerator.ts"],"sourcesContent":["import fs from 'fs';\nimport babelCore, { transformSync, types } from '@babel/core';\nimport type { MeJSON } from './utils';\nimport { Generator } from './Generator';\n\ninterface GetReducersBabelPluginItem {\n meJSON: MeJSON;\n namespace: string;\n isExternal: boolean;\n meJSONPath: string;\n}\nexport class ReducersGenerator extends Generator<GetReducersBabelPluginItem> {\n constructor() {\n super();\n }\n\n // TODO: 这里类型 加了个 any, 不太希望写else, 所以导致的问题,ts类型推导似乎不合理\n objectPropertyValue(type: 'call' | 'string' | 'identifier', value: string): any {\n if (type === 'call') {\n return types.callExpression(types.identifier('decorate'), [\n types.identifier(this.identifierString(value)),\n types.stringLiteral(value),\n ]);\n }\n if (type === 'string') {\n return types.stringLiteral('');\n }\n if (type === 'identifier') {\n return types.identifier(this.identifierString(value));\n }\n }\n\n writeCodeToFile(absPath: string) {\n const items = Array.from(this.cache.values());\n const code = transformSync('', {\n plugins: [\n () => {\n return {\n name: 'babel-plugin-replace-react-redux',\n visitor: {\n Program: {\n enter: (path) => {\n const codes: (\n | babelCore.types.ImportDeclaration\n | babelCore.types.ExportDefaultDeclaration\n )[] = [\n this.importDefaultDeclaration(\n 'decorate',\n 'rrc-loader-helper/lib/reducer-decorate',\n ),\n ];\n items\n .filter((x) => x.meJSON.sync || x.isExternal)\n .map((x) =>\n this.importNamedDeclaration([['reducer', x.namespace]], x.meJSONPath),\n )\n .forEach((x) => codes.push(x));\n\n const properties = items.map((x) => {\n if (x.isExternal || x.meJSON.sync) {\n if (x.meJSON.mobx) {\n return types.objectProperty(\n types.stringLiteral(x.namespace),\n this.objectPropertyValue('call', x.namespace),\n );\n }\n return types.objectProperty(\n types.stringLiteral(x.namespace),\n this.objectPropertyValue('identifier', x.namespace),\n );\n }\n return types.objectProperty(\n types.stringLiteral(x.namespace),\n this.objectPropertyValue('string', x.namespace),\n );\n });\n\n codes.push(types.exportDefaultDeclaration(types.objectExpression(properties)));\n\n path.pushContainer('body', codes);\n },\n },\n },\n };\n },\n ],\n });\n fs.writeFileSync(absPath, code?.code!, { encoding: 'utf8' });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ReducersGenerator.js","names":["_fs","_interopRequireDefault","require","_core","_Generator","obj","__esModule","default","ReducersGenerator","Generator","constructor","objectPropertyValue","type","value","types","callExpression","identifier","identifierString","stringLiteral","writeCodeToFile","absPath","items","Array","from","cache","values","code","transformSync","babelrc","plugins","name","visitor","Program","enter","path","codes","importDefaultDeclaration","filter","x","meJSON","sync","isExternal","map","importNamedDeclaration","namespace","meJSONPath","forEach","push","properties","mobx","objectProperty","exportDefaultDeclaration","objectExpression","pushContainer","fs","writeFileSync","encoding","exports"],"sources":["../ReducersGenerator.ts"],"sourcesContent":["import fs from 'fs';\nimport babelCore, { transformSync, types } from '@babel/core';\nimport type { MeJSON } from './utils';\nimport { Generator } from './Generator';\n\ninterface GetReducersBabelPluginItem {\n meJSON: MeJSON;\n namespace: string;\n isExternal: boolean;\n meJSONPath: string;\n}\nexport class ReducersGenerator extends Generator<GetReducersBabelPluginItem> {\n constructor() {\n super();\n }\n\n // TODO: 这里类型 加了个 any, 不太希望写else, 所以导致的问题,ts类型推导似乎不合理\n objectPropertyValue(type: 'call' | 'string' | 'identifier', value: string): any {\n if (type === 'call') {\n return types.callExpression(types.identifier('decorate'), [types.identifier(this.identifierString(value)), types.stringLiteral(value)]);\n }\n if (type === 'string') {\n return types.stringLiteral('');\n }\n if (type === 'identifier') {\n return types.identifier(this.identifierString(value));\n }\n }\n\n writeCodeToFile(absPath: string) {\n const items = Array.from(this.cache.values());\n const code = transformSync('', {\n babelrc: false,\n plugins: [\n () => {\n return {\n name: 'babel-plugin-replace-react-redux',\n visitor: {\n Program: {\n enter: (path) => {\n const codes: (babelCore.types.ImportDeclaration | babelCore.types.ExportDefaultDeclaration)[] = [\n this.importDefaultDeclaration('decorate', 'rrc-loader-helper/lib/reducer-decorate'),\n ];\n items\n .filter((x) => x.meJSON.sync || x.isExternal)\n // 创建一个 import 语句,从 me.json 中导入 reducer 函数\n .map((x) => this.importNamedDeclaration([['reducer', x.namespace]], x.meJSONPath))\n .forEach((x) => codes.push(x));\n\n const properties = items.map((x) => {\n if (x.isExternal || x.meJSON.sync) {\n if (x.meJSON.mobx) {\n return types.objectProperty(types.stringLiteral(x.namespace), this.objectPropertyValue('call', x.namespace));\n }\n return types.objectProperty(types.stringLiteral(x.namespace), this.objectPropertyValue('identifier', x.namespace));\n }\n return types.objectProperty(types.stringLiteral(x.namespace), this.objectPropertyValue('string', x.namespace));\n });\n\n codes.push(types.exportDefaultDeclaration(types.objectExpression(properties)));\n\n path.pushContainer('body', codes);\n },\n },\n },\n };\n },\n ],\n });\n fs.writeFileSync(absPath, code?.code!, { encoding: 'utf8' });\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RoutersGenerator.d.ts","sourceRoot":"","sources":["../src/RoutersGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,UAAU,IAAI;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;CAChB;AAID,qBAAa,gBAAiB,SAAQ,SAAS,CAAC,IAAI,CAAC;IACnD,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,WAAW,CAAC;gBAEb,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW;IAMrD,OAAO,CAAC,iCAAiC;IA4CzC,OAAO,CAAC,0BAA0B;IAgBlC,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,SAAS;IAuBjB,OAAO,CAAC,oBAAoB;IAqC5B,OAAO,CAAC,sBAAsB;IAqC9B,eAAe,CAAC,OAAO,EAAE,MAAM;CAwGhC"}
1
+ {"version":3,"file":"RoutersGenerator.d.ts","sourceRoot":"","sources":["../src/RoutersGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,UAAU,IAAI;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;CAChB;AAID,qBAAa,gBAAiB,SAAQ,SAAS,CAAC,IAAI,CAAC;IACnD,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,WAAW,CAAC;gBAEb,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW;IAMrD,OAAO,CAAC,iCAAiC;IAyCzC,OAAO,CAAC,0BAA0B;IAYlC,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,SAAS;IAuBjB,OAAO,CAAC,oBAAoB;IA2B5B,OAAO,CAAC,sBAAsB;IAyB9B,eAAe,CAAC,OAAO,EAAE,MAAM;CAqEhC"}
@@ -1 +1 @@
1
- {"version":3,"file":"RoutersGenerator.js","names":["_fs","_interopRequireDefault","require","_core","_Generator","obj","__esModule","default","RoutersGenerator","Generator","config","pathService","constructor","errorComponentVariableDeclaration","types","variableDeclaration","variableDeclarator","identifier","arrowFunctionExpression","blockStatement","returnStatement","jsxElement","jsxOpeningElement","jsxIdentifier","jsxClosingElement","jsxText","jsxExpressionContainer","optionalMemberExpression","memberExpression","loadingVariableDeclaration","jsxFragment","jsxOpeningFragment","jsxClosingFragment","createDowngradeValue","meJSON","name","defaultValue","transform","item","downgradeValue","route","keepAlive","retain","title","undefined","linkExtendable","injectStore","pageImportExpression","returnObjectProperties","objectProperty","sync","push","booleanLiteral","sourceAst","stringLiteral","meJSONPath","enablePreFetch","addComment","callExpression","import","objectExpression","loadableCallExpression","nullLiteral","page","JSON","stringify","writeCodeToFile","absPath","items","Array","from","cache","values","code","transformSync","plugins","visitor","Program","enter","path","ast","importNamedDeclaration","importDefaultDeclaration","loading","errorComponent","theme","hash","getThemeJSCacheFileAbs","expressionStatement","optionalCallExpression","_","filter","x","isExternal","map","dangerousRoute","exact","exportDefaultDeclaration","arrayExpression","pushContainer","fs","writeFileSync","keys","length","join","encoding","exports"],"sources":["../RoutersGenerator.ts"],"sourcesContent":["import fs from 'fs';\nimport { transformSync, types } from '@babel/core';\nimport type { Options, MeJSON, PathService } from './utils';\nimport { Generator } from './Generator';\n\ninterface Item {\n meJSONPath: string;\n meJSON: MeJSON;\n isExternal: boolean;\n path: string;\n page: string;\n exact: boolean;\n}\n\ninterface TransformItem extends Item, MeJSON {}\n\nexport class RoutersGenerator extends Generator<Item> {\n config: Options;\n pathService: PathService;\n\n constructor(config: Options, pathService: PathService) {\n super();\n this.config = config;\n this.pathService = pathService;\n }\n\n private errorComponentVariableDeclaration() {\n return types.variableDeclaration('const', [\n types.variableDeclarator(\n types.identifier('ErrorComponent'),\n types.arrowFunctionExpression(\n [types.identifier('props')],\n types.blockStatement([\n types.returnStatement(\n types.jsxElement(\n types.jsxOpeningElement(types.jsxIdentifier('div'), [], false),\n types.jsxClosingElement(types.jsxIdentifier('div')),\n [\n types.jsxElement(\n types.jsxOpeningElement(types.jsxIdentifier('h1'), [], false),\n types.jsxClosingElement(types.jsxIdentifier('h1')),\n [types.jsxText('页面渲染发生异常')],\n ),\n types.jsxElement(\n types.jsxOpeningElement(types.jsxIdentifier('span'), [], false),\n types.jsxClosingElement(types.jsxIdentifier('span')),\n [\n types.jsxExpressionContainer(\n types.optionalMemberExpression(\n types.memberExpression(\n types.identifier('props'),\n types.identifier('errorStack'),\n ),\n types.identifier('message'),\n false,\n true,\n ),\n ),\n ],\n ),\n ],\n false,\n ),\n ),\n ]),\n ),\n ),\n ]);\n }\n\n private loadingVariableDeclaration() {\n return types.variableDeclaration('const', [\n types.variableDeclarator(\n types.identifier('Loading'),\n types.arrowFunctionExpression(\n [],\n types.blockStatement([\n types.returnStatement(\n types.jsxFragment(types.jsxOpeningFragment(), types.jsxClosingFragment(), []),\n ),\n ]),\n ),\n ),\n ]);\n }\n\n private createDowngradeValue(meJSON: MeJSON) {\n return <T extends keyof MeJSON>(name: T, defaultValue: MeJSON[T]) => {\n /** @ts-ignore */\n return meJSON[name] ?? this.config[name] ?? defaultValue;\n };\n }\n\n private transform(item: Item): TransformItem {\n const downgradeValue = this.createDowngradeValue(item.meJSON);\n // 路由参数\n let route = item.meJSON.route ?? '';\n const keepAlive = downgradeValue('keepAlive', false);\n const retain = downgradeValue('retain', false);\n const title = downgradeValue('title', undefined);\n // FUCK keep-alive 特性的坑, 为了兼容同一个页面多次打开 动态拓展 redux 的reducer 节点\n const linkExtendable = downgradeValue('linkExtendable', false);\n route = linkExtendable ? `${route}/:id?` : route;\n let injectStore = downgradeValue('injectStore', false);\n if (injectStore === true) injectStore = 'store';\n return {\n ...item,\n route,\n keepAlive,\n retain,\n title,\n linkExtendable,\n injectStore,\n };\n }\n\n private pageImportExpression(item: TransformItem) {\n const returnObjectProperties = [\n types.objectProperty(types.identifier('module'), types.identifier('module')),\n ];\n if (item.meJSON.sync) {\n returnObjectProperties.push(\n types.objectProperty(types.identifier('sync'), types.booleanLiteral(true)),\n );\n } else {\n returnObjectProperties.push(\n types.objectProperty(types.identifier('sync'), types.booleanLiteral(false)),\n types.objectProperty(types.identifier('reducers'), types.identifier('reducers')),\n );\n }\n const sourceAst = types.stringLiteral(item.meJSONPath);\n\n if (this.config.enablePreFetch) {\n types.addComment(sourceAst, 'leading', 'webpackPrefetch: true');\n }\n\n return types.callExpression(\n types.memberExpression(\n types.callExpression(types.import(), [sourceAst]),\n types.identifier('then'),\n ),\n [\n types.arrowFunctionExpression(\n [types.identifier('module')],\n types.blockStatement([\n // TODO\n types.returnStatement(types.objectExpression(returnObjectProperties)),\n ]),\n ),\n ],\n );\n }\n\n private loadableCallExpression(item: TransformItem) {\n return types.callExpression(types.identifier('Loadable'), [\n types.objectExpression([\n types.objectProperty(\n types.identifier('title'),\n item.title ? types.stringLiteral(item.title) : types.nullLiteral(),\n ),\n types.objectProperty(types.identifier('keepAlive'), types.booleanLiteral(item.keepAlive!)),\n types.objectProperty(types.identifier('route'), types.stringLiteral(item.route!)),\n types.objectProperty(types.identifier('retain'), types.booleanLiteral(item.retain!)),\n types.objectProperty(\n types.identifier('injectStore'),\n typeof item.injectStore === 'boolean'\n ? types.booleanLiteral(item.injectStore)\n : types.stringLiteral(item.injectStore!),\n ),\n types.objectProperty(types.identifier('page'), types.stringLiteral(item.page)),\n types.objectProperty(types.identifier('loading'), types.identifier('Loading')),\n types.objectProperty(\n types.identifier('errorComponent'),\n types.identifier('ErrorComponent'),\n ),\n types.objectProperty(\n types.identifier('metaInfo'),\n types.callExpression(\n types.memberExpression(types.identifier('JSON'), types.identifier('parse')),\n [types.stringLiteral(JSON.stringify(item.meJSON))],\n ),\n ),\n types.objectProperty(\n types.identifier('loader'),\n types.arrowFunctionExpression([], this.pageImportExpression(item)),\n ),\n ]),\n ]);\n }\n\n writeCodeToFile(absPath: string) {\n const items = Array.from(this.cache.values());\n const code = transformSync('', {\n plugins: [\n () => {\n return {\n name: 'babel-plugin-replace-react-redux',\n visitor: {\n Program: {\n enter: (path) => {\n const ast: (\n | types.ImportDeclaration\n | types.VariableDeclaration\n | types.ExportDefaultDeclaration\n | types.ExpressionStatement\n )[] = [\n this.importNamedDeclaration([], 'rrc-loader-helper/lib/fake-react'),\n this.importDefaultDeclaration('Loadable', 'rrc-loader-helper/lib/loadable'),\n this.importDefaultDeclaration('React', 'react'),\n ];\n\n /** 如果用户没有指定loading组件,那么自动生成一个空 loading */\n if (this.config.loading) {\n ast.push(this.importDefaultDeclaration('Loading', this.config.loading));\n } else {\n ast.push(this.loadingVariableDeclaration());\n }\n\n if (this.config.errorComponent) {\n ast.push(\n this.importDefaultDeclaration('ErrorComponent', this.config.errorComponent),\n );\n } else {\n ast.push(this.errorComponentVariableDeclaration());\n }\n\n if (this.config.theme?.hash) {\n ast.push(\n this.importNamedDeclaration(\n ['toGlobalTheme'],\n this.pathService.getThemeJSCacheFileAbs(this.config.theme?.hash),\n ),\n );\n ast.push(\n types.expressionStatement(\n types.optionalCallExpression(types.identifier('toGlobalTheme'), [], true),\n ),\n );\n }\n\n const _ = items\n .filter((x) => !x.isExternal)\n .map((x) => this.transform(x))\n .map((x) => {\n const path =\n this.config.dangerousRoute || !x.exact\n ? `/${x.path}${x.route}`\n : `/${x.path}`;\n return types.objectExpression([\n types.objectProperty(\n types.identifier('exact'),\n types.booleanLiteral(x.exact),\n ),\n types.objectProperty(\n types.identifier('keepAlive'),\n types.booleanLiteral(x.keepAlive!),\n ),\n types.objectProperty(types.identifier('key'), types.stringLiteral(path)),\n types.objectProperty(types.identifier('path'), types.stringLiteral(path)),\n types.objectProperty(\n types.identifier('component'),\n this.loadableCallExpression(x),\n ),\n ]);\n });\n ast.push(\n types.exportDefaultDeclaration(\n types.arrowFunctionExpression(\n [types.identifier('reducers')],\n types.blockStatement([types.returnStatement(types.arrayExpression(_))]),\n ),\n ),\n );\n\n path.pushContainer('body', ast);\n },\n },\n },\n };\n },\n ],\n });\n\n fs.writeFileSync(\n absPath,\n [\n JSON.stringify(`👹 pages total count is ${Array.from(this.cache.keys()).length}`),\n code?.code!,\n ].join(';\\r\\n'),\n {\n encoding: 'utf8',\n },\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"RoutersGenerator.js","names":["_fs","_interopRequireDefault","require","_core","_Generator","obj","__esModule","default","RoutersGenerator","Generator","config","pathService","constructor","errorComponentVariableDeclaration","types","variableDeclaration","variableDeclarator","identifier","arrowFunctionExpression","blockStatement","returnStatement","jsxElement","jsxOpeningElement","jsxIdentifier","jsxClosingElement","jsxText","jsxExpressionContainer","optionalMemberExpression","memberExpression","loadingVariableDeclaration","jsxFragment","jsxOpeningFragment","jsxClosingFragment","createDowngradeValue","meJSON","name","defaultValue","transform","item","downgradeValue","route","keepAlive","retain","title","undefined","linkExtendable","injectStore","pageImportExpression","returnObjectProperties","objectProperty","sync","push","booleanLiteral","sourceAst","stringLiteral","meJSONPath","enablePreFetch","addComment","callExpression","import","objectExpression","loadableCallExpression","nullLiteral","page","JSON","stringify","writeCodeToFile","absPath","items","Array","from","cache","values","code","transformSync","plugins","visitor","Program","enter","path","ast","importNamedDeclaration","importDefaultDeclaration","loading","errorComponent","theme","hash","getThemeJSCacheFileAbs","expressionStatement","optionalCallExpression","_","filter","x","isExternal","map","dangerousRoute","exact","exportDefaultDeclaration","arrayExpression","pushContainer","fs","writeFileSync","keys","length","join","encoding","exports"],"sources":["../RoutersGenerator.ts"],"sourcesContent":["import fs from 'fs';\nimport { transformSync, types } from '@babel/core';\nimport type { Options, MeJSON, PathService } from './utils';\nimport { Generator } from './Generator';\n\ninterface Item {\n meJSONPath: string;\n meJSON: MeJSON;\n isExternal: boolean;\n path: string;\n page: string;\n exact: boolean;\n}\n\ninterface TransformItem extends Item, MeJSON {}\n\nexport class RoutersGenerator extends Generator<Item> {\n config: Options;\n pathService: PathService;\n\n constructor(config: Options, pathService: PathService) {\n super();\n this.config = config;\n this.pathService = pathService;\n }\n\n private errorComponentVariableDeclaration() {\n return types.variableDeclaration('const', [\n types.variableDeclarator(\n types.identifier('ErrorComponent'),\n types.arrowFunctionExpression(\n [types.identifier('props')],\n types.blockStatement([\n types.returnStatement(\n types.jsxElement(\n types.jsxOpeningElement(types.jsxIdentifier('div'), [], false),\n types.jsxClosingElement(types.jsxIdentifier('div')),\n [\n types.jsxElement(\n types.jsxOpeningElement(types.jsxIdentifier('h1'), [], false),\n types.jsxClosingElement(types.jsxIdentifier('h1')),\n [types.jsxText('页面渲染发生异常')],\n ),\n types.jsxElement(\n types.jsxOpeningElement(types.jsxIdentifier('span'), [], false),\n types.jsxClosingElement(types.jsxIdentifier('span')),\n [\n types.jsxExpressionContainer(\n types.optionalMemberExpression(\n types.memberExpression(types.identifier('props'), types.identifier('errorStack')),\n types.identifier('message'),\n false,\n true,\n ),\n ),\n ],\n ),\n ],\n false,\n ),\n ),\n ]),\n ),\n ),\n ]);\n }\n\n private loadingVariableDeclaration() {\n return types.variableDeclaration('const', [\n types.variableDeclarator(\n types.identifier('Loading'),\n types.arrowFunctionExpression(\n [],\n types.blockStatement([types.returnStatement(types.jsxFragment(types.jsxOpeningFragment(), types.jsxClosingFragment(), []))]),\n ),\n ),\n ]);\n }\n\n private createDowngradeValue(meJSON: MeJSON) {\n return <T extends keyof MeJSON>(name: T, defaultValue: MeJSON[T]) => {\n /** @ts-ignore */\n return meJSON[name] ?? this.config[name] ?? defaultValue;\n };\n }\n\n private transform(item: Item): TransformItem {\n const downgradeValue = this.createDowngradeValue(item.meJSON);\n // 路由参数\n let route = item.meJSON.route ?? '';\n const keepAlive = downgradeValue('keepAlive', false);\n const retain = downgradeValue('retain', false);\n const title = downgradeValue('title', undefined);\n // FUCK keep-alive 特性的坑, 为了兼容同一个页面多次打开 动态拓展 redux 的reducer 节点\n const linkExtendable = downgradeValue('linkExtendable', false);\n route = linkExtendable ? `${route}/:id?` : route;\n let injectStore = downgradeValue('injectStore', false);\n if (injectStore === true) injectStore = 'store';\n return {\n ...item,\n route,\n keepAlive,\n retain,\n title,\n linkExtendable,\n injectStore,\n };\n }\n\n private pageImportExpression(item: TransformItem) {\n const returnObjectProperties = [types.objectProperty(types.identifier('module'), types.identifier('module'))];\n if (item.meJSON.sync) {\n returnObjectProperties.push(types.objectProperty(types.identifier('sync'), types.booleanLiteral(true)));\n } else {\n returnObjectProperties.push(\n types.objectProperty(types.identifier('sync'), types.booleanLiteral(false)),\n types.objectProperty(types.identifier('reducers'), types.identifier('reducers')),\n );\n }\n const sourceAst = types.stringLiteral(item.meJSONPath);\n\n if (this.config.enablePreFetch) {\n types.addComment(sourceAst, 'leading', 'webpackPrefetch: true');\n }\n\n return types.callExpression(types.memberExpression(types.callExpression(types.import(), [sourceAst]), types.identifier('then')), [\n types.arrowFunctionExpression(\n [types.identifier('module')],\n types.blockStatement([\n // TODO\n types.returnStatement(types.objectExpression(returnObjectProperties)),\n ]),\n ),\n ]);\n }\n\n private loadableCallExpression(item: TransformItem) {\n return types.callExpression(types.identifier('Loadable'), [\n types.objectExpression([\n types.objectProperty(types.identifier('title'), item.title ? types.stringLiteral(item.title) : types.nullLiteral()),\n types.objectProperty(types.identifier('keepAlive'), types.booleanLiteral(item.keepAlive!)),\n types.objectProperty(types.identifier('route'), types.stringLiteral(item.route!)),\n types.objectProperty(types.identifier('retain'), types.booleanLiteral(item.retain!)),\n types.objectProperty(\n types.identifier('injectStore'),\n typeof item.injectStore === 'boolean' ? types.booleanLiteral(item.injectStore) : types.stringLiteral(item.injectStore!),\n ),\n types.objectProperty(types.identifier('page'), types.stringLiteral(item.page)),\n types.objectProperty(types.identifier('loading'), types.identifier('Loading')),\n types.objectProperty(types.identifier('errorComponent'), types.identifier('ErrorComponent')),\n types.objectProperty(\n types.identifier('metaInfo'),\n types.callExpression(types.memberExpression(types.identifier('JSON'), types.identifier('parse')), [\n types.stringLiteral(JSON.stringify(item.meJSON)),\n ]),\n ),\n types.objectProperty(types.identifier('loader'), types.arrowFunctionExpression([], this.pageImportExpression(item))),\n ]),\n ]);\n }\n\n writeCodeToFile(absPath: string) {\n const items = Array.from(this.cache.values());\n const code = transformSync('', {\n plugins: [\n () => {\n return {\n name: 'babel-plugin-replace-react-redux',\n visitor: {\n Program: {\n enter: (path) => {\n const ast: (types.ImportDeclaration | types.VariableDeclaration | types.ExportDefaultDeclaration | types.ExpressionStatement)[] = [\n this.importNamedDeclaration([], 'rrc-loader-helper/lib/fake-react'),\n this.importDefaultDeclaration('Loadable', 'rrc-loader-helper/lib/loadable'),\n this.importDefaultDeclaration('React', 'react'),\n ];\n\n /** 如果用户没有指定loading组件,那么自动生成一个空 loading */\n if (this.config.loading) {\n ast.push(this.importDefaultDeclaration('Loading', this.config.loading));\n } else {\n ast.push(this.loadingVariableDeclaration());\n }\n\n if (this.config.errorComponent) {\n ast.push(this.importDefaultDeclaration('ErrorComponent', this.config.errorComponent));\n } else {\n ast.push(this.errorComponentVariableDeclaration());\n }\n\n if (this.config.theme?.hash) {\n ast.push(this.importNamedDeclaration(['toGlobalTheme'], this.pathService.getThemeJSCacheFileAbs(this.config.theme?.hash)));\n ast.push(types.expressionStatement(types.optionalCallExpression(types.identifier('toGlobalTheme'), [], true)));\n }\n\n const _ = items\n .filter((x) => !x.isExternal)\n .map((x) => this.transform(x))\n .map((x) => {\n const path = this.config.dangerousRoute || !x.exact ? `/${x.path}${x.route}` : `/${x.path}`;\n return types.objectExpression([\n types.objectProperty(types.identifier('exact'), types.booleanLiteral(x.exact)),\n types.objectProperty(types.identifier('keepAlive'), types.booleanLiteral(x.keepAlive!)),\n types.objectProperty(types.identifier('key'), types.stringLiteral(path)),\n types.objectProperty(types.identifier('path'), types.stringLiteral(path)),\n types.objectProperty(types.identifier('component'), this.loadableCallExpression(x)),\n ]);\n });\n ast.push(\n types.exportDefaultDeclaration(\n types.arrowFunctionExpression(\n [types.identifier('reducers')],\n types.blockStatement([types.returnStatement(types.arrayExpression(_))]),\n ),\n ),\n );\n\n path.pushContainer('body', ast);\n },\n },\n },\n };\n },\n ],\n });\n\n fs.writeFileSync(absPath, [JSON.stringify(`👹 pages total count is ${Array.from(this.cache.keys()).length}`), code?.code!].join(';\\r\\n'), {\n encoding: 'utf8',\n });\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SagasGenerator.d.ts","sourceRoot":"","sources":["../src/SagasGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGtC,UAAU,IAAI;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,qBAAa,cAAe,SAAQ,SAAS,CAAC,IAAI,CAAC;;IAKjD,OAAO,CAAC,yBAAyB;IAcjC,OAAO,CAAC,uBAAuB;IAa/B,eAAe,CAAC,OAAO,EAAE,MAAM;CA0DhC"}
1
+ {"version":3,"file":"SagasGenerator.d.ts","sourceRoot":"","sources":["../src/SagasGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGtC,UAAU,IAAI;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,qBAAa,cAAe,SAAQ,SAAS,CAAC,IAAI,CAAC;;IAKjD,OAAO,CAAC,yBAAyB;IAcjC,OAAO,CAAC,uBAAuB;IAU/B,eAAe,CAAC,OAAO,EAAE,MAAM;CA+ChC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SagasGenerator.js","names":["_Generator","require","_core","_fs","_interopRequireDefault","obj","__esModule","default","SagasGenerator","Generator","constructor","setCtxExpressionStatement","namespace","types","expressionStatement","yieldExpression","callExpression","identifier","objectExpression","objectProperty","booleanLiteral","stringLiteral","callExpressionStatement","memberExpression","identifierString","writeCodeToFile","absPath","items","Array","from","cache","values","code","transformSync","plugins","visitor","Program","enter","path","ast","importNamedDeclaration","filter","x","meJSON","sync","isExternal","forEach","push","mobx","meJSONPath","arrayItem","map","functionExpression","blockStatement","exportDefaultDeclaration","arrayExpression","pushContainer","fs","writeFileSync","encoding","exports"],"sources":["../SagasGenerator.ts"],"sourcesContent":["import { Generator } from './Generator';\nimport type { MeJSON } from './utils';\nimport { transformSync, types } from '@babel/core';\nimport fs from 'fs';\ninterface Item {\n namespace: string;\n meJSONPath: string;\n isExternal: boolean;\n meJSON: MeJSON;\n}\nexport class SagasGenerator extends Generator<Item> {\n constructor() {\n super();\n }\n\n private setCtxExpressionStatement(namespace: string) {\n return types.expressionStatement(\n types.yieldExpression(\n types.callExpression(types.identifier('setCtx'), [\n types.objectExpression([\n types.objectProperty(types.identifier('mobxStyle'), types.booleanLiteral(true)),\n types.objectProperty(types.identifier('page'), types.stringLiteral(namespace)),\n types.objectProperty(types.identifier('url'), types.stringLiteral('')),\n ]),\n ]),\n ),\n );\n }\n\n private callExpressionStatement(namespace: string) {\n return types.expressionStatement(\n types.yieldExpression(\n types.callExpression(types.identifier('call'), [\n types.memberExpression(\n types.identifier(this.identifierString(namespace)),\n types.identifier('saga'),\n ),\n ]),\n ),\n );\n }\n\n writeCodeToFile(absPath: string) {\n const items = Array.from(this.cache.values());\n const code = transformSync('', {\n plugins: [\n () => {\n return {\n visitor: {\n Program: {\n enter: (path) => {\n const ast: (types.ImportDeclaration | types.ExportDefaultDeclaration)[] = [\n this.importNamedDeclaration(['setCtx'], 'rrc-loader-helper/lib/retain'),\n this.importNamedDeclaration(\n ['call'],\n 'rrc-loader-helper/lib/sagas/redux-saga/effects',\n ),\n ];\n\n items\n .filter((x) => x.meJSON.sync || x.isExternal)\n .forEach((x) =>\n // 如果是mobx, 取 reducer, 否则取 saga\n ast.push(\n this.importNamedDeclaration(\n [[x.meJSON.mobx ? 'reducer' : 'saga', x.namespace]],\n x.meJSONPath,\n ),\n ),\n );\n\n const arrayItem = items.map((x) => {\n if (!x.isExternal && !x.meJSON.sync) {\n return types.stringLiteral('');\n }\n if (x.meJSON.mobx) {\n return types.functionExpression(\n null,\n [],\n types.blockStatement([\n this.setCtxExpressionStatement(x.namespace),\n this.callExpressionStatement(x.namespace),\n ]),\n true,\n false,\n );\n }\n return types.identifier(this.identifierString(x.namespace));\n });\n ast.push(types.exportDefaultDeclaration(types.arrayExpression(arrayItem)));\n path.pushContainer('body', ast);\n },\n },\n },\n };\n },\n ],\n });\n fs.writeFileSync(absPath, code?.code!, { encoding: 'utf8' });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SagasGenerator.js","names":["_Generator","require","_core","_fs","_interopRequireDefault","obj","__esModule","default","SagasGenerator","Generator","constructor","setCtxExpressionStatement","namespace","types","expressionStatement","yieldExpression","callExpression","identifier","objectExpression","objectProperty","booleanLiteral","stringLiteral","callExpressionStatement","memberExpression","identifierString","writeCodeToFile","absPath","items","Array","from","cache","values","code","transformSync","plugins","visitor","Program","enter","path","ast","importNamedDeclaration","filter","x","meJSON","sync","isExternal","forEach","push","mobx","meJSONPath","arrayItem","map","functionExpression","blockStatement","exportDefaultDeclaration","arrayExpression","pushContainer","fs","writeFileSync","encoding","exports"],"sources":["../SagasGenerator.ts"],"sourcesContent":["import { Generator } from './Generator';\nimport type { MeJSON } from './utils';\nimport { transformSync, types } from '@babel/core';\nimport fs from 'fs';\ninterface Item {\n namespace: string;\n meJSONPath: string;\n isExternal: boolean;\n meJSON: MeJSON;\n}\nexport class SagasGenerator extends Generator<Item> {\n constructor() {\n super();\n }\n\n private setCtxExpressionStatement(namespace: string) {\n return types.expressionStatement(\n types.yieldExpression(\n types.callExpression(types.identifier('setCtx'), [\n types.objectExpression([\n types.objectProperty(types.identifier('mobxStyle'), types.booleanLiteral(true)),\n types.objectProperty(types.identifier('page'), types.stringLiteral(namespace)),\n types.objectProperty(types.identifier('url'), types.stringLiteral('')),\n ]),\n ]),\n ),\n );\n }\n\n private callExpressionStatement(namespace: string) {\n return types.expressionStatement(\n types.yieldExpression(\n types.callExpression(types.identifier('call'), [\n types.memberExpression(types.identifier(this.identifierString(namespace)), types.identifier('saga')),\n ]),\n ),\n );\n }\n\n writeCodeToFile(absPath: string) {\n const items = Array.from(this.cache.values());\n const code = transformSync('', {\n plugins: [\n () => {\n return {\n visitor: {\n Program: {\n enter: (path) => {\n const ast: (types.ImportDeclaration | types.ExportDefaultDeclaration)[] = [\n this.importNamedDeclaration(['setCtx'], 'rrc-loader-helper/lib/retain'),\n this.importNamedDeclaration(['call'], 'rrc-loader-helper/lib/sagas/redux-saga/effects'),\n ];\n\n items\n .filter((x) => x.meJSON.sync || x.isExternal)\n .forEach((x) =>\n // 如果是mobx, 取 reducer, 否则取 saga\n ast.push(this.importNamedDeclaration([[x.meJSON.mobx ? 'reducer' : 'saga', x.namespace]], x.meJSONPath)),\n );\n\n const arrayItem = items.map((x) => {\n if (!x.isExternal && !x.meJSON.sync) {\n return types.stringLiteral('');\n }\n if (x.meJSON.mobx) {\n return types.functionExpression(\n null,\n [],\n types.blockStatement([this.setCtxExpressionStatement(x.namespace), this.callExpressionStatement(x.namespace)]),\n true,\n false,\n );\n }\n return types.identifier(this.identifierString(x.namespace));\n });\n ast.push(types.exportDefaultDeclaration(types.arrayExpression(arrayItem)));\n path.pushContainer('body', ast);\n },\n },\n },\n };\n },\n ],\n });\n fs.writeFileSync(absPath, code?.code!, { encoding: 'utf8' });\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAEA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,GAAA,GAAAC,sBAAA,CAAAH,OAAA;AAAoB,SAAAG,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAOb,MAAMG,cAAc,SAASC,oBAAS,CAAO;EAClDC,WAAWA,CAAA,EAAG;IACZ,KAAK,EAAE;EACT;EAEQC,yBAAyBA,CAACC,SAAiB,EAAE;IACnD,OAAOC,WAAK,CAACC,mBAAmB,CAC9BD,WAAK,CAACE,eAAe,CACnBF,WAAK,CAACG,cAAc,CAACH,WAAK,CAACI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAC/CJ,WAAK,CAACK,gBAAgB,CAAC,CACrBL,WAAK,CAACM,cAAc,CAACN,WAAK,CAACI,UAAU,CAAC,WAAW,CAAC,EAAEJ,WAAK,CAACO,cAAc,CAAC,IAAI,CAAC,CAAC,EAC/EP,WAAK,CAACM,cAAc,CAACN,WAAK,CAACI,UAAU,CAAC,MAAM,CAAC,EAAEJ,WAAK,CAACQ,aAAa,CAACT,SAAS,CAAC,CAAC,EAC9EC,WAAK,CAACM,cAAc,CAACN,WAAK,CAACI,UAAU,CAAC,KAAK,CAAC,EAAEJ,WAAK,CAACQ,aAAa,CAAC,EAAE,CAAC,CAAC,CACvE,CAAC,CACH,CAAC,CACH,CACF;EACH;EAEQC,uBAAuBA,CAACV,SAAiB,EAAE;IACjD,OAAOC,WAAK,CAACC,mBAAmB,CAC9BD,WAAK,CAACE,eAAe,CACnBF,WAAK,CAACG,cAAc,CAACH,WAAK,CAACI,UAAU,CAAC,MAAM,CAAC,EAAE,CAC7CJ,WAAK,CAACU,gBAAgB,CAACV,WAAK,CAACI,UAAU,CAAC,IAAI,CAACO,gBAAgB,CAACZ,SAAS,CAAC,CAAC,EAAEC,WAAK,CAACI,UAAU,CAAC,MAAM,CAAC,CAAC,CACrG,CAAC,CACH,CACF;EACH;EAEAQ,eAAeA,CAACC,OAAe,EAAE;IAC/B,MAAMC,KAAK,GAAGC,KAAK,CAACC,IAAI,CAAC,IAAI,CAACC,KAAK,CAACC,MAAM,EAAE,CAAC;IAC7C,MAAMC,IAAI,GAAG,IAAAC,mBAAa,EAAC,EAAE,EAAE;MAC7BC,OAAO,EAAE,CACP,MAAM;QACJ,OAAO;UACLC,OAAO,EAAE;YACPC,OAAO,EAAE;cACPC,KAAK,EAAGC,IAAI,IAAK;gBACf,MAAMC,GAAiE,GAAG,CACxE,IAAI,CAACC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,EAAE,8BAA8B,CAAC,EACvE,IAAI,CAACA,sBAAsB,CAAC,CAAC,MAAM,CAAC,EAAE,gDAAgD,CAAC,CACxF;gBAEDb,KAAK,CACFc,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAACC,MAAM,CAACC,IAAI,IAAIF,CAAC,CAACG,UAAU,CAAC,CAC5CC,OAAO,CAAEJ,CAAC;gBACT;gBACAH,GAAG,CAACQ,IAAI,CAAC,IAAI,CAACP,sBAAsB,CAAC,CAAC,CAACE,CAAC,CAACC,MAAM,CAACK,IAAI,GAAG,SAAS,GAAG,MAAM,EAAEN,CAAC,CAAC9B,SAAS,CAAC,CAAC,EAAE8B,CAAC,CAACO,UAAU,CAAC,CAAC,CACzG;gBAEH,MAAMC,SAAS,GAAGvB,KAAK,CAACwB,GAAG,CAAET,CAAC,IAAK;kBACjC,IAAI,CAACA,CAAC,CAACG,UAAU,IAAI,CAACH,CAAC,CAACC,MAAM,CAACC,IAAI,EAAE;oBACnC,OAAO/B,WAAK,CAACQ,aAAa,CAAC,EAAE,CAAC;kBAChC;kBACA,IAAIqB,CAAC,CAACC,MAAM,CAACK,IAAI,EAAE;oBACjB,OAAOnC,WAAK,CAACuC,kBAAkB,CAC7B,IAAI,EACJ,EAAE,EACFvC,WAAK,CAACwC,cAAc,CAAC,CAAC,IAAI,CAAC1C,yBAAyB,CAAC+B,CAAC,CAAC9B,SAAS,CAAC,EAAE,IAAI,CAACU,uBAAuB,CAACoB,CAAC,CAAC9B,SAAS,CAAC,CAAC,CAAC,EAC9G,IAAI,EACJ,KAAK,CACN;kBACH;kBACA,OAAOC,WAAK,CAACI,UAAU,CAAC,IAAI,CAACO,gBAAgB,CAACkB,CAAC,CAAC9B,SAAS,CAAC,CAAC;gBAC7D,CAAC,CAAC;gBACF2B,GAAG,CAACQ,IAAI,CAAClC,WAAK,CAACyC,wBAAwB,CAACzC,WAAK,CAAC0C,eAAe,CAACL,SAAS,CAAC,CAAC,CAAC;gBAC1EZ,IAAI,CAACkB,aAAa,CAAC,MAAM,EAAEjB,GAAG,CAAC;cACjC;YACF;UACF;QACF,CAAC;MACH,CAAC;IAEL,CAAC,CAAC;IACFkB,WAAE,CAACC,aAAa,CAAChC,OAAO,EAAEM,IAAI,EAAEA,IAAI,EAAG;MAAE2B,QAAQ,EAAE;IAAO,CAAC,CAAC;EAC9D;AACF;AAACC,OAAA,CAAApD,cAAA,GAAAA,cAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"enhance-reducer.d.ts","sourceRoot":"","sources":["../../../src/babel/plugins/enhance-reducer.ts"],"names":[],"mappings":";AAWA,wBAwDG"}
1
+ {"version":3,"file":"enhance-reducer.d.ts","sourceRoot":"","sources":["../../../src/babel/plugins/enhance-reducer.ts"],"names":[],"mappings":";AAWA,wBA8DG"}
@@ -19,30 +19,38 @@ var _default = (0, _helperPluginUtils.declare)((api, options) => {
19
19
  name: 'babel-plugin-enhance-reducer',
20
20
  visitor: {
21
21
  ExportDefaultDeclaration: (babelPath, ops) => {
22
- if (!new RegExp(`${options.pageRootAbs}\/.*${options.reducerName}\.(j|t)s`).test(ops.filename)) {
23
- return;
24
- }
22
+ // 这里校验一下文件名, 仅处理 reducer 文件
23
+ if (!new RegExp(`${options.pageRootAbs}\/.*${options.reducerName}\.(j|t)s`).test(ops.filename)) return;
25
24
  const filename = _nodePath.default.basename(ops.filename);
25
+ // 获取包含 me.json 的目录,用于获取当前页面的 namespace
26
26
  function getMeJson(dir) {
27
27
  if (_fsExtra.default.existsSync(_nodePath.default.join(dir, 'me.json'))) {
28
28
  return dir;
29
29
  }
30
+ // 向上递归到 pageRootAbs 后终止,返回false
31
+ if (dir === options.pageRootAbs) return false;
30
32
  return getMeJson(_nodePath.default.dirname(dir));
31
33
  }
34
+
35
+ // 当前页面不包含 me.json,不处理
32
36
  const baseDir = getMeJson(_nodePath.default.dirname(ops.filename));
33
- if (!baseDir) {
34
- return;
35
- }
36
- const meJSON = JSON.parse(_fsExtra.default.readFileSync(_nodePath.default.join(baseDir, 'me.json'), 'utf8'));
37
- if (!meJSON.mobx) {
38
- return;
39
- }
37
+ if (!baseDir) return;
38
+
39
+ // 读取 me.json
40
+ const meJSON = _fsExtra.default.readJSONSync(_nodePath.default.join(baseDir, 'me.json'), 'utf8');
41
+
42
+ // 仅处理 mobx 模式。
43
+ if (!meJSON.mobx) return;
44
+
45
+ // 当前页面的 相对路径作为唯一key,这里是 lcd 内部的一个约定,与生成路由插件 传递的 page 参数一致
40
46
  let namespace = baseDir.replace(`${options.pageRootAbs}/`, '');
41
47
  const isChild = !isMainRegex.test(filename);
42
48
  if (isChild) {
43
- namespace += `&&${filename.replace(new RegExp(`(.*)\.reducer\.(j|t)s`), '$1')}`;
49
+ namespace += `&&${filename.replace(new RegExp(`(.*)\.${options.reducerName}\.(j|t)s`), '$1')}`;
44
50
  }
45
51
  const declaration = babelPath.get('declaration');
52
+ // 这里判断 declaration.isIdentifier() 是为了兼容 export default state 这种情况
53
+ // 但是实际上,无法判断 state 这个变量 是否为 对象,所以这里并不是非常严格的判断
46
54
  if (declaration.isObjectExpression() || declaration.isIdentifier()) {
47
55
  const program = babelPath.findParent(x => x.isProgram());
48
56
  if (program.isProgram()) {
@@ -51,7 +59,9 @@ var _default = (0, _helperPluginUtils.declare)((api, options) => {
51
59
  program.unshiftContainer('body', importMobxAdapter);
52
60
  const expression = types.callExpression(uid, [declaration.node, types.stringLiteral(namespace)]);
53
61
  declaration.replaceWith(expression);
62
+ /* c8 ignore next 3 */
54
63
  } else {
64
+ /* c8 ignore next 3 */
55
65
  throw babelPath.buildCodeFrameError('语法解析错误,没有成功的探寻到 Program');
56
66
  }
57
67
  }
@@ -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","JSON","parse","readFileSync","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 if (!new RegExp(`${options.pageRootAbs}\\/.*${options.reducerName}\\.(j|t)s`).test(ops.filename)) {\n return;\n }\n const filename = path.basename(ops.filename);\n\n function getMeJson(dir: string) {\n if (fse.existsSync(path.join(dir, 'me.json'))) {\n return dir;\n }\n return getMeJson(path.dirname(dir));\n }\n\n const baseDir = getMeJson(path.dirname(ops.filename));\n\n if (!baseDir) {\n return;\n }\n const meJSON: MeJSON = JSON.parse(fse.readFileSync(path.join(baseDir, 'me.json'), 'utf8'));\n\n if (!meJSON.mobx) {\n return;\n }\n\n let namespace = baseDir.replace(`${options.pageRootAbs}/`, '');\n const isChild = !isMainRegex.test(filename);\n\n if (isChild) {\n namespace += `&&${filename.replace(new RegExp(`(.*)\\.reducer\\.(j|t)s`), '$1')}`;\n }\n const declaration = babelPath.get('declaration');\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 } else {\n throw babelPath.buildCodeFrameError('语法解析错误,没有成功的探寻到 Program');\n }\n }\n },\n },\n };\n});\n"],"mappings":"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"}
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":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"external-wrap.d.ts","sourceRoot":"","sources":["../../../src/babel/plugins/external-wrap.ts"],"names":[],"mappings":";AASA,wBAkDG"}
1
+ {"version":3,"file":"external-wrap.d.ts","sourceRoot":"","sources":["../../../src/babel/plugins/external-wrap.ts"],"names":[],"mappings":";AASA,wBAiDG"}
@@ -16,22 +16,27 @@ var _default = (0, _helperPluginUtils.declare)((api, options) => {
16
16
  return {
17
17
  name: 'babel-plugin-external-wrap',
18
18
  visitor: {
19
- Program: {
20
- enter: (nodePath, ops) => {
21
- const externalsAbs = options.externals?.map?.(x => _path.default.join(options.pageRootAbs, x, 'view')) ?? [];
22
- const isExternalView = externalsAbs.some(x => ops.filename.startsWith(x));
23
- if (isExternalView) {
24
- nodePath.scope.setData('isExternalView', true);
25
- nodePath.pushContainer('body', [types.importDeclaration([types.importDefaultSpecifier(types.identifier('PvWrapExternalPage'))], types.stringLiteral('rrc-loader-helper/lib/page/external-page'))]);
26
- }
27
- }
28
- },
29
19
  ExportDefaultDeclaration: (nodePath, ops) => {
30
- if (nodePath.scope.getData('isExternalView')) {
20
+ const externalsAbs = options.externals?.map?.(x => _path.default.join(options.pageRootAbs, x, 'view.')) ?? [];
21
+ const isExternalView = externalsAbs.some(x => ops.filename.startsWith(x));
22
+ if (isExternalView) {
31
23
  const pageName = _path.default.dirname(_path.default.relative(options.pageRootAbs, ops.filename));
32
24
  const declarationPath = nodePath.get('declaration');
33
- if (types.isCallExpression(declarationPath.node) || types.isIdentifier(declarationPath.node)) {
34
- const call = types.callExpression(types.identifier('PvWrapExternalPage'), [declarationPath.node, types.stringLiteral(pageName)]);
25
+
26
+ // TODO: 后期可以考虑加上 ClassDeclaration 的兼容。
27
+ // 希望尽量少的兼容,因为这种情况少见,而且推荐使用函数组件
28
+ if (types.isCallExpression(declarationPath.node) || types.isIdentifier(declarationPath.node) || types.isFunctionDeclaration(declarationPath.node) || types.isArrowFunctionExpression(declarationPath.node)) {
29
+ const program = nodePath.findParent(x => x.isProgram());
30
+ program.unshiftContainer('body', [types.importDeclaration([types.importDefaultSpecifier(types.identifier('PvWrapExternalPage'))], types.stringLiteral('rrc-loader-helper/lib/page/external-page'))]);
31
+ let targetNode = declarationPath.node;
32
+ // https://www.babeljs.cn/docs/babel-types#callexpression
33
+ // 处理函数声明,types.callExpression arguments 不支持函数类型, 需要转成函数表达式
34
+ if (types.isFunctionDeclaration(declarationPath.node)) {
35
+ const uniqueId = nodePath.scope.generateUidIdentifier();
36
+ const functionExpression = types.functionExpression(uniqueId, nodePath.node.declaration.params, nodePath.node.declaration.body, nodePath.node.declaration.generator, nodePath.node.declaration.async);
37
+ targetNode = functionExpression;
38
+ }
39
+ const call = types.callExpression(types.identifier('PvWrapExternalPage'), [targetNode, types.stringLiteral(pageName)]);
35
40
  nodePath.get('declaration').replaceWith(call);
36
41
  }
37
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"external-wrap.js","names":["_helperPluginUtils","require","_path","_interopRequireDefault","obj","__esModule","default","_default","declare","api","options","assertVersion","types","name","visitor","Program","enter","nodePath","ops","externalsAbs","externals","map","x","path","join","pageRootAbs","isExternalView","some","filename","startsWith","scope","setData","pushContainer","importDeclaration","importDefaultSpecifier","identifier","stringLiteral","ExportDefaultDeclaration","getData","pageName","dirname","relative","declarationPath","get","isCallExpression","node","isIdentifier","call","callExpression","replaceWith","exports"],"sources":["../../../external-wrap.ts"],"sourcesContent":["import type * as __babel__core from '@babel/core';\nimport { declare } from '@babel/helper-plugin-utils';\nimport path from 'path';\n\ninterface Options {\n externals: string[];\n pageRootAbs: string;\n}\n\nexport default declare<Options>((api, options) => {\n const { assertVersion, types } = api;\n assertVersion(7);\n return {\n name: 'babel-plugin-external-wrap',\n visitor: {\n Program: {\n enter: (nodePath, ops) => {\n const externalsAbs =\n options.externals?.map?.((x) =>\n path.join(options.pageRootAbs, x, 'view'),\n ) ?? [];\n const isExternalView = externalsAbs.some((x) =>\n ops.filename.startsWith(x),\n );\n if (isExternalView) {\n nodePath.scope.setData('isExternalView', true);\n nodePath.pushContainer('body', [\n types.importDeclaration(\n [\n types.importDefaultSpecifier(\n types.identifier('PvWrapExternalPage'),\n ),\n ],\n types.stringLiteral('rrc-loader-helper/lib/page/external-page'),\n ),\n ]);\n }\n },\n },\n ExportDefaultDeclaration: (nodePath, ops) => {\n if (nodePath.scope.getData('isExternalView')) {\n const pageName = path.dirname(\n path.relative(options.pageRootAbs, ops.filename),\n );\n const declarationPath = nodePath.get('declaration');\n if (\n types.isCallExpression(declarationPath.node) ||\n types.isIdentifier(declarationPath.node)\n ) {\n const call = types.callExpression(\n types.identifier('PvWrapExternalPage'),\n [declarationPath.node, types.stringLiteral(pageName)],\n );\n nodePath.get('declaration').replaceWith(call);\n }\n }\n },\n },\n };\n});\n"],"mappings":";;;;;;AACA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAwB,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAOT,IAAAC,0BAAO,EAAU,CAACC,GAAG,EAAEC,OAAO,KAAK;EAChD,MAAM;IAAEC,aAAa;IAAEC;EAAM,CAAC,GAAGH,GAAG;EACpCE,aAAa,CAAC,CAAC,CAAC;EAChB,OAAO;IACLE,IAAI,EAAE,4BAA4B;IAClCC,OAAO,EAAE;MACPC,OAAO,EAAE;QACPC,KAAK,EAAEA,CAACC,QAAQ,EAAEC,GAAG,KAAK;UACxB,MAAMC,YAAY,GAChBT,OAAO,CAACU,SAAS,EAAEC,GAAG,GAAIC,CAAC,IACzBC,aAAI,CAACC,IAAI,CAACd,OAAO,CAACe,WAAW,EAAEH,CAAC,EAAE,MAAM,CAAC,CAC1C,IAAI,EAAE;UACT,MAAMI,cAAc,GAAGP,YAAY,CAACQ,IAAI,CAAEL,CAAC,IACzCJ,GAAG,CAACU,QAAQ,CAACC,UAAU,CAACP,CAAC,CAAC,CAC3B;UACD,IAAII,cAAc,EAAE;YAClBT,QAAQ,CAACa,KAAK,CAACC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC;YAC9Cd,QAAQ,CAACe,aAAa,CAAC,MAAM,EAAE,CAC7BpB,KAAK,CAACqB,iBAAiB,CACrB,CACErB,KAAK,CAACsB,sBAAsB,CAC1BtB,KAAK,CAACuB,UAAU,CAAC,oBAAoB,CAAC,CACvC,CACF,EACDvB,KAAK,CAACwB,aAAa,CAAC,0CAA0C,CAAC,CAChE,CACF,CAAC;UACJ;QACF;MACF,CAAC;MACDC,wBAAwB,EAAEA,CAACpB,QAAQ,EAAEC,GAAG,KAAK;QAC3C,IAAID,QAAQ,CAACa,KAAK,CAACQ,OAAO,CAAC,gBAAgB,CAAC,EAAE;UAC5C,MAAMC,QAAQ,GAAGhB,aAAI,CAACiB,OAAO,CAC3BjB,aAAI,CAACkB,QAAQ,CAAC/B,OAAO,CAACe,WAAW,EAAEP,GAAG,CAACU,QAAQ,CAAC,CACjD;UACD,MAAMc,eAAe,GAAGzB,QAAQ,CAAC0B,GAAG,CAAC,aAAa,CAAC;UACnD,IACE/B,KAAK,CAACgC,gBAAgB,CAACF,eAAe,CAACG,IAAI,CAAC,IAC5CjC,KAAK,CAACkC,YAAY,CAACJ,eAAe,CAACG,IAAI,CAAC,EACxC;YACA,MAAME,IAAI,GAAGnC,KAAK,CAACoC,cAAc,CAC/BpC,KAAK,CAACuB,UAAU,CAAC,oBAAoB,CAAC,EACtC,CAACO,eAAe,CAACG,IAAI,EAAEjC,KAAK,CAACwB,aAAa,CAACG,QAAQ,CAAC,CAAC,CACtD;YACDtB,QAAQ,CAAC0B,GAAG,CAAC,aAAa,CAAC,CAACM,WAAW,CAACF,IAAI,CAAC;UAC/C;QACF;MACF;IACF;EACF,CAAC;AACH,CAAC,CAAC;AAAAG,OAAA,CAAA5C,OAAA,GAAAC,QAAA"}
1
+ {"version":3,"file":"external-wrap.js","names":["_helperPluginUtils","require","_path","_interopRequireDefault","obj","__esModule","default","_default","declare","api","options","assertVersion","types","name","visitor","ExportDefaultDeclaration","nodePath","ops","externalsAbs","externals","map","x","path","join","pageRootAbs","isExternalView","some","filename","startsWith","pageName","dirname","relative","declarationPath","get","isCallExpression","node","isIdentifier","isFunctionDeclaration","isArrowFunctionExpression","program","findParent","isProgram","unshiftContainer","importDeclaration","importDefaultSpecifier","identifier","stringLiteral","targetNode","uniqueId","scope","generateUidIdentifier","functionExpression","declaration","params","body","generator","async","call","callExpression","replaceWith","exports"],"sources":["../../../external-wrap.ts"],"sourcesContent":["import type * as __babel__core from '@babel/core';\nimport { declare } from '@babel/helper-plugin-utils';\nimport path from 'path';\n\ninterface Options {\n externals: string[];\n pageRootAbs: string;\n}\n\nexport default declare<Options>((api, options) => {\n const { assertVersion, types } = api;\n assertVersion(7);\n return {\n name: 'babel-plugin-external-wrap',\n visitor: {\n ExportDefaultDeclaration: (nodePath, ops) => {\n const externalsAbs = options.externals?.map?.((x) => path.join(options.pageRootAbs, x, 'view.')) ?? [];\n const isExternalView = externalsAbs.some((x) => ops.filename.startsWith(x));\n if (isExternalView) {\n const pageName = path.dirname(path.relative(options.pageRootAbs, ops.filename));\n const declarationPath = nodePath.get('declaration');\n\n // TODO: 后期可以考虑加上 ClassDeclaration 的兼容。\n // 希望尽量少的兼容,因为这种情况少见,而且推荐使用函数组件\n if (\n types.isCallExpression(declarationPath.node) ||\n types.isIdentifier(declarationPath.node) ||\n types.isFunctionDeclaration(declarationPath.node) ||\n types.isArrowFunctionExpression(declarationPath.node)\n ) {\n const program = nodePath.findParent((x) => x.isProgram());\n program.unshiftContainer('body', [\n types.importDeclaration(\n [types.importDefaultSpecifier(types.identifier('PvWrapExternalPage'))],\n types.stringLiteral('rrc-loader-helper/lib/page/external-page'),\n ),\n ]);\n let targetNode = declarationPath.node;\n // https://www.babeljs.cn/docs/babel-types#callexpression\n // 处理函数声明,types.callExpression arguments 不支持函数类型, 需要转成函数表达式\n if (types.isFunctionDeclaration(declarationPath.node)) {\n const uniqueId = nodePath.scope.generateUidIdentifier();\n const functionExpression = types.functionExpression(\n uniqueId,\n nodePath.node.declaration.params,\n nodePath.node.declaration.body,\n nodePath.node.declaration.generator,\n nodePath.node.declaration.async,\n );\n targetNode = functionExpression;\n }\n const call = types.callExpression(types.identifier('PvWrapExternalPage'), [targetNode, types.stringLiteral(pageName)]);\n nodePath.get('declaration').replaceWith(call);\n }\n }\n },\n },\n };\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"replace-source.d.ts","sourceRoot":"","sources":["../../../src/babel/plugins/replace-source.ts"],"names":[],"mappings":";AAQA,wBA8GG"}
1
+ {"version":3,"file":"replace-source.d.ts","sourceRoot":"","sources":["../../../src/babel/plugins/replace-source.ts"],"names":[],"mappings":";AAQA,wBAuEG"}
@@ -18,11 +18,12 @@ var _default = (0, _helperPluginUtils.declare)((api, options) => {
18
18
  const fromPath = nodePath.get('source');
19
19
  const fromValue = fromPath.node.value;
20
20
  const isSource = ops.filename.startsWith(options.srcAbs);
21
- if (fromValue.startsWith('react-redux') && isSource) {
21
+ if (!isSource) return;
22
+ if (fromValue.startsWith('react-redux')) {
22
23
  nodePath.set('source', types.stringLiteral(`rrc-loader-helper/lib/reducers/${fromValue}`));
23
- } else if (fromValue.startsWith('react-router-dom') && !options.disableBuiltInRoute && isSource) {
24
+ } else if (fromValue.startsWith('react-router-dom') && !options.disableBuiltInRoute) {
24
25
  nodePath.set('source', types.stringLiteral('rrc-loader-helper/router'));
25
- } else if (fromValue.startsWith('redux-saga') && isSource) {
26
+ } else if (fromValue.startsWith('redux-saga')) {
26
27
  nodePath.set('source', types.stringLiteral(`rrc-loader-helper/lib/sagas/${fromValue}`));
27
28
  }
28
29
  },
@@ -44,7 +45,7 @@ var _default = (0, _helperPluginUtils.declare)((api, options) => {
44
45
  program.unshiftContainer('body', [types.importDeclaration([types.importSpecifier(types.identifier('setReducers'), types.identifier('setReducers'))], types.stringLiteral('rrc-loader-helper/lib/imp')), types.expressionStatement(types.callExpression(types.identifier('setReducers'), [types.identifier('reducers')]))]);
45
46
  const routers = nodePath.scope.generateUidIdentifier('routers');
46
47
  program.unshiftContainer('body', [types.importDeclaration([types.importDefaultSpecifier(routers)], types.stringLiteral('@@/lessCoding/routers'))]);
47
- nodePath.replaceWith(types.callExpression(types.memberExpression(types.callExpression(routers, [types.identifier('reducers')]), types.identifier('map')), [types.arrowFunctionExpression([types.identifier('x')], types.blockStatement([types.returnStatement(types.jsxElement(types.jsxOpeningElement(types.jsxIdentifier('Route'), [types.jsxSpreadAttribute(types.identifier('x'))]), null, [], true))]))]));
48
+ nodePath.replaceWith(types.callExpression(types.memberExpression(types.callExpression(routers, [types.identifier('reducers')]), types.identifier('map')), [types.arrowFunctionExpression([types.identifier('x')], types.blockStatement([types.returnStatement(types.jsxElement(types.jsxOpeningElement(types.jsxIdentifier('Route'), [types.jsxSpreadAttribute(types.identifier('x'))], true), null, [], true))]))]));
48
49
  }
49
50
  }
50
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"replace-source.js","names":["_helperPluginUtils","require","_default","declare","api","options","assertVersion","types","name","visitor","ImportDeclaration","nodePath","ops","fromPath","get","fromValue","node","value","isSource","filename","startsWith","srcAbs","set","stringLiteral","disableBuiltInRoute","Identifier","program","findParent","x","isProgram","reducersIdentifier","scope","generateUidIdentifier","unshiftContainer","importDeclaration","importDefaultSpecifier","replaceWith","rootSaga","importSpecifier","identifier","expressionStatement","callExpression","routers","memberExpression","arrowFunctionExpression","blockStatement","returnStatement","jsxElement","jsxOpeningElement","jsxIdentifier","jsxSpreadAttribute","exports","default"],"sources":["../../../replace-source.ts"],"sourcesContent":["import type * as __babel__core from '@babel/core';\nimport { declare } from '@babel/helper-plugin-utils';\n\ninterface Options {\n srcAbs: string;\n disableBuiltInRoute: boolean;\n}\n\nexport default declare<Options>((api, options) => {\n const { assertVersion, types } = api;\n assertVersion(7);\n return {\n name: 'babel-plugin-replace-source',\n visitor: {\n ImportDeclaration(nodePath, ops) {\n const fromPath = nodePath.get('source');\n const fromValue = fromPath.node.value;\n const isSource = ops.filename.startsWith(options.srcAbs);\n if (fromValue.startsWith('react-redux') && isSource) {\n nodePath.set(\n 'source',\n types.stringLiteral(`rrc-loader-helper/lib/reducers/${fromValue}`),\n );\n } else if (\n fromValue.startsWith('react-router-dom') &&\n !options.disableBuiltInRoute &&\n isSource\n ) {\n nodePath.set(\n 'source',\n types.stringLiteral('rrc-loader-helper/router'),\n );\n } else if (fromValue.startsWith('redux-saga') && isSource) {\n nodePath.set(\n 'source',\n types.stringLiteral(`rrc-loader-helper/lib/sagas/${fromValue}`),\n );\n }\n },\n Identifier: (nodePath, ops) => {\n const program = nodePath.findParent((x) => x.isProgram());\n if (!program?.isProgram()) {\n return;\n }\n if (nodePath.node.name === '__ROOT_REDUCER__') {\n const reducersIdentifier =\n nodePath.scope.generateUidIdentifier('reducers');\n program.unshiftContainer('body', [\n types.importDeclaration(\n [types.importDefaultSpecifier(reducersIdentifier)],\n types.stringLiteral('@@/lessCoding/reducers'),\n ),\n ]);\n nodePath.replaceWith(reducersIdentifier);\n } else if (nodePath.node.name === '__ROOT_SAGA__') {\n const rootSaga = nodePath.scope.generateUidIdentifier('sagas');\n program.unshiftContainer('body', [\n types.importDeclaration(\n [types.importDefaultSpecifier(rootSaga)],\n types.stringLiteral('@@/lessCoding/sagas'),\n ),\n ]);\n nodePath.replaceWith(rootSaga);\n } else if (nodePath.node.name === '__ROOT_ROUTE__') {\n // FUCK\n program.unshiftContainer('body', [\n types.importDeclaration(\n [\n types.importSpecifier(\n types.identifier('setReducers'),\n types.identifier('setReducers'),\n ),\n ],\n types.stringLiteral('rrc-loader-helper/lib/imp'),\n ),\n types.expressionStatement(\n types.callExpression(types.identifier('setReducers'), [\n types.identifier('reducers'),\n ]),\n ),\n ]);\n\n const routers = nodePath.scope.generateUidIdentifier('routers');\n program.unshiftContainer('body', [\n types.importDeclaration(\n [types.importDefaultSpecifier(routers)],\n types.stringLiteral('@@/lessCoding/routers'),\n ),\n ]);\n nodePath.replaceWith(\n types.callExpression(\n types.memberExpression(\n types.callExpression(routers, [types.identifier('reducers')]),\n types.identifier('map'),\n ),\n [\n types.arrowFunctionExpression(\n [types.identifier('x')],\n types.blockStatement([\n types.returnStatement(\n types.jsxElement(\n types.jsxOpeningElement(types.jsxIdentifier('Route'), [\n types.jsxSpreadAttribute(types.identifier('x')),\n ]),\n null,\n [],\n true,\n ),\n ),\n ]),\n ),\n ],\n ),\n );\n }\n },\n },\n };\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"replace-source.js","names":["_helperPluginUtils","require","_default","declare","api","options","assertVersion","types","name","visitor","ImportDeclaration","nodePath","ops","fromPath","get","fromValue","node","value","isSource","filename","startsWith","srcAbs","set","stringLiteral","disableBuiltInRoute","Identifier","program","findParent","x","isProgram","reducersIdentifier","scope","generateUidIdentifier","unshiftContainer","importDeclaration","importDefaultSpecifier","replaceWith","rootSaga","importSpecifier","identifier","expressionStatement","callExpression","routers","memberExpression","arrowFunctionExpression","blockStatement","returnStatement","jsxElement","jsxOpeningElement","jsxIdentifier","jsxSpreadAttribute","exports","default"],"sources":["../../../replace-source.ts"],"sourcesContent":["import type * as __babel__core from '@babel/core';\nimport { declare } from '@babel/helper-plugin-utils';\n\ninterface Options {\n srcAbs: string;\n disableBuiltInRoute: boolean;\n}\n\nexport default declare<Options>((api, options) => {\n const { assertVersion, types } = api;\n assertVersion(7);\n return {\n name: 'babel-plugin-replace-source',\n visitor: {\n ImportDeclaration(nodePath, ops) {\n const fromPath = nodePath.get('source');\n const fromValue = fromPath.node.value;\n const isSource = ops.filename.startsWith(options.srcAbs);\n if (!isSource) return;\n if (fromValue.startsWith('react-redux')) {\n nodePath.set('source', types.stringLiteral(`rrc-loader-helper/lib/reducers/${fromValue}`));\n } else if (fromValue.startsWith('react-router-dom') && !options.disableBuiltInRoute) {\n nodePath.set('source', types.stringLiteral('rrc-loader-helper/router'));\n } else if (fromValue.startsWith('redux-saga')) {\n nodePath.set('source', types.stringLiteral(`rrc-loader-helper/lib/sagas/${fromValue}`));\n }\n },\n Identifier: (nodePath, ops) => {\n const program = nodePath.findParent((x) => x.isProgram());\n if (!program?.isProgram()) {\n return;\n }\n if (nodePath.node.name === '__ROOT_REDUCER__') {\n const reducersIdentifier = nodePath.scope.generateUidIdentifier('reducers');\n program.unshiftContainer('body', [\n types.importDeclaration([types.importDefaultSpecifier(reducersIdentifier)], types.stringLiteral('@@/lessCoding/reducers')),\n ]);\n nodePath.replaceWith(reducersIdentifier);\n } else if (nodePath.node.name === '__ROOT_SAGA__') {\n const rootSaga = nodePath.scope.generateUidIdentifier('sagas');\n program.unshiftContainer('body', [\n types.importDeclaration([types.importDefaultSpecifier(rootSaga)], types.stringLiteral('@@/lessCoding/sagas')),\n ]);\n nodePath.replaceWith(rootSaga);\n } else if (nodePath.node.name === '__ROOT_ROUTE__') {\n // FUCK\n program.unshiftContainer('body', [\n types.importDeclaration(\n [types.importSpecifier(types.identifier('setReducers'), types.identifier('setReducers'))],\n types.stringLiteral('rrc-loader-helper/lib/imp'),\n ),\n types.expressionStatement(types.callExpression(types.identifier('setReducers'), [types.identifier('reducers')])),\n ]);\n\n const routers = nodePath.scope.generateUidIdentifier('routers');\n program.unshiftContainer('body', [\n types.importDeclaration([types.importDefaultSpecifier(routers)], types.stringLiteral('@@/lessCoding/routers')),\n ]);\n nodePath.replaceWith(\n types.callExpression(types.memberExpression(types.callExpression(routers, [types.identifier('reducers')]), types.identifier('map')), [\n types.arrowFunctionExpression(\n [types.identifier('x')],\n types.blockStatement([\n types.returnStatement(\n types.jsxElement(\n types.jsxOpeningElement(types.jsxIdentifier('Route'), [types.jsxSpreadAttribute(types.identifier('x'))], true),\n null,\n [],\n true,\n ),\n ),\n ]),\n ),\n ]),\n );\n }\n },\n },\n };\n});\n"],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { Compiler, WebpackPluginInstance } from 'webpack';
2
- import { Options } from './utils';
2
+ import { type Options } from './utils';
3
+ export { Options };
3
4
  export default class LcdRouterWebpackPlugin implements WebpackPluginInstance {
4
5
  options: Options;
5
6
  constructor(options: Options);
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAI/D,OAAO,EAAyB,OAAO,EAAe,MAAM,SAAS,CAAC;AAOtE,MAAM,CAAC,OAAO,OAAO,sBAAuB,YAAW,qBAAqB;IAC1E,OAAO,EAAE,OAAO,CAAC;gBACL,OAAO,EAAE,OAAO;IAI5B,KAAK,CAAC,QAAQ,EAAE,QAAQ;IAoOxB,YAAY,CAAC,QAAQ,EAAE,QAAQ;CAYhC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAI/D,OAAO,EAAyB,KAAK,OAAO,EAAe,MAAM,SAAS,CAAC;AAO3E,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB,MAAM,CAAC,OAAO,OAAO,sBAAuB,YAAW,qBAAqB;IAC1E,OAAO,EAAE,OAAO,CAAC;gBACL,OAAO,EAAE,OAAO;IAI5B,KAAK,CAAC,QAAQ,EAAE,QAAQ;IAoOxB,YAAY,CAAC,QAAQ,EAAE,QAAQ;CAYhC"}
package/lib/index.js CHANGED
@@ -212,7 +212,7 @@ class LcdRouterWebpackPlugin {
212
212
  index: 'list',
213
213
  externals: [],
214
214
  pageDir: 'component',
215
- reducerName: 'reducers',
215
+ reducerName: 'reducer',
216
216
  disableBuiltInRoute: false
217
217
  };
218
218
  this.options = (0, _deepmerge.default)(defaultOptions, this.options);
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_globby","_interopRequireDefault","require","_chokidar","_deepmerge","_utils","_ReducersGenerator","_SagasGenerator","_RoutersGenerator","_nodePath","obj","__esModule","default","LcdRouterWebpackPlugin","options","constructor","apply","compiler","mergeOptions","hooks","afterPlugins","tap","pathService","PathService","resolver","Resolver","fileService","FileService","reducersGenerator","ReducersGenerator","sagasGenerator","SagasGenerator","routersGenerator","RoutersGenerator","isDev","mode","process","env","NODE_ENV","writeCode","writeCodeToFile","getReducersCacheFileAbs","getSagasCacheFileAbs","getRoutersCacheFileAbs","resolveFile","filepath","absFilePath","getCurrentFileAbs","currentDir","path","dirname","absCurrentDir","chunkCode","meJSON","readJSONSync","reducerPath","getReducerFile","push","e","mobx","Error","viewPath","getViewFile","theme","hash","sagaPath","getSagaFile","errorComponent","errorCompPath","getErrorComFile","themePath","getThemeJSCacheFileAbs","writeThemeFile","meJSONPath","getMeJSONCacheFileAbs","writeMeJSONFile","isExternal","externals","some","x","hasChildStore","globby","sync","reducerName","cwd","length","set","namespace","page","exact","RegExp","index","test","_key","replace","list","getPageRootAbs","console","warn","sortedList","map","sort","a","b","startsWith","localeCompare","dir","forEach","watcher","chokidar","watch","ignoreInitial","fn","on","environment","module","rules","exclude","use","loader","resolve","presets","babelrc","parserOpts","plugins","defaultOptions","context","enablePreFetch","pageDir","disableBuiltInRoute","deepmerge","exports"],"sources":["../index.ts"],"sourcesContent":["import type { Compiler, WebpackPluginInstance } from 'webpack';\nimport globby from 'globby';\nimport chokidar from 'chokidar';\nimport deepmerge from 'deepmerge';\nimport { PathService, Resolver, Options, FileService } from './utils';\nimport { ReducersGenerator } from './ReducersGenerator';\nimport { SagasGenerator } from './SagasGenerator';\nimport { RoutersGenerator } from './RoutersGenerator';\n\nimport path from 'node:path';\n\nexport default class LcdRouterWebpackPlugin implements WebpackPluginInstance {\n options: Options;\n constructor(options: Options) {\n this.options = options;\n }\n\n apply(compiler: Compiler) {\n this.mergeOptions(compiler);\n\n // 处理 lcd 中的路由体系\n compiler.hooks.afterPlugins.tap('LcdRouterWebpackPlugin', (compiler) => {\n const options = this.options;\n\n const pathService = new PathService(options);\n const resolver = new Resolver(compiler, options);\n const fileService = new FileService(pathService);\n\n const reducersGenerator = new ReducersGenerator();\n const sagasGenerator = new SagasGenerator();\n const routersGenerator = new RoutersGenerator(options, pathService);\n\n function isDev(compiler) {\n if (compiler.options.mode === 'production' || process.env.NODE_ENV === 'production') return false;\n return true;\n }\n\n function writeCode() {\n reducersGenerator.writeCodeToFile(pathService.getReducersCacheFileAbs());\n sagasGenerator.writeCodeToFile(pathService.getSagasCacheFileAbs());\n routersGenerator.writeCodeToFile(pathService.getRoutersCacheFileAbs());\n }\n\n function resolveFile(filepath: string) {\n const absFilePath = pathService.getCurrentFileAbs(filepath);\n const currentDir = path.dirname(filepath);\n const absCurrentDir = path.dirname(absFilePath);\n\n const chunkCode = [] as string[];\n const meJSON = fileService.readJSONSync(absFilePath);\n try {\n const reducerPath = resolver.getReducerFile(absCurrentDir);\n chunkCode.push(`export { default as reducer } from '${reducerPath}';`);\n } catch (e) {\n // feat: reducers 可以不存在, 方便结合reactive 和 ak,默认创建一个reducers\n if (meJSON.mobx) {\n /**\n * mobx 模式下, 需要垫一个被 mobx-adapter 包裹的 reducer 函数\n * 如果存在reducer文件,是默认会被 babel-plugin-enhance-reducer 处理的\n *\n * import storeHoc from 'rrc-loader-helper/lib/mobx-adapter';\n * export const reducer = storeHoc({\n * state: {},\n * }, 'report/other-table')\n *\n * 不太方便去垫一个 reducer 函数,reducer 的路径计算比较复杂, 所以直接报错\n * 同时,从逻辑上讲,如果开启了 mobx,那么必须要有 reducer 文件\n */\n throw Error(`开启 mobx 后,reducer 文件必须存在 ${absFilePath}`);\n }\n chunkCode.push(`export function reducer(){ return {} }`);\n }\n\n const viewPath = resolver.getViewFile(absCurrentDir);\n chunkCode.push(`export { default as view } from '${viewPath}';`);\n\n if (meJSON.theme && !options.theme?.hash) {\n throw Error(`开启页面级主题之前,请优先开启全局主题 ${absFilePath}`);\n }\n\n if (!meJSON.mobx) {\n try {\n const sagaPath = resolver.getSagaFile(absCurrentDir);\n chunkCode.push(`export { default as saga } from '${sagaPath}';`);\n } catch (e) {\n // feat: saga 也可以不存在, 方便结合reactive 和 ak,默认创建一个reducers\n chunkCode.push(`export function* saga(){ return {} }`);\n }\n }\n\n if (meJSON.errorComponent) {\n const errorCompPath = resolver.getErrorComFile(absCurrentDir, meJSON.errorComponent);\n chunkCode.push(`export { default as ErrorComponent } from '${errorCompPath}';`);\n }\n\n if (options.theme?.hash) {\n const themePath = pathService.getThemeJSCacheFileAbs(options.theme?.hash);\n chunkCode.push(`export * from '${themePath}';`);\n }\n\n if (meJSON.theme) {\n fileService.writeThemeFile(meJSON.theme, 'toGlobalTheme');\n const themePath = pathService.getThemeJSCacheFileAbs(meJSON.theme);\n chunkCode.push(`export * from '${themePath}';`);\n }\n\n const meJSONPath = pathService.getMeJSONCacheFileAbs(filepath);\n\n fileService.writeMeJSONFile(meJSONPath, chunkCode);\n\n const isExternal = options.externals?.some?.((x) => x === path.dirname(filepath)) ?? false;\n\n // 处理是否存在多store的场景\n const hasChildStore = globby.sync(`**/*.${options.reducerName}.{t,j}s`, { cwd: absCurrentDir }).length > 0;\n if (hasChildStore && (meJSON.sync || isExternal)) {\n throw Error(`如果开启了Sync模式或当前页面存在于LCD的external中,那么则不支持多Store功能,${absCurrentDir}`);\n }\n\n /** reducers.js */\n reducersGenerator.set(filepath, {\n meJSON,\n isExternal,\n namespace: currentDir,\n meJSONPath: meJSONPath,\n });\n\n /** saga.js */\n sagasGenerator.set(currentDir, {\n meJSON,\n isExternal,\n namespace: currentDir,\n meJSONPath: meJSONPath,\n });\n\n /** router */\n routersGenerator.set(currentDir, {\n meJSON,\n isExternal,\n page: currentDir,\n path: currentDir,\n exact: false,\n meJSONPath: meJSONPath,\n });\n\n /** 处理 /list 的路由 */\n if (new RegExp(`\\/${options.index}$`).test(absCurrentDir)) {\n const _key = absCurrentDir.replace(new RegExp(`\\/${options.index}$`), '');\n routersGenerator.set(_key, {\n meJSON,\n isExternal,\n page: absCurrentDir,\n path: _key,\n exact: true,\n meJSONPath: meJSONPath,\n });\n }\n }\n\n if (options.theme?.hash) {\n fileService.writeThemeFile(options.theme.hash, 'toGlobalTheme');\n }\n\n const list = globby.sync('**/me.json', {\n cwd: pathService.getPageRootAbs(),\n });\n\n if (list.length === 0) {\n console.warn('没有找到me.json文件');\n }\n\n /**\n * glob 的排序 是包含文件名 me.json 的完整路径,存在问题\n * 比如 会将 /xx/ss/me.json 排到 /xx/ss/zz/me.json 前面\n * glob 的 noSort option 会将 文件夹排到前面, 因此需要手动排序, 并且统一成 globby, 速度更快\n */\n const sortedList = list\n .map((filepath) => filepath?.replace(/me.json$/, ''))\n .sort((a, b) => {\n if (a?.startsWith(b)) return -1;\n return a.localeCompare(b, 'en');\n })\n .map((dir) => `${dir}me.json`);\n\n sortedList.forEach((filepath) => {\n resolveFile(filepath);\n });\n\n writeCode();\n\n if (isDev(compiler)) {\n const watcher = chokidar.watch('**/me.json', {\n cwd: pathService.getPageRootAbs(),\n ignoreInitial: true,\n });\n const fn = async (filepath) => {\n await resolveFile(filepath);\n writeCode();\n };\n watcher.on('add', fn);\n watcher.on('addDir', fn);\n watcher.on('change', fn);\n watcher.on('unlink', fn);\n watcher.on('unlinkDir', fn);\n watcher.on('error', fn);\n }\n });\n\n // lcd 中包含一些语法转换处理\n compiler.hooks.environment.tap('lcd-preset', () => {\n compiler.options.module.rules.push({\n test: /\\.(js|ts)x?$/,\n exclude: /node_modules/,\n use: [\n {\n loader: require.resolve('babel-loader'),\n options: {\n presets: [[require.resolve('./babel/index'), this.options]],\n babelrc: false,\n // 需要支持语法解析, 但不需要做转换\n parserOpts: {\n plugins: [\n 'jsx',\n 'typescript',\n 'asyncDoExpressions',\n 'decimal',\n 'decorators-legacy',\n 'decoratorAutoAccessors',\n 'destructuringPrivate',\n 'doExpressions',\n 'exportDefaultFrom',\n 'functionBind',\n 'functionSent',\n 'importAssertions',\n 'moduleBlocks',\n 'partialApplication',\n 'throwExpressions',\n ],\n },\n },\n },\n ],\n });\n });\n }\n\n mergeOptions(compiler: Compiler) {\n const defaultOptions = {\n context: compiler.context,\n enablePreFetch: false,\n index: 'list',\n externals: [],\n pageDir: 'component',\n reducerName: 'reducers',\n disableBuiltInRoute: false,\n };\n this.options = deepmerge(defaultOptions, this.options);\n }\n}\n"],"mappings":";;;;;;AACA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,UAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,kBAAA,GAAAJ,OAAA;AACA,IAAAK,eAAA,GAAAL,OAAA;AACA,IAAAM,iBAAA,GAAAN,OAAA;AAEA,IAAAO,SAAA,GAAAR,sBAAA,CAAAC,OAAA;AAA6B,SAAAD,uBAAAS,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEd,MAAMG,sBAAsB,CAAkC;EAC3EC,OAAO;EACPC,WAAWA,CAACD,OAAgB,EAAE;IAC5B,IAAI,CAACA,OAAO,GAAGA,OAAO;EACxB;EAEAE,KAAKA,CAACC,QAAkB,EAAE;IACxB,IAAI,CAACC,YAAY,CAACD,QAAQ,CAAC;;IAE3B;IACAA,QAAQ,CAACE,KAAK,CAACC,YAAY,CAACC,GAAG,CAAC,wBAAwB,EAAGJ,QAAQ,IAAK;MACtE,MAAMH,OAAO,GAAG,IAAI,CAACA,OAAO;MAE5B,MAAMQ,WAAW,GAAG,IAAIC,kBAAW,CAACT,OAAO,CAAC;MAC5C,MAAMU,QAAQ,GAAG,IAAIC,eAAQ,CAACR,QAAQ,EAAEH,OAAO,CAAC;MAChD,MAAMY,WAAW,GAAG,IAAIC,kBAAW,CAACL,WAAW,CAAC;MAEhD,MAAMM,iBAAiB,GAAG,IAAIC,oCAAiB,EAAE;MACjD,MAAMC,cAAc,GAAG,IAAIC,8BAAc,EAAE;MAC3C,MAAMC,gBAAgB,GAAG,IAAIC,kCAAgB,CAACnB,OAAO,EAAEQ,WAAW,CAAC;MAEnE,SAASY,KAAKA,CAACjB,QAAQ,EAAE;QACvB,IAAIA,QAAQ,CAACH,OAAO,CAACqB,IAAI,KAAK,YAAY,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE,OAAO,KAAK;QACjG,OAAO,IAAI;MACb;MAEA,SAASC,SAASA,CAAA,EAAG;QACnBX,iBAAiB,CAACY,eAAe,CAAClB,WAAW,CAACmB,uBAAuB,EAAE,CAAC;QACxEX,cAAc,CAACU,eAAe,CAAClB,WAAW,CAACoB,oBAAoB,EAAE,CAAC;QAClEV,gBAAgB,CAACQ,eAAe,CAAClB,WAAW,CAACqB,sBAAsB,EAAE,CAAC;MACxE;MAEA,SAASC,WAAWA,CAACC,QAAgB,EAAE;QACrC,MAAMC,WAAW,GAAGxB,WAAW,CAACyB,iBAAiB,CAACF,QAAQ,CAAC;QAC3D,MAAMG,UAAU,GAAGC,iBAAI,CAACC,OAAO,CAACL,QAAQ,CAAC;QACzC,MAAMM,aAAa,GAAGF,iBAAI,CAACC,OAAO,CAACJ,WAAW,CAAC;QAE/C,MAAMM,SAAS,GAAG,EAAc;QAChC,MAAMC,MAAM,GAAG3B,WAAW,CAAC4B,YAAY,CAACR,WAAW,CAAC;QACpD,IAAI;UACF,MAAMS,WAAW,GAAG/B,QAAQ,CAACgC,cAAc,CAACL,aAAa,CAAC;UAC1DC,SAAS,CAACK,IAAI,CAAE,wCAAuCF,WAAY,IAAG,CAAC;QACzE,CAAC,CAAC,OAAOG,CAAC,EAAE;UACV;UACA,IAAIL,MAAM,CAACM,IAAI,EAAE;YACf;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;YACY,MAAMC,KAAK,CAAE,4BAA2Bd,WAAY,EAAC,CAAC;UACxD;UACAM,SAAS,CAACK,IAAI,CAAE,wCAAuC,CAAC;QAC1D;QAEA,MAAMI,QAAQ,GAAGrC,QAAQ,CAACsC,WAAW,CAACX,aAAa,CAAC;QACpDC,SAAS,CAACK,IAAI,CAAE,qCAAoCI,QAAS,IAAG,CAAC;QAEjE,IAAIR,MAAM,CAACU,KAAK,IAAI,CAACjD,OAAO,CAACiD,KAAK,EAAEC,IAAI,EAAE;UACxC,MAAMJ,KAAK,CAAE,uBAAsBd,WAAY,EAAC,CAAC;QACnD;QAEA,IAAI,CAACO,MAAM,CAACM,IAAI,EAAE;UAChB,IAAI;YACF,MAAMM,QAAQ,GAAGzC,QAAQ,CAAC0C,WAAW,CAACf,aAAa,CAAC;YACpDC,SAAS,CAACK,IAAI,CAAE,qCAAoCQ,QAAS,IAAG,CAAC;UACnE,CAAC,CAAC,OAAOP,CAAC,EAAE;YACV;YACAN,SAAS,CAACK,IAAI,CAAE,sCAAqC,CAAC;UACxD;QACF;QAEA,IAAIJ,MAAM,CAACc,cAAc,EAAE;UACzB,MAAMC,aAAa,GAAG5C,QAAQ,CAAC6C,eAAe,CAAClB,aAAa,EAAEE,MAAM,CAACc,cAAc,CAAC;UACpFf,SAAS,CAACK,IAAI,CAAE,+CAA8CW,aAAc,IAAG,CAAC;QAClF;QAEA,IAAItD,OAAO,CAACiD,KAAK,EAAEC,IAAI,EAAE;UACvB,MAAMM,SAAS,GAAGhD,WAAW,CAACiD,sBAAsB,CAACzD,OAAO,CAACiD,KAAK,EAAEC,IAAI,CAAC;UACzEZ,SAAS,CAACK,IAAI,CAAE,kBAAiBa,SAAU,IAAG,CAAC;QACjD;QAEA,IAAIjB,MAAM,CAACU,KAAK,EAAE;UAChBrC,WAAW,CAAC8C,cAAc,CAACnB,MAAM,CAACU,KAAK,EAAE,eAAe,CAAC;UACzD,MAAMO,SAAS,GAAGhD,WAAW,CAACiD,sBAAsB,CAAClB,MAAM,CAACU,KAAK,CAAC;UAClEX,SAAS,CAACK,IAAI,CAAE,kBAAiBa,SAAU,IAAG,CAAC;QACjD;QAEA,MAAMG,UAAU,GAAGnD,WAAW,CAACoD,qBAAqB,CAAC7B,QAAQ,CAAC;QAE9DnB,WAAW,CAACiD,eAAe,CAACF,UAAU,EAAErB,SAAS,CAAC;QAElD,MAAMwB,UAAU,GAAG9D,OAAO,CAAC+D,SAAS,EAAEC,IAAI,GAAIC,CAAC,IAAKA,CAAC,KAAK9B,iBAAI,CAACC,OAAO,CAACL,QAAQ,CAAC,CAAC,IAAI,KAAK;;QAE1F;QACA,MAAMmC,aAAa,GAAGC,eAAM,CAACC,IAAI,CAAE,QAAOpE,OAAO,CAACqE,WAAY,SAAQ,EAAE;UAAEC,GAAG,EAAEjC;QAAc,CAAC,CAAC,CAACkC,MAAM,GAAG,CAAC;QAC1G,IAAIL,aAAa,KAAK3B,MAAM,CAAC6B,IAAI,IAAIN,UAAU,CAAC,EAAE;UAChD,MAAMhB,KAAK,CAAE,mDAAkDT,aAAc,EAAC,CAAC;QACjF;;QAEA;QACAvB,iBAAiB,CAAC0D,GAAG,CAACzC,QAAQ,EAAE;UAC9BQ,MAAM;UACNuB,UAAU;UACVW,SAAS,EAAEvC,UAAU;UACrByB,UAAU,EAAEA;QACd,CAAC,CAAC;;QAEF;QACA3C,cAAc,CAACwD,GAAG,CAACtC,UAAU,EAAE;UAC7BK,MAAM;UACNuB,UAAU;UACVW,SAAS,EAAEvC,UAAU;UACrByB,UAAU,EAAEA;QACd,CAAC,CAAC;;QAEF;QACAzC,gBAAgB,CAACsD,GAAG,CAACtC,UAAU,EAAE;UAC/BK,MAAM;UACNuB,UAAU;UACVY,IAAI,EAAExC,UAAU;UAChBC,IAAI,EAAED,UAAU;UAChByC,KAAK,EAAE,KAAK;UACZhB,UAAU,EAAEA;QACd,CAAC,CAAC;;QAEF;QACA,IAAI,IAAIiB,MAAM,CAAE,KAAI5E,OAAO,CAAC6E,KAAM,GAAE,CAAC,CAACC,IAAI,CAACzC,aAAa,CAAC,EAAE;UACzD,MAAM0C,IAAI,GAAG1C,aAAa,CAAC2C,OAAO,CAAC,IAAIJ,MAAM,CAAE,KAAI5E,OAAO,CAAC6E,KAAM,GAAE,CAAC,EAAE,EAAE,CAAC;UACzE3D,gBAAgB,CAACsD,GAAG,CAACO,IAAI,EAAE;YACzBxC,MAAM;YACNuB,UAAU;YACVY,IAAI,EAAErC,aAAa;YACnBF,IAAI,EAAE4C,IAAI;YACVJ,KAAK,EAAE,IAAI;YACXhB,UAAU,EAAEA;UACd,CAAC,CAAC;QACJ;MACF;MAEA,IAAI3D,OAAO,CAACiD,KAAK,EAAEC,IAAI,EAAE;QACvBtC,WAAW,CAAC8C,cAAc,CAAC1D,OAAO,CAACiD,KAAK,CAACC,IAAI,EAAE,eAAe,CAAC;MACjE;MAEA,MAAM+B,IAAI,GAAGd,eAAM,CAACC,IAAI,CAAC,YAAY,EAAE;QACrCE,GAAG,EAAE9D,WAAW,CAAC0E,cAAc;MACjC,CAAC,CAAC;MAEF,IAAID,IAAI,CAACV,MAAM,KAAK,CAAC,EAAE;QACrBY,OAAO,CAACC,IAAI,CAAC,eAAe,CAAC;MAC/B;;MAEA;AACN;AACA;AACA;AACA;MACM,MAAMC,UAAU,GAAGJ,IAAI,CACpBK,GAAG,CAAEvD,QAAQ,IAAKA,QAAQ,EAAEiD,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CACpDO,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAK;QACd,IAAID,CAAC,EAAEE,UAAU,CAACD,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAOD,CAAC,CAACG,aAAa,CAACF,CAAC,EAAE,IAAI,CAAC;MACjC,CAAC,CAAC,CACDH,GAAG,CAAEM,GAAG,IAAM,GAAEA,GAAI,SAAQ,CAAC;MAEhCP,UAAU,CAACQ,OAAO,CAAE9D,QAAQ,IAAK;QAC/BD,WAAW,CAACC,QAAQ,CAAC;MACvB,CAAC,CAAC;MAEFN,SAAS,EAAE;MAEX,IAAIL,KAAK,CAACjB,QAAQ,CAAC,EAAE;QACnB,MAAM2F,OAAO,GAAGC,iBAAQ,CAACC,KAAK,CAAC,YAAY,EAAE;UAC3C1B,GAAG,EAAE9D,WAAW,CAAC0E,cAAc,EAAE;UACjCe,aAAa,EAAE;QACjB,CAAC,CAAC;QACF,MAAMC,EAAE,GAAG,MAAOnE,QAAQ,IAAK;UAC7B,MAAMD,WAAW,CAACC,QAAQ,CAAC;UAC3BN,SAAS,EAAE;QACb,CAAC;QACDqE,OAAO,CAACK,EAAE,CAAC,KAAK,EAAED,EAAE,CAAC;QACrBJ,OAAO,CAACK,EAAE,CAAC,QAAQ,EAAED,EAAE,CAAC;QACxBJ,OAAO,CAACK,EAAE,CAAC,QAAQ,EAAED,EAAE,CAAC;QACxBJ,OAAO,CAACK,EAAE,CAAC,QAAQ,EAAED,EAAE,CAAC;QACxBJ,OAAO,CAACK,EAAE,CAAC,WAAW,EAAED,EAAE,CAAC;QAC3BJ,OAAO,CAACK,EAAE,CAAC,OAAO,EAAED,EAAE,CAAC;MACzB;IACF,CAAC,CAAC;;IAEF;IACA/F,QAAQ,CAACE,KAAK,CAAC+F,WAAW,CAAC7F,GAAG,CAAC,YAAY,EAAE,MAAM;MACjDJ,QAAQ,CAACH,OAAO,CAACqG,MAAM,CAACC,KAAK,CAAC3D,IAAI,CAAC;QACjCmC,IAAI,EAAE,cAAc;QACpByB,OAAO,EAAE,cAAc;QACvBC,GAAG,EAAE,CACH;UACEC,MAAM,EAAErH,OAAO,CAACsH,OAAO,CAAC,cAAc,CAAC;UACvC1G,OAAO,EAAE;YACP2G,OAAO,EAAE,CAAC,CAACvH,OAAO,CAACsH,OAAO,iBAAiB,EAAE,IAAI,CAAC1G,OAAO,CAAC,CAAC;YAC3D4G,OAAO,EAAE,KAAK;YACd;YACAC,UAAU,EAAE;cACVC,OAAO,EAAE,CACP,KAAK,EACL,YAAY,EACZ,oBAAoB,EACpB,SAAS,EACT,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,kBAAkB;YAEtB;UACF;QACF,CAAC;MAEL,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EAEA1G,YAAYA,CAACD,QAAkB,EAAE;IAC/B,MAAM4G,cAAc,GAAG;MACrBC,OAAO,EAAE7G,QAAQ,CAAC6G,OAAO;MACzBC,cAAc,EAAE,KAAK;MACrBpC,KAAK,EAAE,MAAM;MACbd,SAAS,EAAE,EAAE;MACbmD,OAAO,EAAE,WAAW;MACpB7C,WAAW,EAAE,UAAU;MACvB8C,mBAAmB,EAAE;IACvB,CAAC;IACD,IAAI,CAACnH,OAAO,GAAG,IAAAoH,kBAAS,EAACL,cAAc,EAAE,IAAI,CAAC/G,OAAO,CAAC;EACxD;AACF;AAACqH,OAAA,CAAAvH,OAAA,GAAAC,sBAAA"}
1
+ {"version":3,"file":"index.js","names":["_globby","_interopRequireDefault","require","_chokidar","_deepmerge","_utils","_ReducersGenerator","_SagasGenerator","_RoutersGenerator","_nodePath","obj","__esModule","default","LcdRouterWebpackPlugin","options","constructor","apply","compiler","mergeOptions","hooks","afterPlugins","tap","pathService","PathService","resolver","Resolver","fileService","FileService","reducersGenerator","ReducersGenerator","sagasGenerator","SagasGenerator","routersGenerator","RoutersGenerator","isDev","mode","process","env","NODE_ENV","writeCode","writeCodeToFile","getReducersCacheFileAbs","getSagasCacheFileAbs","getRoutersCacheFileAbs","resolveFile","filepath","absFilePath","getCurrentFileAbs","currentDir","path","dirname","absCurrentDir","chunkCode","meJSON","readJSONSync","reducerPath","getReducerFile","push","e","mobx","Error","viewPath","getViewFile","theme","hash","sagaPath","getSagaFile","errorComponent","errorCompPath","getErrorComFile","themePath","getThemeJSCacheFileAbs","writeThemeFile","meJSONPath","getMeJSONCacheFileAbs","writeMeJSONFile","isExternal","externals","some","x","hasChildStore","globby","sync","reducerName","cwd","length","set","namespace","page","exact","RegExp","index","test","_key","replace","list","getPageRootAbs","console","warn","sortedList","map","sort","a","b","startsWith","localeCompare","dir","forEach","watcher","chokidar","watch","ignoreInitial","fn","on","environment","module","rules","exclude","use","loader","resolve","presets","babelrc","parserOpts","plugins","defaultOptions","context","enablePreFetch","pageDir","disableBuiltInRoute","deepmerge","exports"],"sources":["../index.ts"],"sourcesContent":["import type { Compiler, WebpackPluginInstance } from 'webpack';\nimport globby from 'globby';\nimport chokidar from 'chokidar';\nimport deepmerge from 'deepmerge';\nimport { PathService, Resolver, type Options, FileService } from './utils';\nimport { ReducersGenerator } from './ReducersGenerator';\nimport { SagasGenerator } from './SagasGenerator';\nimport { RoutersGenerator } from './RoutersGenerator';\n\nimport path from 'node:path';\n\nexport { Options };\n\nexport default class LcdRouterWebpackPlugin implements WebpackPluginInstance {\n options: Options;\n constructor(options: Options) {\n this.options = options;\n }\n\n apply(compiler: Compiler) {\n this.mergeOptions(compiler);\n\n // 处理 lcd 中的路由体系\n compiler.hooks.afterPlugins.tap('LcdRouterWebpackPlugin', (compiler) => {\n const options = this.options;\n\n const pathService = new PathService(options);\n const resolver = new Resolver(compiler, options);\n const fileService = new FileService(pathService);\n\n const reducersGenerator = new ReducersGenerator();\n const sagasGenerator = new SagasGenerator();\n const routersGenerator = new RoutersGenerator(options, pathService);\n\n function isDev(compiler) {\n if (compiler.options.mode === 'production' || process.env.NODE_ENV === 'production') return false;\n return true;\n }\n\n function writeCode() {\n reducersGenerator.writeCodeToFile(pathService.getReducersCacheFileAbs());\n sagasGenerator.writeCodeToFile(pathService.getSagasCacheFileAbs());\n routersGenerator.writeCodeToFile(pathService.getRoutersCacheFileAbs());\n }\n\n function resolveFile(filepath: string) {\n const absFilePath = pathService.getCurrentFileAbs(filepath);\n const currentDir = path.dirname(filepath);\n const absCurrentDir = path.dirname(absFilePath);\n\n const chunkCode = [] as string[];\n const meJSON = fileService.readJSONSync(absFilePath);\n try {\n const reducerPath = resolver.getReducerFile(absCurrentDir);\n chunkCode.push(`export { default as reducer } from '${reducerPath}';`);\n } catch (e) {\n // feat: reducers 可以不存在, 方便结合reactive 和 ak,默认创建一个reducers\n if (meJSON.mobx) {\n /**\n * mobx 模式下, 需要垫一个被 mobx-adapter 包裹的 reducer 函数\n * 如果存在reducer文件,是默认会被 babel-plugin-enhance-reducer 处理的\n *\n * import storeHoc from 'rrc-loader-helper/lib/mobx-adapter';\n * export const reducer = storeHoc({\n * state: {},\n * }, 'report/other-table')\n *\n * 不太方便去垫一个 reducer 函数,reducer 的路径计算比较复杂, 所以直接报错\n * 同时,从逻辑上讲,如果开启了 mobx,那么必须要有 reducer 文件\n */\n throw Error(`开启 mobx 后,reducer 文件必须存在 ${absFilePath}`);\n }\n chunkCode.push(`export function reducer(){ return {} }`);\n }\n\n const viewPath = resolver.getViewFile(absCurrentDir);\n chunkCode.push(`export { default as view } from '${viewPath}';`);\n\n if (meJSON.theme && !options.theme?.hash) {\n throw Error(`开启页面级主题之前,请优先开启全局主题 ${absFilePath}`);\n }\n\n if (!meJSON.mobx) {\n try {\n const sagaPath = resolver.getSagaFile(absCurrentDir);\n chunkCode.push(`export { default as saga } from '${sagaPath}';`);\n } catch (e) {\n // feat: saga 也可以不存在, 方便结合reactive 和 ak,默认创建一个reducers\n chunkCode.push(`export function* saga(){ return {} }`);\n }\n }\n\n if (meJSON.errorComponent) {\n const errorCompPath = resolver.getErrorComFile(absCurrentDir, meJSON.errorComponent);\n chunkCode.push(`export { default as ErrorComponent } from '${errorCompPath}';`);\n }\n\n if (options.theme?.hash) {\n const themePath = pathService.getThemeJSCacheFileAbs(options.theme?.hash);\n chunkCode.push(`export * from '${themePath}';`);\n }\n\n if (meJSON.theme) {\n fileService.writeThemeFile(meJSON.theme, 'toGlobalTheme');\n const themePath = pathService.getThemeJSCacheFileAbs(meJSON.theme);\n chunkCode.push(`export * from '${themePath}';`);\n }\n\n const meJSONPath = pathService.getMeJSONCacheFileAbs(filepath);\n\n fileService.writeMeJSONFile(meJSONPath, chunkCode);\n\n const isExternal = options.externals?.some?.((x) => x === path.dirname(filepath)) ?? false;\n\n // 处理是否存在多store的场景\n const hasChildStore = globby.sync(`**/*.${options.reducerName}.{t,j}s`, { cwd: absCurrentDir }).length > 0;\n if (hasChildStore && (meJSON.sync || isExternal)) {\n throw Error(`如果开启了Sync模式或当前页面存在于LCD的external中,那么则不支持多Store功能,${absCurrentDir}`);\n }\n\n /** reducers.js */\n reducersGenerator.set(filepath, {\n meJSON,\n isExternal,\n namespace: currentDir,\n meJSONPath: meJSONPath,\n });\n\n /** saga.js */\n sagasGenerator.set(currentDir, {\n meJSON,\n isExternal,\n namespace: currentDir,\n meJSONPath: meJSONPath,\n });\n\n /** router */\n routersGenerator.set(currentDir, {\n meJSON,\n isExternal,\n page: currentDir,\n path: currentDir,\n exact: false,\n meJSONPath: meJSONPath,\n });\n\n /** 处理 /list 的路由 */\n if (new RegExp(`\\/${options.index}$`).test(absCurrentDir)) {\n const _key = absCurrentDir.replace(new RegExp(`\\/${options.index}$`), '');\n routersGenerator.set(_key, {\n meJSON,\n isExternal,\n page: absCurrentDir,\n path: _key,\n exact: true,\n meJSONPath: meJSONPath,\n });\n }\n }\n\n if (options.theme?.hash) {\n fileService.writeThemeFile(options.theme.hash, 'toGlobalTheme');\n }\n\n const list = globby.sync('**/me.json', {\n cwd: pathService.getPageRootAbs(),\n });\n\n if (list.length === 0) {\n console.warn('没有找到me.json文件');\n }\n\n /**\n * glob 的排序 是包含文件名 me.json 的完整路径,存在问题\n * 比如 会将 /xx/ss/me.json 排到 /xx/ss/zz/me.json 前面\n * glob 的 noSort option 会将 文件夹排到前面, 因此需要手动排序, 并且统一成 globby, 速度更快\n */\n const sortedList = list\n .map((filepath) => filepath?.replace(/me.json$/, ''))\n .sort((a, b) => {\n if (a?.startsWith(b)) return -1;\n return a.localeCompare(b, 'en');\n })\n .map((dir) => `${dir}me.json`);\n\n sortedList.forEach((filepath) => {\n resolveFile(filepath);\n });\n\n writeCode();\n\n if (isDev(compiler)) {\n const watcher = chokidar.watch('**/me.json', {\n cwd: pathService.getPageRootAbs(),\n ignoreInitial: true,\n });\n const fn = async (filepath) => {\n await resolveFile(filepath);\n writeCode();\n };\n watcher.on('add', fn);\n watcher.on('addDir', fn);\n watcher.on('change', fn);\n watcher.on('unlink', fn);\n watcher.on('unlinkDir', fn);\n watcher.on('error', fn);\n }\n });\n\n // lcd 中包含一些语法转换处理\n compiler.hooks.environment.tap('lcd-preset', () => {\n compiler.options.module.rules.push({\n test: /\\.(js|ts)x?$/,\n exclude: /node_modules/,\n use: [\n {\n loader: require.resolve('babel-loader'),\n options: {\n presets: [[require.resolve('./babel/index'), this.options]],\n babelrc: false,\n // 需要支持语法解析, 但不需要做转换\n parserOpts: {\n plugins: [\n 'jsx',\n 'typescript',\n 'asyncDoExpressions',\n 'decimal',\n 'decorators-legacy',\n 'decoratorAutoAccessors',\n 'destructuringPrivate',\n 'doExpressions',\n 'exportDefaultFrom',\n 'functionBind',\n 'functionSent',\n 'importAssertions',\n 'moduleBlocks',\n 'partialApplication',\n 'throwExpressions',\n ],\n },\n },\n },\n ],\n });\n });\n }\n\n mergeOptions(compiler: Compiler) {\n const defaultOptions = {\n context: compiler.context,\n enablePreFetch: false,\n index: 'list',\n externals: [],\n pageDir: 'component',\n reducerName: 'reducer',\n disableBuiltInRoute: false,\n };\n this.options = deepmerge(defaultOptions, this.options);\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/utils/resolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,qBAAa,QAAQ;IACnB,QAAQ,EAAE,GAAG,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;gBACL,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO;IAQhD;;OAEG;IACH,cAAc,wBAAwE;IAEtF;;OAEG;IACH,WAAW,wBAAiD;IAE5D;;;OAGG;IACH,WAAW,0BAAsB,OAAO,SACmC;IAE3E;;OAEG;IACH,eAAe,6CAAuE;CACvF"}
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/utils/resolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,qBAAa,QAAQ;IACnB,QAAQ,EAAE,GAAG,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;gBACL,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO;IAQhD;;OAEG;IACH,cAAc,wBAAwE;IAEtF;;OAEG;IACH,WAAW,wBAAiD;IAE5D;;;OAGG;IACH,WAAW,0BAAsB,OAAO,SAAgF;IAExH;;OAEG;IACH,eAAe,6CAAuE;CACvF"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.js","names":["_enhancedResolve","require","Resolver","resolver","options","constructor","compiler","create","sync","extensions","resolve","alias","getReducerFile","dirname","reducerName","getViewFile","getSagaFile","isMobx","getErrorComFile","errorComponent","exports"],"sources":["../../resolver.ts"],"sourcesContent":["import { create } from 'enhanced-resolve';\nimport type { Compiler } from 'webpack';\nimport type { Options } from './types';\n\nexport class Resolver {\n resolver: any;\n options: Options;\n constructor(compiler: Compiler, options: Options) {\n this.options = options;\n this.resolver = create.sync({\n extensions: compiler.options.resolve.extensions,\n alias: compiler.options.resolve.alias,\n });\n }\n\n /**\n * 获取 当前目录下 reducer文件的路径\n */\n getReducerFile = (dirname) => this.resolver(dirname, `./${this.options.reducerName}`);\n\n /**\n * 获取 当前目录下 view文件的路径\n */\n getViewFile = (dirname) => this.resolver(dirname, `./view`);\n\n /**\n * 获取 当前目录下 saga 文件的路径\n * @param isMobx 如果是 mobx 则返回 reducers 的地址\n */\n getSagaFile = (dirname, isMobx?: boolean) =>\n isMobx ? this.getReducerFile(dirname) : this.resolver(dirname, `./saga`);\n\n /**\n * 获取 me.json 配置的 errorComponent 地址\n */\n getErrorComFile = (dirname, errorComponent) => this.resolver(dirname, errorComponent);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAIO,MAAMC,QAAQ,CAAC;EACpBC,QAAQ;EACRC,OAAO;EACPC,WAAWA,CAACC,QAAkB,EAAEF,OAAgB,EAAE;IAChD,IAAI,CAACA,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACD,QAAQ,GAAGI,uBAAM,CAACC,IAAI,CAAC;MAC1BC,UAAU,EAAEH,QAAQ,CAACF,OAAO,CAACM,OAAO,CAACD,UAAU;MAC/CE,KAAK,EAAEL,QAAQ,CAACF,OAAO,CAACM,OAAO,CAACC;IAClC,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;EACEC,cAAc,GAAIC,OAAO,IAAK,IAAI,CAACV,QAAQ,CAACU,OAAO,EAAG,KAAI,IAAI,CAACT,OAAO,CAACU,WAAY,EAAC,CAAC;;EAErF;AACF;AACA;EACEC,WAAW,GAAIF,OAAO,IAAK,IAAI,CAACV,QAAQ,CAACU,OAAO,EAAG,QAAO,CAAC;;EAE3D;AACF;AACA;AACA;EACEG,WAAW,GAAGA,CAACH,OAAO,EAAEI,MAAgB,KACtCA,MAAM,GAAG,IAAI,CAACL,cAAc,CAACC,OAAO,CAAC,GAAG,IAAI,CAACV,QAAQ,CAACU,OAAO,EAAG,QAAO,CAAC;;EAE1E;AACF;AACA;EACEK,eAAe,GAAGA,CAACL,OAAO,EAAEM,cAAc,KAAK,IAAI,CAAChB,QAAQ,CAACU,OAAO,EAAEM,cAAc,CAAC;AACvF;AAACC,OAAA,CAAAlB,QAAA,GAAAA,QAAA"}
1
+ {"version":3,"file":"resolver.js","names":["_enhancedResolve","require","Resolver","resolver","options","constructor","compiler","create","sync","extensions","resolve","alias","getReducerFile","dirname","reducerName","getViewFile","getSagaFile","isMobx","getErrorComFile","errorComponent","exports"],"sources":["../../resolver.ts"],"sourcesContent":["import { create } from 'enhanced-resolve';\nimport type { Compiler } from 'webpack';\nimport type { Options } from './types';\n\nexport class Resolver {\n resolver: any;\n options: Options;\n constructor(compiler: Compiler, options: Options) {\n this.options = options;\n this.resolver = create.sync({\n extensions: compiler.options.resolve.extensions,\n alias: compiler.options.resolve.alias,\n });\n }\n\n /**\n * 获取 当前目录下 reducer文件的路径\n */\n getReducerFile = (dirname) => this.resolver(dirname, `./${this.options.reducerName}`);\n\n /**\n * 获取 当前目录下 view文件的路径\n */\n getViewFile = (dirname) => this.resolver(dirname, `./view`);\n\n /**\n * 获取 当前目录下 saga 文件的路径\n * @param isMobx 如果是 mobx 则返回 reducers 的地址\n */\n getSagaFile = (dirname, isMobx?: boolean) => (isMobx ? this.getReducerFile(dirname) : this.resolver(dirname, `./saga`));\n\n /**\n * 获取 me.json 配置的 errorComponent 地址\n */\n getErrorComFile = (dirname, errorComponent) => this.resolver(dirname, errorComponent);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAIO,MAAMC,QAAQ,CAAC;EACpBC,QAAQ;EACRC,OAAO;EACPC,WAAWA,CAACC,QAAkB,EAAEF,OAAgB,EAAE;IAChD,IAAI,CAACA,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACD,QAAQ,GAAGI,uBAAM,CAACC,IAAI,CAAC;MAC1BC,UAAU,EAAEH,QAAQ,CAACF,OAAO,CAACM,OAAO,CAACD,UAAU;MAC/CE,KAAK,EAAEL,QAAQ,CAACF,OAAO,CAACM,OAAO,CAACC;IAClC,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;EACEC,cAAc,GAAIC,OAAO,IAAK,IAAI,CAACV,QAAQ,CAACU,OAAO,EAAG,KAAI,IAAI,CAACT,OAAO,CAACU,WAAY,EAAC,CAAC;;EAErF;AACF;AACA;EACEC,WAAW,GAAIF,OAAO,IAAK,IAAI,CAACV,QAAQ,CAACU,OAAO,EAAG,QAAO,CAAC;;EAE3D;AACF;AACA;AACA;EACEG,WAAW,GAAGA,CAACH,OAAO,EAAEI,MAAgB,KAAMA,MAAM,GAAG,IAAI,CAACL,cAAc,CAACC,OAAO,CAAC,GAAG,IAAI,CAACV,QAAQ,CAACU,OAAO,EAAG,QAAO,CAAE;;EAEvH;AACF;AACA;EACEK,eAAe,GAAGA,CAACL,OAAO,EAAEM,cAAc,KAAK,IAAI,CAAChB,QAAQ,CAACU,OAAO,EAAEM,cAAc,CAAC;AACvF;AAACC,OAAA,CAAAlB,QAAA,GAAAA,QAAA"}
@@ -25,7 +25,7 @@ export interface Options {
25
25
  * 页面目录
26
26
  * @default component
27
27
  */
28
- pageDir: string;
28
+ pageDir?: string;
29
29
  /**
30
30
  * shineout 主题
31
31
  */
@@ -34,9 +34,9 @@ export interface Options {
34
34
  };
35
35
  /**
36
36
  * reducer 文件名称
37
- * @default reducers
37
+ * @default reducer
38
38
  */
39
- reducerName: string;
39
+ reducerName?: string;
40
40
  /**
41
41
  * loading 组件路径
42
42
  */
@@ -64,10 +64,21 @@ export interface Options {
64
64
  export interface MeJSON {
65
65
  theme?: string;
66
66
  sync?: boolean;
67
+ /**
68
+ * mobx 模式
69
+ * 未开启时, reducer 文件导出为纯函数,用来处理状态修改。 saga 文件用来处理副作用逻辑。
70
+ * 开启后,reducer 文件导出为对象,包含 state 以及方法, 普通函数作为reducer修改状态, generator 函数处理副作用逻辑。
71
+ * @default false
72
+ */
67
73
  mobx?: boolean;
68
74
  keepAlive?: boolean;
69
75
  retain?: boolean;
70
76
  title?: string;
77
+ /**
78
+ * @description 为了兼容同一个页面多次打开 动态拓展 redux 的reducer 节点
79
+ * @description 在路由配置中添加 /:id?,不推荐使用, 仅极少场景需要
80
+ * @default false
81
+ */
71
82
  linkExtendable?: boolean;
72
83
  injectStore?: boolean | string;
73
84
  route?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../types.ts"],"sourcesContent":["export interface Options {\n /**\n * 组件上下文, 默认取 compiler.context\n * @default compiler.context\n */\n context?: string;\n /**\n * 是否禁用内置路由\n * 默认会将 react-router-dom 转换到 rrc-loader-helper/router\n * 如果你是新项目,建议将该配置配置为true,因为内置路由针对react-router做了大量的改动,可能会引起一些无法预测的故障\n * @default false\n */\n disableBuiltInRoute?: boolean;\n /**\n * 是否开启 webpack prefetch预加载\n * @default false\n */\n enablePreFetch?: boolean;\n /**\n * 指定页面路径 不进行注册路由\n * @default []\n */\n externals?: string[];\n /**\n * 页面目录\n * @default component\n */\n pageDir: string;\n /**\n * shineout 主题\n */\n theme?: {\n hash: string;\n };\n /**\n * reducer 文件名称\n * @default reducers\n */\n reducerName: string;\n /**\n * loading 组件路径\n */\n loading?: string;\n /**\n * 一个神奇的属性,用于处理 /xxx/order/list 这种路由过长的问题\n * 也可以用来作为父路由的默认路由目录\n * 会生成一个新路由 /xxx/order,实际目录指向为 /xxx/order/list\n * @default list\n */\n index?: string;\n /**\n * 渲染出错时的组件地址\n */\n errorComponent?: string;\n\n /**\n * 是否允许页面内生成自定义路由\n * 例如在 component/order/detail/me.json 中 配置 route: '/:id',此时会生成动态路由 /order/detail/:id\n * 非常不推荐使用的一个属性,因为此功能受 me.json 中 exact 属性影响, 仅当 exact: true 时候,才不会拼接路由\n * 当开启 dangerousRoute 后, 不再受 exact 影响, 都会生成 拼接路由 /order/detail/:id\n * @default false\n */\n dangerousRoute?: boolean;\n}\n\nexport interface MeJSON {\n theme?: string;\n sync?: boolean;\n mobx?: boolean;\n keepAlive?: boolean;\n retain?: boolean;\n title?: string;\n linkExtendable?: boolean;\n injectStore?: boolean | string;\n route?: string;\n}\n"],"mappings":""}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../types.ts"],"sourcesContent":["export interface Options {\n /**\n * 组件上下文, 默认取 compiler.context\n * @default compiler.context\n */\n context?: string;\n /**\n * 是否禁用内置路由\n * 默认会将 react-router-dom 转换到 rrc-loader-helper/router\n * 如果你是新项目,建议将该配置配置为true,因为内置路由针对react-router做了大量的改动,可能会引起一些无法预测的故障\n * @default false\n */\n disableBuiltInRoute?: boolean;\n /**\n * 是否开启 webpack prefetch预加载\n * @default false\n */\n enablePreFetch?: boolean;\n /**\n * 指定页面路径 不进行注册路由\n * @default []\n */\n externals?: string[];\n /**\n * 页面目录\n * @default component\n */\n pageDir?: string;\n /**\n * shineout 主题\n */\n theme?: {\n hash: string;\n };\n /**\n * reducer 文件名称\n * @default reducer\n */\n reducerName?: string;\n /**\n * loading 组件路径\n */\n loading?: string;\n /**\n * 一个神奇的属性,用于处理 /xxx/order/list 这种路由过长的问题\n * 也可以用来作为父路由的默认路由目录\n * 会生成一个新路由 /xxx/order,实际目录指向为 /xxx/order/list\n * @default list\n */\n index?: string;\n /**\n * 渲染出错时的组件地址\n */\n errorComponent?: string;\n\n /**\n * 是否允许页面内生成自定义路由\n * 例如在 component/order/detail/me.json 中 配置 route: '/:id',此时会生成动态路由 /order/detail/:id\n * 非常不推荐使用的一个属性,因为此功能受 me.json 中 exact 属性影响, 仅当 exact: true 时候,才不会拼接路由\n * 当开启 dangerousRoute 后, 不再受 exact 影响, 都会生成 拼接路由 /order/detail/:id\n * @default false\n */\n dangerousRoute?: boolean;\n}\n\nexport interface MeJSON {\n theme?: string;\n sync?: boolean;\n /**\n * mobx 模式\n * 未开启时, reducer 文件导出为纯函数,用来处理状态修改。 saga 文件用来处理副作用逻辑。\n * 开启后,reducer 文件导出为对象,包含 state 以及方法, 普通函数作为reducer修改状态, generator 函数处理副作用逻辑。\n * @default false\n */\n mobx?: boolean;\n keepAlive?: boolean;\n retain?: boolean;\n title?: string;\n /**\n * @description 为了兼容同一个页面多次打开 动态拓展 redux 的reducer 节点\n * @description 在路由配置中添加 /:id?,不推荐使用, 仅极少场景需要\n * @default false\n */\n linkExtendable?: boolean;\n injectStore?: boolean | string;\n route?: string;\n}\n"],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lcd-router-webpack-plugin",
3
- "version": "9.0.0-alpha.9",
3
+ "version": "9.0.0",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "files": [