@plexcord-companion/webpack-chunk-parser 2.0.2 → 2.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.
|
@@ -5,7 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { isArrowFunction, isCallExpression, isElementAccessExpression, isIdentifier, isNumericLiteral, isObjectLiteralExpression, isPropertyAccessExpression, isPropertyAssignment, isStringLiteralLike, isVariableDeclaration } from "typescript";
|
|
8
|
-
import { findParent, isAssignmentExpression, isBinaryPlusExpression,
|
|
8
|
+
import { findParent, isAssignmentExpression, isBinaryPlusExpression, lastChild, nonNull, tryParseStringOrNumberLiteral } from "@plexcord-companion/ast-parser/util";
|
|
9
9
|
import { Cache, CacheGetter } from "@plexcord-companion/shared/decorators";
|
|
10
10
|
import { WebpackChunkParser } from "./WebpackChunkParser.js";
|
|
11
11
|
const BUILD_MODULE_REGEX = /Trying to open a changelog for an invalid build number/;
|
|
@@ -45,7 +45,7 @@ export class WebpackMainChunkParser extends WebpackChunkParser {
|
|
|
45
45
|
continue;
|
|
46
46
|
}
|
|
47
47
|
const maybeAssign = parent.parent;
|
|
48
|
-
if (!isAssignmentExpression(maybeAssign) || !
|
|
48
|
+
if (!isAssignmentExpression(maybeAssign) || !isArrowFunction(maybeAssign.right)) {
|
|
49
49
|
continue;
|
|
50
50
|
}
|
|
51
51
|
uFunc = maybeAssign.right;
|
|
@@ -53,9 +53,6 @@ export class WebpackMainChunkParser extends WebpackChunkParser {
|
|
|
53
53
|
}
|
|
54
54
|
return [];
|
|
55
55
|
}
|
|
56
|
-
if (!isArrowFunction(uFunc)) {
|
|
57
|
-
return [];
|
|
58
|
-
}
|
|
59
56
|
const { body: ret } = uFunc;
|
|
60
57
|
// expect body to be BinExp>[BinExp>["" + {id:hash}[id]] + ".js"]
|
|
61
58
|
if (!isBinaryPlusExpression(ret)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebpackMainChunkParser.js","sourceRoot":"","sources":["../src/WebpackMainChunkParser.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"WebpackMainChunkParser.js","sourceRoot":"","sources":["../src/WebpackMainChunkParser.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plexcord-companion/webpack-chunk-parser",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "MutanPlex",
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
"keywords": [],
|
|
15
15
|
"license": "LGPL-3.0-or-later",
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@plexcord-companion/
|
|
18
|
-
"@plexcord-companion/
|
|
17
|
+
"@plexcord-companion/shared": "2.1.0",
|
|
18
|
+
"@plexcord-companion/ast-parser": "2.1.0"
|
|
19
19
|
},
|
|
20
20
|
"peerDependencies": {
|
|
21
21
|
"ts-api-utils": "^2.1.0",
|
|
@@ -1,227 +1,222 @@
|
|
|
1
|
-
import type { VariableInfo } from "ts-api-utils";
|
|
2
|
-
import { type Expression, isArrowFunction, isCallExpression, isElementAccessExpression, isIdentifier, isNumericLiteral, isObjectLiteralExpression, isPropertyAccessExpression, isPropertyAssignment, isStringLiteralLike, isVariableDeclaration, type ObjectLiteralElementLike, type ObjectLiteralExpression, type PropertyName } from "typescript";
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
return wpModulesDecl;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
1
|
+
import type { VariableInfo } from "ts-api-utils";
|
|
2
|
+
import { type ArrowFunction, type Expression, isArrowFunction, isCallExpression, isElementAccessExpression, isIdentifier, isNumericLiteral, isObjectLiteralExpression, isPropertyAccessExpression, isPropertyAssignment, isStringLiteralLike, isVariableDeclaration, type ObjectLiteralElementLike, type ObjectLiteralExpression, type PropertyName } from "typescript";
|
|
3
|
+
|
|
4
|
+
import { findParent, isAssignmentExpression, isBinaryPlusExpression, lastChild, nonNull, tryParseStringOrNumberLiteral } from "@plexcord-companion/ast-parser/util";
|
|
5
|
+
import { Cache, CacheGetter } from "@plexcord-companion/shared/decorators";
|
|
6
|
+
|
|
7
|
+
import type { JSHashEntry } from "./types";
|
|
8
|
+
import { WebpackChunkParser } from "./WebpackChunkParser";
|
|
9
|
+
|
|
10
|
+
const BUILD_MODULE_REGEX = /Trying to open a changelog for an invalid build number/;
|
|
11
|
+
const BUILD_NUMBER_REGEX = /(?:parseInt\("|"Trying to open a changelog for an invalid build number )(\d+?)"\)/;
|
|
12
|
+
const KNOWN_BUILD_MODULE_IDS: ReadonlyArray<string> = Object.freeze(["128014", "446023"]);
|
|
13
|
+
|
|
14
|
+
function isValidModuleId(id: Expression) {
|
|
15
|
+
return isStringLiteralLike(id) || isNumericLiteral(id);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export class WebpackMainChunkParser extends WebpackChunkParser {
|
|
19
|
+
@CacheGetter()
|
|
20
|
+
get __webpack_require__(): VariableInfo | undefined {
|
|
21
|
+
for (const [ident, info] of this.vars) {
|
|
22
|
+
if (ident.text === "__webpack_require__") {
|
|
23
|
+
return info;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
@CacheGetter()
|
|
29
|
+
get __webpack_modules__(): VariableInfo | undefined {
|
|
30
|
+
for (const [ident, info] of this.vars) {
|
|
31
|
+
if (ident.text === "__webpack_modules__") {
|
|
32
|
+
return info;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@Cache()
|
|
38
|
+
public getJsChunkHashes(): JSHashEntry[] {
|
|
39
|
+
const uses = this.__webpack_require__?.uses;
|
|
40
|
+
|
|
41
|
+
if (!uses) {
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
let uFunc: ArrowFunction | undefined;
|
|
46
|
+
|
|
47
|
+
foundU: {
|
|
48
|
+
for (const { location: { parent } } of uses) {
|
|
49
|
+
if (!isPropertyAccessExpression(parent)) {
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// webpack js chunk name->id function
|
|
54
|
+
if (parent.name.text !== "u") {
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const maybeAssign = parent.parent;
|
|
59
|
+
|
|
60
|
+
if (!isAssignmentExpression(maybeAssign) || !isArrowFunction(maybeAssign.right)) {
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
uFunc = maybeAssign.right;
|
|
65
|
+
break foundU;
|
|
66
|
+
}
|
|
67
|
+
return [];
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const { body: ret } = uFunc;
|
|
71
|
+
|
|
72
|
+
// expect body to be BinExp>[BinExp>["" + {id:hash}[id]] + ".js"]
|
|
73
|
+
if (!isBinaryPlusExpression(ret)) {
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const { left: concatWithHashMap } = ret;
|
|
78
|
+
|
|
79
|
+
if (!isBinaryPlusExpression(concatWithHashMap)) {
|
|
80
|
+
return [];
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// {id:hash}[id]
|
|
84
|
+
const { right: hashMapAccess } = concatWithHashMap;
|
|
85
|
+
|
|
86
|
+
if (!isElementAccessExpression(hashMapAccess)) {
|
|
87
|
+
return [];
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const hashMap = lastChild(hashMapAccess.expression, isObjectLiteralExpression);
|
|
91
|
+
|
|
92
|
+
if (!hashMap) {
|
|
93
|
+
return [];
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return hashMap
|
|
97
|
+
.properties
|
|
98
|
+
.map(this.parseHashMapEntry.bind(this))
|
|
99
|
+
.filter(nonNull);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
@Cache()
|
|
103
|
+
public getBuildNumber(): string | undefined {
|
|
104
|
+
const m = this.getDefinedModules();
|
|
105
|
+
|
|
106
|
+
if (!m) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
for (const maybeId of KNOWN_BUILD_MODULE_IDS) {
|
|
111
|
+
const moduleText = m[maybeId];
|
|
112
|
+
|
|
113
|
+
if (BUILD_MODULE_REGEX.test(moduleText)) {
|
|
114
|
+
const [, id] = BUILD_NUMBER_REGEX.exec(moduleText) ?? [];
|
|
115
|
+
|
|
116
|
+
if (!id) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return id;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Get the id of the entrypoint module.
|
|
127
|
+
* @returns The id of the entrypoint module, if found
|
|
128
|
+
* @returns undefined if the id could not be found
|
|
129
|
+
*/
|
|
130
|
+
@Cache()
|
|
131
|
+
public getEntrypointId(): string | undefined {
|
|
132
|
+
const wreq = this.__webpack_require__;
|
|
133
|
+
|
|
134
|
+
if (!wreq) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// var __webpack_exports__ = __webpack_require__(id);
|
|
139
|
+
for (const { location: { parent: call } } of wreq.uses) {
|
|
140
|
+
if (
|
|
141
|
+
!call
|
|
142
|
+
|| !isCallExpression(call)
|
|
143
|
+
|| call.arguments.length !== 1
|
|
144
|
+
) {
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
const [maybeId] = call.arguments;
|
|
149
|
+
|
|
150
|
+
if (!isValidModuleId(maybeId)) {
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
const { parent: decl } = call;
|
|
155
|
+
|
|
156
|
+
if (
|
|
157
|
+
!decl
|
|
158
|
+
|| !isVariableDeclaration(decl)
|
|
159
|
+
|| !isIdentifier(decl.name)
|
|
160
|
+
|| decl.name.text !== "__webpack_exports__"
|
|
161
|
+
) {
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
return maybeId.text;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
protected tryParseHashMapKey(node: PropertyName): string | undefined {
|
|
170
|
+
return tryParseStringOrNumberLiteral(node);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
private tryParseHashMapValue(node: Expression): string | undefined {
|
|
174
|
+
if (!isStringLiteralLike(node)) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
return node.text;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
private parseHashMapEntry(node: ObjectLiteralElementLike): JSHashEntry | undefined {
|
|
181
|
+
if (!isPropertyAssignment(node)) {
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
const id = this.tryParseHashMapKey(node.name);
|
|
186
|
+
|
|
187
|
+
if (!id) {
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
const hash = this.tryParseHashMapValue(node.initializer);
|
|
192
|
+
|
|
193
|
+
if (!hash) {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
return [id, hash];
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
@Cache()
|
|
201
|
+
override getModuleObject(): ObjectLiteralExpression | undefined {
|
|
202
|
+
const wpModules = this.__webpack_modules__;
|
|
203
|
+
|
|
204
|
+
if (!wpModules) {
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
const { declarations } = wpModules;
|
|
209
|
+
|
|
210
|
+
if (declarations.length !== 1) {
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
const wpModulesDecl = findParent(declarations[0], isVariableDeclaration)?.initializer;
|
|
215
|
+
|
|
216
|
+
if (!wpModulesDecl || !isObjectLiteralExpression(wpModulesDecl)) {
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
return wpModulesDecl;
|
|
221
|
+
}
|
|
222
|
+
}
|