lcd-router-webpack-plugin 9.1.5-alpha.0 → 9.2.1-alpha.1

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.
@@ -4,12 +4,13 @@ interface GetReducersBabelPluginItem {
4
4
  meJSON: MeJSON;
5
5
  namespace: string;
6
6
  isExternal: boolean;
7
- meJSONPath: string;
7
+ reducerPath: string;
8
8
  }
9
9
  export declare class ReducersGenerator extends Generator<GetReducersBabelPluginItem> {
10
10
  constructor();
11
11
  objectPropertyValue(type: 'call' | 'string' | 'identifier', value: string): any;
12
12
  writeCodeToFile(absPath: string): void;
13
+ private generateDefaultReducerFn;
13
14
  }
14
15
  export {};
15
16
  //# sourceMappingURL=ReducersGenerator.d.ts.map
@@ -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;IAY/E,eAAe,CAAC,OAAO,EAAE,MAAM;CA0ChC"}
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,WAAW,EAAE,MAAM,CAAC;CACrB;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;IAiD/B,OAAO,CAAC,wBAAwB;CAYjC"}
@@ -38,7 +38,13 @@ class ReducersGenerator extends _Generator.Generator {
38
38
  const codes = [this.importDefaultDeclaration('decorate', 'rrc-loader-helper/lib/reducer-decorate')];
39
39
  items.filter(x => x.meJSON.sync || x.isExternal)
40
40
  // 创建一个 import 语句,从 me.json 中导入 reducer 函数
41
- .map(x => this.importNamedDeclaration([['reducer', x.namespace]], x.meJSONPath)).forEach(x => codes.push(x));
41
+ .map(x => {
42
+ if (x.reducerPath) {
43
+ return this.importDefaultDeclaration(x.namespace, x.reducerPath);
44
+ } else {
45
+ return this.generateDefaultReducerFn(x.namespace);
46
+ }
47
+ }).forEach(x => codes.push(x));
42
48
  const properties = items.map(x => {
43
49
  if (x.isExternal || x.meJSON.sync) {
44
50
  if (x.meJSON.mobx) {
@@ -60,6 +66,21 @@ class ReducersGenerator extends _Generator.Generator {
60
66
  encoding: 'utf8'
61
67
  });
62
68
  }
69
+ generateDefaultReducerFn(functionName) {
70
+ const functionBody = _core.types.blockStatement([_core.types.returnStatement(_core.types.objectExpression([])) // 返回一个空对象
71
+ ]);
72
+
73
+ return _core.types.functionDeclaration(_core.types.identifier(this.identifierString(functionName)),
74
+ // 函数名
75
+ [],
76
+ // 参数列表
77
+ functionBody,
78
+ // 函数体
79
+ false,
80
+ // generator 标志
81
+ false // async 标志
82
+ );
83
+ }
63
84
  }
64
85
  exports.ReducersGenerator = ReducersGenerator;
65
86
  //# sourceMappingURL=ReducersGenerator.js.map
@@ -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","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
+ {"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","reducerPath","namespace","generateDefaultReducerFn","forEach","push","properties","mobx","objectProperty","exportDefaultDeclaration","objectExpression","pushContainer","fs","writeFileSync","encoding","functionName","functionBody","blockStatement","returnStatement","functionDeclaration","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 reducerPath: 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) => {\n if (x.reducerPath) {\n return this.importDefaultDeclaration(x.namespace, x.reducerPath);\n } else {\n return this.generateDefaultReducerFn(x.namespace);\n }\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(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 private generateDefaultReducerFn(functionName: string) {\n const functionBody = types.blockStatement([\n types.returnStatement(types.objectExpression([])), // 返回一个空对象\n ]);\n return types.functionDeclaration(\n types.identifier(this.identifierString(functionName)), // 函数名\n [], // 参数列表\n functionBody, // 函数体\n false, // generator 标志\n false, // async 标志\n );\n }\n}\n"],"mappings":"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"}
@@ -2,7 +2,8 @@ import { Generator } from './Generator';
2
2
  import type { MeJSON } from './utils';
3
3
  interface Item {
4
4
  namespace: string;
5
- meJSONPath: string;
5
+ sagaPath: string;
6
+ reducerPath: string;
6
7
  isExternal: boolean;
7
8
  meJSON: MeJSON;
8
9
  }
@@ -11,6 +12,7 @@ export declare class SagasGenerator extends Generator<Item> {
11
12
  private setCtxExpressionStatement;
12
13
  private callExpressionStatement;
13
14
  writeCodeToFile(absPath: string): void;
15
+ private generateDefaultSagaFn;
14
16
  }
15
17
  export {};
16
18
  //# sourceMappingURL=SagasGenerator.d.ts.map
@@ -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;IAU/B,eAAe,CAAC,OAAO,EAAE,MAAM;CA+ChC"}
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;IAElB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,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;IAsD/B,OAAO,CAAC,qBAAqB;CAY9B"}
@@ -27,9 +27,16 @@ class SagasGenerator extends _Generator.Generator {
27
27
  Program: {
28
28
  enter: path => {
29
29
  const ast = [this.importNamedDeclaration(['setCtx'], 'rrc-loader-helper/lib/retain'), this.importNamedDeclaration(['call'], 'rrc-loader-helper/lib/sagas/redux-saga/effects')];
30
- items.filter(x => x.meJSON.sync || x.isExternal).forEach(x =>
31
- // 如果是mobx reducer, 否则取 saga
32
- ast.push(this.importNamedDeclaration([[x.meJSON.mobx ? 'reducer' : 'saga', x.namespace]], x.meJSONPath)));
30
+ items.filter(x => x.meJSON.sync || x.isExternal).forEach(x => {
31
+ // 如果不是 mobx,并且 saga 文件不存在,手动补一个 saga 函数
32
+ if (!x.meJSON.mobx && !x.sagaPath) {
33
+ console.log('x.namespace', x.namespace);
34
+ ast.push(this.generateDefaultSagaFn(x.namespace));
35
+ } else {
36
+ // 如果是mobx, 取 reducer, 否则取 saga
37
+ ast.push(this.importDefaultDeclaration(x.namespace, x.meJSON.mobx ? x.reducerPath : x.sagaPath));
38
+ }
39
+ });
33
40
  const arrayItem = items.map(x => {
34
41
  if (!x.isExternal && !x.meJSON.sync) {
35
42
  return _core.types.stringLiteral('');
@@ -51,6 +58,21 @@ class SagasGenerator extends _Generator.Generator {
51
58
  encoding: 'utf8'
52
59
  });
53
60
  }
61
+ generateDefaultSagaFn(functionName) {
62
+ const functionBody = _core.types.blockStatement([_core.types.returnStatement(_core.types.objectExpression([])) // 返回一个空对象
63
+ ]);
64
+
65
+ return _core.types.functionDeclaration(_core.types.identifier(this.identifierString(functionName)),
66
+ // 函数名
67
+ [],
68
+ // 参数列表
69
+ functionBody,
70
+ // 函数体
71
+ true,
72
+ // generator 标志
73
+ false // async 标志
74
+ );
75
+ }
54
76
  }
55
77
  exports.SagasGenerator = SagasGenerator;
56
78
  //# sourceMappingURL=SagasGenerator.js.map
@@ -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(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":"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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","mobx","sagaPath","console","log","push","generateDefaultSagaFn","importDefaultDeclaration","reducerPath","arrayItem","map","functionExpression","blockStatement","exportDefaultDeclaration","arrayExpression","pushContainer","fs","writeFileSync","encoding","functionName","functionBody","returnStatement","functionDeclaration","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 sagaPath: string;\n reducerPath: 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,并且 saga 文件不存在,手动补一个 saga 函数\n if (!x.meJSON.mobx && !x.sagaPath) {\n console.log('x.namespace', x.namespace);\n ast.push(this.generateDefaultSagaFn(x.namespace));\n } else {\n // 如果是mobx, 取 reducer, 否则取 saga\n ast.push(this.importDefaultDeclaration(x.namespace, x.meJSON.mobx ? x.reducerPath : x.sagaPath));\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([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 private generateDefaultSagaFn(functionName: string) {\n const functionBody = types.blockStatement([\n types.returnStatement(types.objectExpression([])), // 返回一个空对象\n ]);\n return types.functionDeclaration(\n types.identifier(this.identifierString(functionName)), // 函数名\n [], // 参数列表\n functionBody, // 函数体\n true, // generator 标志\n false, // async 标志\n );\n }\n}\n"],"mappings":"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"}
package/lib/index.js CHANGED
@@ -46,8 +46,9 @@ class LcdRouterWebpackPlugin {
46
46
  const isExternal = options.externals?.some?.(x => x === _nodePath.default.dirname(filepath)) ?? false;
47
47
  const chunkCode = [];
48
48
  const meJSON = fileService.readJSONSync(absFilePath);
49
+ let reducerPath = '';
49
50
  try {
50
- const reducerPath = resolver.getReducerFile(absCurrentDir);
51
+ reducerPath = resolver.getReducerFile(absCurrentDir);
51
52
  chunkCode.push(`export { default as reducer } from '${reducerPath}';`);
52
53
  } catch (e) {
53
54
  // feat: reducers 可以不存在, 方便结合reactive 和 ak,默认创建一个reducers
@@ -75,9 +76,10 @@ class LcdRouterWebpackPlugin {
75
76
  if (meJSON.theme && !options.theme?.hash) {
76
77
  throw Error(`开启页面级主题之前,请优先开启全局主题 ${absFilePath}`);
77
78
  }
79
+ let sagaPath = '';
78
80
  if (!meJSON.mobx) {
79
81
  try {
80
- const sagaPath = resolver.getSagaFile(absCurrentDir);
82
+ sagaPath = resolver.getSagaFile(absCurrentDir);
81
83
  chunkCode.push(`export { default as saga } from '${sagaPath}';`);
82
84
  } catch (e) {
83
85
  // feat: saga 也可以不存在, 方便结合reactive 和 ak,默认创建一个reducers
@@ -113,7 +115,7 @@ class LcdRouterWebpackPlugin {
113
115
  meJSON,
114
116
  isExternal,
115
117
  namespace: currentDir,
116
- meJSONPath: meJSONPath
118
+ reducerPath
117
119
  });
118
120
 
119
121
  /** saga.js */
@@ -121,7 +123,9 @@ class LcdRouterWebpackPlugin {
121
123
  meJSON,
122
124
  isExternal,
123
125
  namespace: currentDir,
124
- meJSONPath: meJSONPath
126
+ // meJSONPath: meJSONPath,
127
+ reducerPath,
128
+ sagaPath
125
129
  });
126
130
 
127
131
  /** router */
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","isExternal","externals","some","x","chunkCode","meJSON","readJSONSync","reducerPath","getReducerFile","push","e","mobx","Error","viewPath","getViewFile","theme","hash","sagaPath","getSagaFile","errorComponent","errorCompPath","getErrorComFile","themePath","getThemeJSCacheFileAbs","writeThemeFile","meJSONPath","getMeJSONCacheFileAbs","writeMeJSONFile","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","disableBabelLoaderRule","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 const isExternal = options.externals?.some?.((x) => x === path.dirname(filepath)) ?? false;\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 if(!isExternal){\n const viewPath = resolver.getViewFile(absCurrentDir);\n chunkCode.push(`export { default as view } from '${viewPath}';`);\n }\n\n \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 \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(currentDir)) {\n const _key = currentDir.replace(new RegExp(`\\/${options.index}$`), '');\n routersGenerator.set(_key, {\n meJSON,\n isExternal,\n page: currentDir,\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 if(this.options.disableBabelLoaderRule) return\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
+ {"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","isExternal","externals","some","x","chunkCode","meJSON","readJSONSync","reducerPath","getReducerFile","push","e","mobx","Error","viewPath","getViewFile","theme","hash","sagaPath","getSagaFile","errorComponent","errorCompPath","getErrorComFile","themePath","getThemeJSCacheFileAbs","writeThemeFile","meJSONPath","getMeJSONCacheFileAbs","writeMeJSONFile","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","disableBabelLoaderRule","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 const isExternal = options.externals?.some?.((x) => x === path.dirname(filepath)) ?? false;\n const chunkCode = [] as string[];\n const meJSON = fileService.readJSONSync(absFilePath);\n let reducerPath = '';\n try {\n 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 if (!isExternal) {\n const viewPath = resolver.getViewFile(absCurrentDir);\n chunkCode.push(`export { default as view } from '${viewPath}';`);\n }\n\n if (meJSON.theme && !options.theme?.hash) {\n throw Error(`开启页面级主题之前,请优先开启全局主题 ${absFilePath}`);\n }\n\n let sagaPath = '';\n if (!meJSON.mobx) {\n try {\n 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 // 处理是否存在多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 reducerPath,\n });\n\n /** saga.js */\n sagasGenerator.set(currentDir, {\n meJSON,\n isExternal,\n namespace: currentDir,\n // meJSONPath: meJSONPath,\n reducerPath,\n sagaPath,\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(currentDir)) {\n const _key = currentDir.replace(new RegExp(`\\/${options.index}$`), '');\n routersGenerator.set(_key, {\n meJSON,\n isExternal,\n page: currentDir,\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 if (this.options.disableBabelLoaderRule) return;\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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lcd-router-webpack-plugin",
3
- "version": "9.1.5-alpha.0",
3
+ "version": "9.2.1-alpha.1",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "files": [