babel-plugin-zova-component 1.0.1 → 1.0.3

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":"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;AASzD,MAAM,CAAC,OAAO;;EAUb"}
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;AAwBzD,MAAM,CAAC,OAAO;;EAmBb"}
package/dist/index.js CHANGED
@@ -2,34 +2,97 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = default_1;
4
4
  const core_1 = require("@babel/core");
5
- //import { parseInfoFromPath } from '@cabloy/module-info';
6
- const JSXVisitor = {
7
- JSXOpeningElement(_path) {
8
- //console.log('Visiting: ' + path.node.name);
9
- },
10
- };
5
+ const module_info_1 = require("@cabloy/module-info");
11
6
  function default_1() {
12
7
  const visitor = {
13
8
  Program(path) {
14
- // import
15
- findImports(path);
16
- // jsx
17
- path.traverse(JSXVisitor);
9
+ // context
10
+ const context = {
11
+ imports: [],
12
+ };
13
+ // traverse
14
+ path.traverse(createVisitor(context));
15
+ if (context.imports.length === 0)
16
+ return;
17
+ // insertComponents
18
+ insertComponents(path, context);
19
+ // insertImport
20
+ insertImport(path);
21
+ // removeImports
22
+ removeImports(context);
18
23
  },
19
24
  };
20
25
  return { visitor };
21
26
  }
22
- function findImports(path) {
23
- for (const node of path.node.body) {
24
- if (!core_1.types.isImportDeclaration(node) || !node.source.value.startsWith('zova-module-'))
25
- continue;
26
- for (const specifier of node.specifiers) {
27
- if (!core_1.types.isImportSpecifier(specifier) || specifier.importKind !== 'value' || !core_1.types.isIdentifier(specifier.imported)) {
28
- continue;
27
+ function createVisitor(context) {
28
+ return {
29
+ ImportDeclaration(path) {
30
+ const moduleFullName = path.node.source.value;
31
+ if (!moduleFullName.startsWith('zova-module-'))
32
+ return;
33
+ const components = [];
34
+ for (const specifier of path.node.specifiers) {
35
+ if (!core_1.types.isImportSpecifier(specifier) ||
36
+ specifier.importKind !== 'value' ||
37
+ !core_1.types.isIdentifier(specifier.imported) ||
38
+ !isZComponent(specifier.imported.name)) {
39
+ continue;
40
+ }
41
+ components.push({
42
+ importName: specifier.imported.name,
43
+ localName: specifier.local.name,
44
+ });
29
45
  }
30
- const specifierName = specifier.imported.name;
31
- console.log(specifierName);
46
+ if (components.length > 0) {
47
+ const _import = {
48
+ moduleFullName,
49
+ moduleInfo: (0, module_info_1.parseInfo)(moduleFullName),
50
+ components,
51
+ path,
52
+ };
53
+ context.imports.push(_import);
54
+ }
55
+ },
56
+ };
57
+ }
58
+ function isZComponent(name) {
59
+ return name[0] === 'Z' && isUpperCase(name[1]);
60
+ }
61
+ function isUpperCase(character) {
62
+ return /^[A-Z]$/.test(character);
63
+ }
64
+ function removeImports(context) {
65
+ for (const _import of context.imports) {
66
+ for (const component of _import.components) {
67
+ const index = _import.path.node.specifiers.findIndex(item => item.local.name === component?.localName);
68
+ _import.path.node.specifiers.splice(index, 1);
69
+ }
70
+ if (_import.path.node.specifiers.length === 0) {
71
+ _import.path.remove();
32
72
  }
33
73
  }
34
74
  }
75
+ function insertImport(path) {
76
+ const nodeImport = core_1.types.importDeclaration([core_1.types.importSpecifier(core_1.types.identifier('__z_createZovaComponent'), core_1.types.stringLiteral('createZovaComponent'))], core_1.types.stringLiteral('zova'));
77
+ path.get('body')[0].insertBefore(nodeImport);
78
+ }
79
+ function insertComponents(path, context) {
80
+ for (const _import of context.imports) {
81
+ for (const component of _import.components) {
82
+ const nodeComponent = core_1.types.variableDeclaration('const', [
83
+ core_1.types.variableDeclarator(core_1.types.identifier(component.localName), core_1.types.callExpression(core_1.types.identifier('__z_createZovaComponent'), [
84
+ core_1.types.stringLiteral(_import.moduleInfo.relativeName),
85
+ core_1.types.stringLiteral(parseRealComponentName(component.importName)),
86
+ ])),
87
+ ]);
88
+ path.get('body')[0].insertBefore(nodeComponent);
89
+ }
90
+ }
91
+ }
92
+ function parseRealComponentName(name) {
93
+ return firstCharToLowerCase(name.substring(1));
94
+ }
95
+ function firstCharToLowerCase(name) {
96
+ return name.charAt(0).toLowerCase() + name.substring(1);
97
+ }
35
98
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAUA,4BAUC;AApBD,sCAAwE;AAExE,0DAA0D;AAE1D,MAAM,UAAU,GAAG;IACjB,iBAAiB,CAAC,KAAoC;QACpD,6CAA6C;IAC/C,CAAC;CACF,CAAC;AAEF;IACE,MAAM,OAAO,GAAwB;QACnC,OAAO,CAAC,IAAyB;YAC/B,SAAS;YACT,WAAW,CAAC,IAAI,CAAC,CAAC;YAClB,MAAM;YACN,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;KACF,CAAC;IACF,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC;AAED,SAAS,WAAW,CAAC,IAAyB;IAC5C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,YAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC;YAAE,SAAS;QAC5F,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,IAAI,CAAC,YAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,UAAU,KAAK,OAAO,IAAI,CAAC,YAAC,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/G,SAAS;YACX,CAAC;YACD,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "babel-plugin-zova-component",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "babel-plugin-zova-component",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -30,9 +30,9 @@
30
30
  "author": "zhennann",
31
31
  "license": "MIT",
32
32
  "devDependencies": {
33
- "@cabloy/module-info": "^1.0.22",
33
+ "@cabloy/module-info": "^1.0.23",
34
34
  "@types/babel__core": "^7.20.5",
35
35
  "@types/babel__traverse": "^7.20.5"
36
36
  },
37
- "gitHead": "c08d7bf125ba6e68cbb90bee0c0ea2dbc7ba9148"
37
+ "gitHead": "2aa8046cc0dcb637f5ea7ef6a8916a94154c4dc5"
38
38
  }