@eventra_dev/eventra-cli 0.0.13 → 0.0.14
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/utils/config.js +1 -0
- package/dist/utils/extract.js +78 -14
- package/package.json +1 -1
- package/src/utils/config.ts +1 -0
- package/src/utils/extract.ts +114 -44
package/dist/utils/config.js
CHANGED
|
@@ -16,6 +16,7 @@ function normalizeConfig(config) {
|
|
|
16
16
|
events: config.events ?? [],
|
|
17
17
|
wrappers: config.wrappers ?? [],
|
|
18
18
|
functionWrappers: config.functionWrappers ?? [],
|
|
19
|
+
aliases: config.aliases ?? {},
|
|
19
20
|
sync: config.sync ?? {
|
|
20
21
|
include: [
|
|
21
22
|
"**/*.{ts,tsx,js,jsx,vue,svelte,astro}"
|
package/dist/utils/extract.js
CHANGED
|
@@ -15,28 +15,92 @@ function extractExpression(expr) {
|
|
|
15
15
|
ts_morph_1.SyntaxKind.NoSubstitutionTemplateLiteral) {
|
|
16
16
|
return {
|
|
17
17
|
values: [
|
|
18
|
-
expr
|
|
19
|
-
.getText()
|
|
20
|
-
.replace(/`/g, "")
|
|
18
|
+
expr.getText().replace(/`/g, "")
|
|
21
19
|
],
|
|
22
20
|
dynamic: false
|
|
23
21
|
};
|
|
24
22
|
}
|
|
25
|
-
// identifier
|
|
23
|
+
// identifier (TEST)
|
|
26
24
|
if (ts_morph_1.Node.isIdentifier(expr)) {
|
|
25
|
+
const name = expr.getText();
|
|
26
|
+
const defs = "getDefinitions" in expr
|
|
27
|
+
? expr.getDefinitions()
|
|
28
|
+
: [];
|
|
29
|
+
if (defs && defs.length > 0) {
|
|
30
|
+
const decl = defs[0]?.getDeclarationNode();
|
|
31
|
+
if (decl && ts_morph_1.Node.isVariableDeclaration(decl)) {
|
|
32
|
+
const initializer = decl.getInitializer();
|
|
33
|
+
// const TEST = "event"
|
|
34
|
+
if (initializer &&
|
|
35
|
+
ts_morph_1.Node.isStringLiteral(initializer)) {
|
|
36
|
+
return {
|
|
37
|
+
values: [initializer.getLiteralText()],
|
|
38
|
+
dynamic: false
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
// const TEST = `event`
|
|
42
|
+
if (initializer &&
|
|
43
|
+
initializer.getKind() ===
|
|
44
|
+
ts_morph_1.SyntaxKind.NoSubstitutionTemplateLiteral) {
|
|
45
|
+
return {
|
|
46
|
+
values: [
|
|
47
|
+
initializer.getText().replace(/`/g, "")
|
|
48
|
+
],
|
|
49
|
+
dynamic: false
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
27
54
|
return {
|
|
28
|
-
values: [
|
|
55
|
+
values: [name],
|
|
29
56
|
dynamic: true
|
|
30
57
|
};
|
|
31
58
|
}
|
|
32
|
-
// property access (
|
|
59
|
+
// property access (EVENTS.CLICK)
|
|
33
60
|
if (ts_morph_1.Node.isPropertyAccessExpression(expr)) {
|
|
61
|
+
const fullName = expr.getText(); // EVENTS.CLICK
|
|
62
|
+
const propName = expr.getName(); // CLICK
|
|
63
|
+
const defs = "getDefinitions" in expr
|
|
64
|
+
? expr.getDefinitions()
|
|
65
|
+
: [];
|
|
66
|
+
if (defs && defs.length > 0) {
|
|
67
|
+
const decl = defs[0]?.getDeclarationNode();
|
|
68
|
+
// const EVENTS = { CLICK: "event" }
|
|
69
|
+
if (decl && ts_morph_1.Node.isVariableDeclaration(decl)) {
|
|
70
|
+
const init = decl.getInitializer();
|
|
71
|
+
if (init && ts_morph_1.Node.isObjectLiteralExpression(init)) {
|
|
72
|
+
const prop = init.getProperty(propName);
|
|
73
|
+
if (prop &&
|
|
74
|
+
ts_morph_1.Node.isPropertyAssignment(prop)) {
|
|
75
|
+
const value = prop.getInitializer();
|
|
76
|
+
if (value &&
|
|
77
|
+
ts_morph_1.Node.isStringLiteral(value)) {
|
|
78
|
+
return {
|
|
79
|
+
values: [value.getLiteralText()],
|
|
80
|
+
dynamic: false
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// fallback
|
|
87
|
+
if (decl && ts_morph_1.Node.isPropertyAssignment(decl)) {
|
|
88
|
+
const initializer = decl.getInitializer();
|
|
89
|
+
if (initializer &&
|
|
90
|
+
ts_morph_1.Node.isStringLiteral(initializer)) {
|
|
91
|
+
return {
|
|
92
|
+
values: [initializer.getLiteralText()],
|
|
93
|
+
dynamic: false
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
34
98
|
return {
|
|
35
|
-
values: [
|
|
99
|
+
values: [fullName],
|
|
36
100
|
dynamic: true
|
|
37
101
|
};
|
|
38
102
|
}
|
|
39
|
-
// ternary
|
|
103
|
+
// ternary (a ? b : c)
|
|
40
104
|
if (ts_morph_1.Node.isConditionalExpression(expr)) {
|
|
41
105
|
const values = [];
|
|
42
106
|
const whenTrue = extractExpression(expr.getWhenTrue());
|
|
@@ -50,20 +114,20 @@ function extractExpression(expr) {
|
|
|
50
114
|
dynamic: true
|
|
51
115
|
};
|
|
52
116
|
}
|
|
53
|
-
// template
|
|
117
|
+
// template `${}`
|
|
54
118
|
if (ts_morph_1.Node.isTemplateExpression(expr)) {
|
|
55
119
|
return {
|
|
56
|
-
values: [
|
|
120
|
+
values: [
|
|
121
|
+
expr.getText().replace(/`/g, "")
|
|
122
|
+
],
|
|
57
123
|
dynamic: true
|
|
58
124
|
};
|
|
59
125
|
}
|
|
60
|
-
// call
|
|
126
|
+
// call (fn())
|
|
61
127
|
if (ts_morph_1.Node.isCallExpression(expr)) {
|
|
62
128
|
return {
|
|
63
129
|
values: [
|
|
64
|
-
expr
|
|
65
|
-
.getExpression()
|
|
66
|
-
.getText()
|
|
130
|
+
expr.getExpression().getText()
|
|
67
131
|
],
|
|
68
132
|
dynamic: true
|
|
69
133
|
};
|
package/package.json
CHANGED
package/src/utils/config.ts
CHANGED
package/src/utils/extract.ts
CHANGED
|
@@ -27,59 +27,133 @@ export function extractExpression(
|
|
|
27
27
|
) {
|
|
28
28
|
return {
|
|
29
29
|
values: [
|
|
30
|
-
expr
|
|
31
|
-
.getText()
|
|
32
|
-
.replace(/`/g, "")
|
|
30
|
+
expr.getText().replace(/`/g, "")
|
|
33
31
|
],
|
|
34
32
|
dynamic: false
|
|
35
33
|
};
|
|
36
34
|
}
|
|
37
35
|
|
|
38
|
-
// identifier
|
|
39
|
-
if (
|
|
40
|
-
|
|
41
|
-
|
|
36
|
+
// identifier (TEST)
|
|
37
|
+
if (Node.isIdentifier(expr)) {
|
|
38
|
+
const name = expr.getText();
|
|
39
|
+
|
|
40
|
+
const defs =
|
|
41
|
+
"getDefinitions" in expr
|
|
42
|
+
? (expr as any).getDefinitions()
|
|
43
|
+
: [];
|
|
44
|
+
|
|
45
|
+
if (defs && defs.length > 0) {
|
|
46
|
+
const decl = defs[0]?.getDeclarationNode();
|
|
47
|
+
|
|
48
|
+
if (decl && Node.isVariableDeclaration(decl)) {
|
|
49
|
+
const initializer = decl.getInitializer();
|
|
50
|
+
|
|
51
|
+
// const TEST = "event"
|
|
52
|
+
if (
|
|
53
|
+
initializer &&
|
|
54
|
+
Node.isStringLiteral(initializer)
|
|
55
|
+
) {
|
|
56
|
+
return {
|
|
57
|
+
values: [initializer.getLiteralText()],
|
|
58
|
+
dynamic: false
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// const TEST = `event`
|
|
63
|
+
if (
|
|
64
|
+
initializer &&
|
|
65
|
+
initializer.getKind() ===
|
|
66
|
+
SyntaxKind.NoSubstitutionTemplateLiteral
|
|
67
|
+
) {
|
|
68
|
+
return {
|
|
69
|
+
values: [
|
|
70
|
+
initializer.getText().replace(/`/g, "")
|
|
71
|
+
],
|
|
72
|
+
dynamic: false
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
42
78
|
return {
|
|
43
|
-
values: [
|
|
79
|
+
values: [name],
|
|
44
80
|
dynamic: true
|
|
45
81
|
};
|
|
46
82
|
}
|
|
47
83
|
|
|
48
|
-
// property access (
|
|
49
|
-
if (
|
|
50
|
-
|
|
51
|
-
|
|
84
|
+
// property access (EVENTS.CLICK)
|
|
85
|
+
if (Node.isPropertyAccessExpression(expr)) {
|
|
86
|
+
const fullName = expr.getText(); // EVENTS.CLICK
|
|
87
|
+
const propName = expr.getName(); // CLICK
|
|
88
|
+
|
|
89
|
+
const defs =
|
|
90
|
+
"getDefinitions" in expr
|
|
91
|
+
? (expr as any).getDefinitions()
|
|
92
|
+
: [];
|
|
93
|
+
|
|
94
|
+
if (defs && defs.length > 0) {
|
|
95
|
+
const decl = defs[0]?.getDeclarationNode();
|
|
96
|
+
|
|
97
|
+
// const EVENTS = { CLICK: "event" }
|
|
98
|
+
if (decl && Node.isVariableDeclaration(decl)) {
|
|
99
|
+
const init = decl.getInitializer();
|
|
100
|
+
|
|
101
|
+
if (init && Node.isObjectLiteralExpression(init)) {
|
|
102
|
+
const prop = init.getProperty(propName);
|
|
103
|
+
|
|
104
|
+
if (
|
|
105
|
+
prop &&
|
|
106
|
+
Node.isPropertyAssignment(prop)
|
|
107
|
+
) {
|
|
108
|
+
const value = prop.getInitializer();
|
|
109
|
+
|
|
110
|
+
if (
|
|
111
|
+
value &&
|
|
112
|
+
Node.isStringLiteral(value)
|
|
113
|
+
) {
|
|
114
|
+
return {
|
|
115
|
+
values: [value.getLiteralText()],
|
|
116
|
+
dynamic: false
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// fallback
|
|
124
|
+
if (decl && Node.isPropertyAssignment(decl)) {
|
|
125
|
+
const initializer = decl.getInitializer();
|
|
126
|
+
|
|
127
|
+
if (
|
|
128
|
+
initializer &&
|
|
129
|
+
Node.isStringLiteral(initializer)
|
|
130
|
+
) {
|
|
131
|
+
return {
|
|
132
|
+
values: [initializer.getLiteralText()],
|
|
133
|
+
dynamic: false
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
52
139
|
return {
|
|
53
|
-
values: [
|
|
140
|
+
values: [fullName],
|
|
54
141
|
dynamic: true
|
|
55
142
|
};
|
|
56
143
|
}
|
|
57
144
|
|
|
58
|
-
// ternary
|
|
59
|
-
if (
|
|
60
|
-
Node.isConditionalExpression(expr)
|
|
61
|
-
) {
|
|
145
|
+
// ternary (a ? b : c)
|
|
146
|
+
if (Node.isConditionalExpression(expr)) {
|
|
62
147
|
const values: string[] = [];
|
|
63
148
|
|
|
64
149
|
const whenTrue =
|
|
65
|
-
extractExpression(
|
|
66
|
-
expr.getWhenTrue()
|
|
67
|
-
);
|
|
150
|
+
extractExpression(expr.getWhenTrue());
|
|
68
151
|
|
|
69
152
|
const whenFalse =
|
|
70
|
-
extractExpression(
|
|
71
|
-
expr.getWhenFalse()
|
|
72
|
-
);
|
|
153
|
+
extractExpression(expr.getWhenFalse());
|
|
73
154
|
|
|
74
|
-
if (whenTrue)
|
|
75
|
-
|
|
76
|
-
...whenTrue.values
|
|
77
|
-
);
|
|
78
|
-
|
|
79
|
-
if (whenFalse)
|
|
80
|
-
values.push(
|
|
81
|
-
...whenFalse.values
|
|
82
|
-
);
|
|
155
|
+
if (whenTrue) values.push(...whenTrue.values);
|
|
156
|
+
if (whenFalse) values.push(...whenFalse.values);
|
|
83
157
|
|
|
84
158
|
return {
|
|
85
159
|
values,
|
|
@@ -87,25 +161,21 @@ export function extractExpression(
|
|
|
87
161
|
};
|
|
88
162
|
}
|
|
89
163
|
|
|
90
|
-
// template
|
|
91
|
-
if (
|
|
92
|
-
Node.isTemplateExpression(expr)
|
|
93
|
-
) {
|
|
164
|
+
// template `${}`
|
|
165
|
+
if (Node.isTemplateExpression(expr)) {
|
|
94
166
|
return {
|
|
95
|
-
values: [
|
|
167
|
+
values: [
|
|
168
|
+
expr.getText().replace(/`/g, "")
|
|
169
|
+
],
|
|
96
170
|
dynamic: true
|
|
97
171
|
};
|
|
98
172
|
}
|
|
99
173
|
|
|
100
|
-
// call
|
|
101
|
-
if (
|
|
102
|
-
Node.isCallExpression(expr)
|
|
103
|
-
) {
|
|
174
|
+
// call (fn())
|
|
175
|
+
if (Node.isCallExpression(expr)) {
|
|
104
176
|
return {
|
|
105
177
|
values: [
|
|
106
|
-
expr
|
|
107
|
-
.getExpression()
|
|
108
|
-
.getText()
|
|
178
|
+
expr.getExpression().getText()
|
|
109
179
|
],
|
|
110
180
|
dynamic: true
|
|
111
181
|
};
|