babel-plugin-zova-bean-module 1.0.32 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,6 +1,5 @@
1
- import { type PluginPass } from '@babel/core';
1
+ import type { PluginPass } from '@babel/core';
2
2
  import type { Visitor } from '@babel/traverse';
3
3
  export default function (): {
4
4
  visitor: Visitor<PluginPass>;
5
5
  };
6
- //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,61 +1,78 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = default_1;
4
- const core_1 = require("@babel/core");
5
- const module_info_1 = require("@cabloy/module-info");
6
- const __Decorator_Supported = ['Bean', 'Local', 'Scope', 'Store', 'Data', 'Model', 'Style', 'Theme', 'Tool', 'Virtual'];
7
- function default_1() {
1
+ import { /* template, */ types as t } from '@babel/core';
2
+ import { parseInfoFromPath } from '@cabloy/module-info';
3
+ export default function () {
8
4
  const visitor = {
9
- ClassDeclaration(path, state) {
10
- let moduleName;
11
- function getModuleName() {
12
- if (moduleName)
13
- return moduleName;
14
- const sourceFileName = state.file.opts.sourceFileName || state.file.opts.filename;
15
- if (!__checkIfValid(sourceFileName))
16
- return;
17
- const moduleInfo = (0, module_info_1.parseInfoFromPath)(sourceFileName);
18
- if (!moduleInfo)
19
- return;
20
- moduleName = moduleInfo.relativeName;
21
- return moduleName;
5
+ Program(path, state) {
6
+ const beanInfo = __parseBeanInfo(state);
7
+ if (!beanInfo)
8
+ return;
9
+ // context
10
+ const context = {
11
+ needBeanInfo: false,
12
+ };
13
+ // traverse
14
+ path.traverse(createVisitor(context, beanInfo));
15
+ // insertImport
16
+ if (context.needBeanInfo) {
17
+ insertImport(path);
22
18
  }
19
+ },
20
+ };
21
+ return { visitor };
22
+ }
23
+ function createVisitor(context, beanInfo) {
24
+ return {
25
+ ClassDeclaration(path) {
23
26
  const decorators = path.node.decorators;
24
27
  if (!decorators || decorators.length === 0)
25
28
  return;
26
- for (const decorator of decorators) {
27
- if (core_1.types.isCallExpression(decorator.expression)) {
28
- const expression = decorator.expression;
29
- const decoratorName = expression.callee.name;
30
- if (__Decorator_Supported.includes(decoratorName)) {
31
- const moduleName = getModuleName();
32
- if (moduleName) {
33
- __applyDecorator(expression, moduleName);
34
- }
35
- }
36
- }
37
- }
29
+ const decoratorNode = __createDecoratorNode(beanInfo);
30
+ decorators.push(decoratorNode);
31
+ context.needBeanInfo = true;
38
32
  },
39
33
  };
40
- return { visitor };
41
34
  }
42
- function __applyDecorator(expression, moduleName) {
43
- const propertyNode = core_1.types.objectProperty(core_1.types.identifier('module'), core_1.types.stringLiteral(moduleName));
44
- const args = expression.arguments;
45
- if (args.length === 0) {
46
- const objectExpression = core_1.types.objectExpression([propertyNode]);
47
- args.push(objectExpression);
48
- }
49
- else {
50
- const objectExpression = args[0];
51
- objectExpression.properties.push(propertyNode);
52
- }
35
+ function insertImport(path) {
36
+ const nodeImport = t.importDeclaration([t.importSpecifier(t.identifier('__z_BeanInfo'), t.stringLiteral('BeanInfo'))], t.stringLiteral('zova'));
37
+ path.get('body')[0].insertBefore(nodeImport);
38
+ }
39
+ function __parseBeanInfo(state) {
40
+ const sourceFileName = state.file.opts.sourceFileName || state.file.opts.filename || '';
41
+ const moduleName = __getModuleName(sourceFileName);
42
+ if (!moduleName)
43
+ return;
44
+ return { module: moduleName };
45
+ }
46
+ function __getModuleName(sourceFileName) {
47
+ if (!__checkIfValid(sourceFileName))
48
+ return;
49
+ const moduleInfo = parseInfoFromPath(sourceFileName);
50
+ if (!moduleInfo)
51
+ return;
52
+ return moduleInfo.relativeName;
53
+ }
54
+ function __createDecoratorNode(beanInfo) {
55
+ const propertyNodeModule = t.objectProperty(t.identifier('module'), t.stringLiteral(beanInfo.module));
56
+ const objectExpression = t.objectExpression([propertyNodeModule]);
57
+ const callExpression = t.callExpression(t.identifier('__z_BeanInfo'), [objectExpression]);
58
+ const decoratorNode = t.decorator(callExpression);
59
+ return decoratorNode;
53
60
  }
61
+ // function __applyDecorator(expression: t.CallExpression, moduleName: string) {
62
+ // const propertyNode = t.objectProperty(t.identifier('module'), t.stringLiteral(moduleName));
63
+ // const args = expression.arguments;
64
+ // if (args.length === 0) {
65
+ // const objectExpression = t.objectExpression([propertyNode]);
66
+ // args.push(objectExpression);
67
+ // } else {
68
+ // const objectExpression = args[0] as t.ObjectExpression;
69
+ // objectExpression.properties.push(propertyNode);
70
+ // }
71
+ // }
54
72
  function __checkIfValid(fileName) {
55
73
  if (!fileName)
56
74
  return false;
57
75
  return !['src/boot/app/', '.zova/app/'].some(item => {
58
- return fileName.indexOf(item) > -1;
76
+ return fileName.includes(item);
59
77
  });
60
78
  }
61
- //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,38 +1,35 @@
1
1
  {
2
2
  "name": "babel-plugin-zova-bean-module",
3
- "version": "1.0.32",
3
+ "type": "module",
4
+ "version": "1.1.0",
4
5
  "description": "babel-plugin-zova-bean-module",
5
6
  "publishConfig": {
6
7
  "access": "public"
7
8
  },
9
+ "author": "zhennann",
10
+ "license": "MIT",
11
+ "keywords": [
12
+ "egg",
13
+ "egg-born",
14
+ "framework",
15
+ "zova"
16
+ ],
8
17
  "exports": {
9
18
  ".": {
10
- "types": "./dist/index.d.ts",
19
+ "types": [
20
+ "./src/index.ts",
21
+ "./dist/index.d.ts"
22
+ ],
11
23
  "default": "./dist/index.js"
12
24
  },
13
- "./*": "./*"
25
+ "./package.json": "./package.json"
14
26
  },
15
27
  "files": [
16
28
  "dist"
17
29
  ],
18
- "scripts": {
19
- "lint": "eslint .",
20
- "clean": "tsc -b --clean",
21
- "tsc:publish": "npm run clean && tsc -b",
22
- "prepublishOnly": "npm run tsc:publish"
23
- },
24
- "keywords": [
25
- "egg",
26
- "egg-born",
27
- "framework",
28
- "zova"
29
- ],
30
- "author": "zhennann",
31
- "license": "MIT",
32
- "devDependencies": {
33
- "@cabloy/module-info": "^1.0.23",
34
- "@types/babel__core": "^7.20.5",
35
- "@types/babel__traverse": "^7.20.5"
30
+ "dependencies": {
31
+ "@cabloy/module-info": "^1.3.0",
32
+ "@cabloy/word-utils": "^2.0.0"
36
33
  },
37
- "gitHead": "2aa8046cc0dcb637f5ea7ef6a8916a94154c4dc5"
34
+ "gitHead": "19504afb5d86e9c8a3ab865099813a2cef2493bb"
38
35
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,KAAK,EAAY,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAKzD,MAAM,CAAC,OAAO;;EA8Bb"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAMA,4BA8BC;AApCD,sCAAwE;AAExE,qDAAwD;AAExD,MAAM,qBAAqB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAExH;IACE,MAAM,OAAO,GAAwB;QACnC,gBAAgB,CAAC,IAAkC,EAAE,KAAK;YACxD,IAAI,UAA8B,CAAC;YACnC,SAAS,aAAa;gBACpB,IAAI,UAAU;oBAAE,OAAO,UAAU,CAAC;gBAClC,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAClF,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC;oBAAE,OAAO;gBAC5C,MAAM,UAAU,GAAG,IAAA,+BAAiB,EAAC,cAAc,CAAC,CAAC;gBACrD,IAAI,CAAC,UAAU;oBAAE,OAAO;gBACxB,UAAU,GAAG,UAAU,CAAC,YAAY,CAAC;gBACrC,OAAO,UAAU,CAAC;YACpB,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YACxC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YACnD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,IAAI,YAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC7C,MAAM,UAAU,GAAqB,SAAS,CAAC,UAAU,CAAC;oBAC1D,MAAM,aAAa,GAAS,UAAU,CAAC,MAAO,CAAC,IAAI,CAAC;oBACpD,IAAI,qBAAqB,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;wBAClD,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;wBACnC,IAAI,UAAU,EAAE,CAAC;4BACf,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;wBAC3C,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAC;IACF,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC;AAED,SAAS,gBAAgB,CAAC,UAA4B,EAAE,UAAkB;IACxE,MAAM,YAAY,GAAG,YAAC,CAAC,cAAc,CAAC,YAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,YAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3F,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC;IAClC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,gBAAgB,GAAG,YAAC,CAAC,gBAAgB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,MAAM,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAuB,CAAC;QACvD,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,QAAwB;IAC9C,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,OAAO,CAAC,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAClD,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC"}