supplychain_security_sdk 1.0.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/README.MD +20 -0
- package/dist/build.js +428 -0
- package/dist/index.js +165 -0
- package/dist/util/analyze.js +247 -0
- package/dist/util/bimap.js +94 -0
- package/dist/util/config.js +58 -0
- package/dist/util/lockdown.js +10 -0
- package/dist/util/util.js +60 -0
- package/package.json +32 -0
package/README.MD
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# 前端供应链安全SDK
|
|
2
|
+
## 构建
|
|
3
|
+
```shell
|
|
4
|
+
npm i
|
|
5
|
+
npm run build
|
|
6
|
+
```
|
|
7
|
+
bundle/index.js 即为SDK产物, 是webpack插件, 可在webpack.config.js中引入
|
|
8
|
+
## 引入
|
|
9
|
+
```js
|
|
10
|
+
const SecSDK = require("../sdk/index").default;
|
|
11
|
+
new SecSDK({
|
|
12
|
+
// 配置webpack运行时隔离防护, 禁止三方代码访问一方代码
|
|
13
|
+
isolation: {
|
|
14
|
+
// 一方代码路径
|
|
15
|
+
firstPartyPaths: ["./src"],
|
|
16
|
+
// 三方代码路径
|
|
17
|
+
thirdPartyPaths: ["./node_modules", "./malware_attack_npm"]
|
|
18
|
+
}
|
|
19
|
+
}),
|
|
20
|
+
```
|
package/dist/build.js
ADDED
|
@@ -0,0 +1,428 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.harden = exports.makeCompartment = void 0;
|
|
40
|
+
exports.protectModuleRef = protectModuleRef;
|
|
41
|
+
const t = __importStar(require("@babel/types"));
|
|
42
|
+
const traverse_1 = __importDefault(require("@babel/traverse"));
|
|
43
|
+
const parser_1 = require("@babel/parser");
|
|
44
|
+
const generator_1 = require("@babel/generator");
|
|
45
|
+
const util_1 = require("./util/util");
|
|
46
|
+
const makeCompartment = (__rules, __moduleID = 0, __dev = false) => {
|
|
47
|
+
const ECMAGlobals = new Set([
|
|
48
|
+
"AggregateError",
|
|
49
|
+
"Array",
|
|
50
|
+
"ArrayBuffer",
|
|
51
|
+
"Atomics",
|
|
52
|
+
"BigInt",
|
|
53
|
+
"BigInt64Array",
|
|
54
|
+
"BigUint64Array",
|
|
55
|
+
"Boolean",
|
|
56
|
+
"DataView",
|
|
57
|
+
"Date",
|
|
58
|
+
"Error",
|
|
59
|
+
"EvalError",
|
|
60
|
+
"FinalizationRegistry",
|
|
61
|
+
"Float16Array",
|
|
62
|
+
"Float32Array",
|
|
63
|
+
"Float64Array",
|
|
64
|
+
"Function",
|
|
65
|
+
"Infinity",
|
|
66
|
+
"Int16Array",
|
|
67
|
+
"Int32Array",
|
|
68
|
+
"Int8Array",
|
|
69
|
+
"Intl",
|
|
70
|
+
"Iterator",
|
|
71
|
+
"JSON",
|
|
72
|
+
"Map",
|
|
73
|
+
"Math",
|
|
74
|
+
"NaN",
|
|
75
|
+
"Number",
|
|
76
|
+
"Object",
|
|
77
|
+
"Promise",
|
|
78
|
+
"Proxy",
|
|
79
|
+
"RangeError",
|
|
80
|
+
"ReferenceError",
|
|
81
|
+
"Reflect",
|
|
82
|
+
"RegExp",
|
|
83
|
+
"Set",
|
|
84
|
+
"SharedArrayBuffer",
|
|
85
|
+
"String",
|
|
86
|
+
"Symbol",
|
|
87
|
+
"SyntaxError",
|
|
88
|
+
"TypeError",
|
|
89
|
+
"Uint16Array",
|
|
90
|
+
"Uint32Array",
|
|
91
|
+
"Uint8Array",
|
|
92
|
+
"Uint8ClampedArray",
|
|
93
|
+
"URIError",
|
|
94
|
+
"WeakMap",
|
|
95
|
+
"WeakRef",
|
|
96
|
+
"WeakSet",
|
|
97
|
+
"decodeURI",
|
|
98
|
+
"decodeURIComponent",
|
|
99
|
+
"encodeURI",
|
|
100
|
+
"encodeURIComponent",
|
|
101
|
+
"escape",
|
|
102
|
+
// "eval",
|
|
103
|
+
"globalThis",
|
|
104
|
+
"isFinite",
|
|
105
|
+
"isNaN",
|
|
106
|
+
"parseFloat",
|
|
107
|
+
"parseInt",
|
|
108
|
+
"undefined",
|
|
109
|
+
"unescape",
|
|
110
|
+
]);
|
|
111
|
+
const proxyObj = new WeakMap();
|
|
112
|
+
const devProp = "__ru1nSecSDK";
|
|
113
|
+
const devResult = { allow: {}, disallow: {} };
|
|
114
|
+
if (__dev) {
|
|
115
|
+
//@ts-expect-error
|
|
116
|
+
if (globalThis[devProp] == null) {
|
|
117
|
+
//@ts-expect-error
|
|
118
|
+
globalThis[devProp] = {};
|
|
119
|
+
}
|
|
120
|
+
//@ts-expect-error
|
|
121
|
+
if (globalThis[devProp][__moduleID] == null) {
|
|
122
|
+
//@ts-expect-error
|
|
123
|
+
globalThis[devProp][__moduleID] = devResult;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
__rules = structuredClone(__rules);
|
|
127
|
+
Object.freeze(__rules);
|
|
128
|
+
const proxyGlobalThis = new Proxy(globalThis, {
|
|
129
|
+
get(target, prop, receiver) {
|
|
130
|
+
if (typeof prop === "symbol") {
|
|
131
|
+
return Reflect.get(target, prop, target);
|
|
132
|
+
}
|
|
133
|
+
if (["globalThis", "window", "self"].includes(prop)) {
|
|
134
|
+
return proxyGlobalThis;
|
|
135
|
+
}
|
|
136
|
+
let can = false;
|
|
137
|
+
let add_rule = false;
|
|
138
|
+
if (__rules.has(prop) || ECMAGlobals.has(prop)) {
|
|
139
|
+
can = true;
|
|
140
|
+
}
|
|
141
|
+
else if (__dev) {
|
|
142
|
+
can = true;
|
|
143
|
+
add_rule = true;
|
|
144
|
+
}
|
|
145
|
+
if (add_rule) {
|
|
146
|
+
if (!__rules.has(prop)) {
|
|
147
|
+
if (!(prop in devResult.allow)) {
|
|
148
|
+
//@ts-expect-error
|
|
149
|
+
devResult.allow[prop] = "r";
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (can) {
|
|
154
|
+
let tv = Reflect.get(target, prop, target);
|
|
155
|
+
if (typeof tv === "function") {
|
|
156
|
+
if (proxyObj.has(tv)) {
|
|
157
|
+
tv = proxyObj.get(tv);
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
const ptv = new Proxy(tv, {
|
|
161
|
+
apply(target, thisArg, argArray) {
|
|
162
|
+
if (thisArg === proxyGlobalThis) {
|
|
163
|
+
thisArg = globalThis;
|
|
164
|
+
}
|
|
165
|
+
return Reflect.apply(target, thisArg, argArray);
|
|
166
|
+
},
|
|
167
|
+
});
|
|
168
|
+
proxyObj.set(tv, ptv);
|
|
169
|
+
tv = ptv;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return tv;
|
|
173
|
+
}
|
|
174
|
+
console.warn(`trying to access prop ${prop} from ${__moduleID}`);
|
|
175
|
+
},
|
|
176
|
+
set(target, p, newValue, receiver) {
|
|
177
|
+
if (typeof p === "symbol") {
|
|
178
|
+
return Reflect.set(target, p, newValue, target);
|
|
179
|
+
}
|
|
180
|
+
if (__dev || (__rules.has(p) && __rules.get(p) === "rw")) {
|
|
181
|
+
if (!(__rules.has(p) && __rules.get(p) === "rw")) {
|
|
182
|
+
//@ts-expect-error
|
|
183
|
+
devResult.allow[p] = "rw";
|
|
184
|
+
}
|
|
185
|
+
return Reflect.set(target, p, newValue, target);
|
|
186
|
+
}
|
|
187
|
+
console.warn(`trying to set prop ${p} from ${__moduleID}`);
|
|
188
|
+
return false;
|
|
189
|
+
},
|
|
190
|
+
});
|
|
191
|
+
return proxyGlobalThis;
|
|
192
|
+
};
|
|
193
|
+
exports.makeCompartment = makeCompartment;
|
|
194
|
+
const harden = () => {
|
|
195
|
+
// 冻结内置对象
|
|
196
|
+
const objs = [
|
|
197
|
+
"Array",
|
|
198
|
+
"Map",
|
|
199
|
+
"Set",
|
|
200
|
+
"WeakMap",
|
|
201
|
+
"WeakSet",
|
|
202
|
+
"Function",
|
|
203
|
+
"Promise",
|
|
204
|
+
"String",
|
|
205
|
+
];
|
|
206
|
+
const skipProps = new Set(["size", "length"]);
|
|
207
|
+
for (const obj of objs) {
|
|
208
|
+
//@ts-expect-error
|
|
209
|
+
const o = globalThis[obj];
|
|
210
|
+
if (o && typeof o === "function" && typeof o.prototype === "object") {
|
|
211
|
+
// 首先处理原型链
|
|
212
|
+
Object.getOwnPropertyNames(o.prototype).forEach((prop) => {
|
|
213
|
+
if (skipProps.has(prop)) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
const value = o.prototype[prop];
|
|
217
|
+
Object.defineProperty(o.prototype, prop, {
|
|
218
|
+
get() {
|
|
219
|
+
return value;
|
|
220
|
+
},
|
|
221
|
+
set(v) {
|
|
222
|
+
if (this !== o.prototype) {
|
|
223
|
+
Object.defineProperty(this, prop, {
|
|
224
|
+
value: v,
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
});
|
|
229
|
+
});
|
|
230
|
+
// 然后冻结对象本身
|
|
231
|
+
Object.freeze(o);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
// 冻结Object
|
|
235
|
+
Object.freeze(Object);
|
|
236
|
+
};
|
|
237
|
+
exports.harden = harden;
|
|
238
|
+
const analyzeRule = (map) => {
|
|
239
|
+
//@ts-expect-error
|
|
240
|
+
const rule = globalThis.__ru1nSecSDK;
|
|
241
|
+
if (rule == null) {
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
const result = {};
|
|
245
|
+
for (const [k, v] of Object.entries(rule)) {
|
|
246
|
+
const file = map[k];
|
|
247
|
+
if (file == null) {
|
|
248
|
+
continue;
|
|
249
|
+
}
|
|
250
|
+
//@ts-expect-error
|
|
251
|
+
if (Object.entries(v.allow).length > 0) {
|
|
252
|
+
//@ts-expect-error
|
|
253
|
+
result[file] = {
|
|
254
|
+
global: {
|
|
255
|
+
//@ts-expect-error
|
|
256
|
+
allow: v.allow,
|
|
257
|
+
disallow: [],
|
|
258
|
+
},
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
console.log(JSON.stringify(result, null, 4));
|
|
263
|
+
return result;
|
|
264
|
+
};
|
|
265
|
+
const makeCompartmentFn = (0, parser_1.parseExpression)(exports.makeCompartment.toString());
|
|
266
|
+
const hardenFn = (0, parser_1.parseExpression)(exports.harden.toString());
|
|
267
|
+
function protectModuleRef(assetCode, moduleMap, policy, rootModuleIDs, dev, moduleDependencies, enableProto = true) {
|
|
268
|
+
const ast = (0, parser_1.parse)(assetCode, {
|
|
269
|
+
sourceType: "unambiguous",
|
|
270
|
+
});
|
|
271
|
+
// 不是webpack标准形式, 直接退出
|
|
272
|
+
if (!t.isExpressionStatement(ast.program.body[0]) ||
|
|
273
|
+
!t.isCallExpression(ast.program.body[0].expression) ||
|
|
274
|
+
!t.isArrowFunctionExpression(ast.program.body[0].expression.callee)) {
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
(0, traverse_1.default)(ast, {
|
|
278
|
+
ArrowFunctionExpression: (pathFn) => {
|
|
279
|
+
const makeFnId = t.identifier(pathFn.scope.generateUid("makeFn"));
|
|
280
|
+
pathFn.traverse({
|
|
281
|
+
Function(path) {
|
|
282
|
+
path.skip();
|
|
283
|
+
},
|
|
284
|
+
ObjectExpression: (path) => {
|
|
285
|
+
path.skip();
|
|
286
|
+
if (path.node.properties.every((e) => t.isObjectProperty(e) && t.isFunction(e.value))) {
|
|
287
|
+
if (path.node.properties.every((e) => t.isObjectProperty(e) &&
|
|
288
|
+
t.isStringLiteral(e.key)) ||
|
|
289
|
+
path.node.properties.every((e) => t.isObjectProperty(e) &&
|
|
290
|
+
t.isNumericLiteral(e.key))) {
|
|
291
|
+
path.traverse({
|
|
292
|
+
ObjectProperty(propPath) {
|
|
293
|
+
propPath.skip();
|
|
294
|
+
let mid = propPath.node.key.value;
|
|
295
|
+
// 不对root module添加限制
|
|
296
|
+
if (rootModuleIDs.has(mid)) {
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
const file = moduleMap.getByKey(mid);
|
|
300
|
+
if (file == null) {
|
|
301
|
+
console.log(`unknown module id ${mid}`);
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
const config = policy.getItem(file);
|
|
305
|
+
if (config == null) {
|
|
306
|
+
console.log(`no config item for ${mid}`);
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
// 构建依赖的模块
|
|
310
|
+
const dependency = moduleDependencies.get(mid);
|
|
311
|
+
if (dependency == null) {
|
|
312
|
+
throw new Error(`no dependency for ${mid}`);
|
|
313
|
+
}
|
|
314
|
+
const dependencyMid = new Set();
|
|
315
|
+
for (const dep of dependency) {
|
|
316
|
+
const depFile = moduleMap.getByKey(dep);
|
|
317
|
+
if (depFile == null) {
|
|
318
|
+
console.log(`[*] unknown dependency module id ${dep}`);
|
|
319
|
+
dependencyMid.add(dep);
|
|
320
|
+
continue;
|
|
321
|
+
}
|
|
322
|
+
if (config.dependency.includes(depFile)) {
|
|
323
|
+
dependencyMid.add(dep);
|
|
324
|
+
}
|
|
325
|
+
else {
|
|
326
|
+
console.log(`[*] skip dependency module id ${dep}`);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
const rule = util_1.Util.toJSON(config.global);
|
|
330
|
+
const fn = propPath.node.value;
|
|
331
|
+
if (!t.isBlockStatement(fn.body)) {
|
|
332
|
+
fn.body = t.blockStatement([
|
|
333
|
+
t.returnStatement(fn.body),
|
|
334
|
+
]);
|
|
335
|
+
}
|
|
336
|
+
const newFnBody = t.blockStatement([]);
|
|
337
|
+
if (!fn.params.every((p) => t.isIdentifier(p))) {
|
|
338
|
+
throw new Error(`Only identifier parameters are supported`);
|
|
339
|
+
}
|
|
340
|
+
// 如果参数个数小于3, 则补齐, 便于处理
|
|
341
|
+
if (fn.params.length < 3) {
|
|
342
|
+
const params = [
|
|
343
|
+
"module",
|
|
344
|
+
"__webpack_exports__",
|
|
345
|
+
"__webpack_require__",
|
|
346
|
+
];
|
|
347
|
+
for (let i = fn.params.length; i < 3; i++) {
|
|
348
|
+
fn.params.push(t.identifier(params[i]));
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
newFnBody.body.push(t.withStatement(t.assignmentExpression("=", (0, parser_1.parseExpression)(`__webpack_require__.g`), t.identifier("globalThis")), t.expressionStatement(t.callExpression(t.memberExpression(fn, t.identifier("call")), [
|
|
352
|
+
t.thisExpression(),
|
|
353
|
+
...fn.params,
|
|
354
|
+
]))));
|
|
355
|
+
const wrapFnBody = t.withStatement(t.newExpression(t.identifier("Proxy"), [
|
|
356
|
+
t.objectExpression([
|
|
357
|
+
...fn.params
|
|
358
|
+
.slice(0, 2)
|
|
359
|
+
.map((p) => t.objectProperty(p, p, false, true)),
|
|
360
|
+
t.objectProperty(fn.params[2], t.newExpression(t.identifier("Proxy"), [
|
|
361
|
+
fn.params[2],
|
|
362
|
+
t.objectExpression([
|
|
363
|
+
t.objectProperty(t.identifier("apply"), (0, parser_1.parseExpression)(`(f, t, a) => {
|
|
364
|
+
if (${JSON.stringify(Array.from(dependencyMid))}.includes(a[0])) {
|
|
365
|
+
return f.apply(t, a);
|
|
366
|
+
} else {
|
|
367
|
+
console.warn('trying to require module ' + a[0] + ' from ' + ${JSON.stringify(file)});
|
|
368
|
+
}
|
|
369
|
+
}`)),
|
|
370
|
+
]),
|
|
371
|
+
])),
|
|
372
|
+
...fn.params
|
|
373
|
+
.slice(3)
|
|
374
|
+
.map((p) => t.objectProperty(p, p, false, true)),
|
|
375
|
+
t.objectProperty(t.identifier("globalThis"), t.callExpression(makeFnId, [
|
|
376
|
+
(0, parser_1.parseExpression)(`new Map(Object.entries(${rule.toString()}))`),
|
|
377
|
+
typeof mid === "number"
|
|
378
|
+
? t.numericLiteral(mid)
|
|
379
|
+
: t.stringLiteral(mid),
|
|
380
|
+
t.booleanLiteral(dev),
|
|
381
|
+
])),
|
|
382
|
+
]),
|
|
383
|
+
t.objectExpression([
|
|
384
|
+
t.objectMethod("method", t.identifier("has"), [], t.blockStatement([
|
|
385
|
+
t.returnStatement(t.booleanLiteral(true)),
|
|
386
|
+
])),
|
|
387
|
+
]),
|
|
388
|
+
]), newFnBody);
|
|
389
|
+
const newFn = t.arrowFunctionExpression(fn.params, t.blockStatement([wrapFnBody]));
|
|
390
|
+
propPath.get("value").replaceWith(newFn);
|
|
391
|
+
},
|
|
392
|
+
});
|
|
393
|
+
path.stop();
|
|
394
|
+
pathFn.stop();
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
},
|
|
398
|
+
});
|
|
399
|
+
if (!t.isBlockStatement(pathFn.node.body)) {
|
|
400
|
+
pathFn.node.body = t.blockStatement([
|
|
401
|
+
t.returnStatement(pathFn.node.body),
|
|
402
|
+
]);
|
|
403
|
+
}
|
|
404
|
+
// 添加makeFn函数
|
|
405
|
+
pathFn.node.body.body.unshift(t.variableDeclaration("const", [
|
|
406
|
+
t.variableDeclarator(makeFnId, makeCompartmentFn),
|
|
407
|
+
]));
|
|
408
|
+
// 添加原型链保护
|
|
409
|
+
if (enableProto) {
|
|
410
|
+
pathFn.node.body.body.unshift(t.expressionStatement(t.callExpression(hardenFn, [])));
|
|
411
|
+
}
|
|
412
|
+
if (dev) {
|
|
413
|
+
const moduleID2File = Object.fromEntries(moduleMap.entries());
|
|
414
|
+
pathFn.node.body.body.unshift(t.expressionStatement(t.callExpression(t.arrowFunctionExpression([], t.blockStatement([
|
|
415
|
+
t.expressionStatement(t.assignmentExpression("=", (0, parser_1.parseExpression)(`globalThis.__ru1nDebug`), t.callExpression(t.memberExpression((0, parser_1.parseExpression)(analyzeRule.toString()), t.identifier("bind"), false), [
|
|
416
|
+
t.nullLiteral(),
|
|
417
|
+
(0, parser_1.parseExpression)(JSON.stringify(moduleID2File)),
|
|
418
|
+
]))),
|
|
419
|
+
])), [])));
|
|
420
|
+
}
|
|
421
|
+
},
|
|
422
|
+
});
|
|
423
|
+
const generator = new generator_1.CodeGenerator(ast, {
|
|
424
|
+
sourceMaps: true,
|
|
425
|
+
});
|
|
426
|
+
return generator.generate();
|
|
427
|
+
}
|
|
428
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaVFBLDRDQWdXQztBQWptQkQsZ0RBQWtDO0FBQ2xDLCtEQUF1QztBQUN2QywwQ0FBdUQ7QUFDdkQsZ0RBQWlEO0FBR2pELHNDQUE2QztBQUd0QyxNQUFNLGVBQWUsR0FBRyxDQUMzQixPQUFnQyxFQUNoQyxhQUE4QixDQUFDLEVBQy9CLFFBQWlCLEtBQUssRUFDaEIsRUFBRTtJQUNSLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxDQUFDO1FBQ3hCLGdCQUFnQjtRQUNoQixPQUFPO1FBQ1AsYUFBYTtRQUNiLFNBQVM7UUFDVCxRQUFRO1FBQ1IsZUFBZTtRQUNmLGdCQUFnQjtRQUNoQixTQUFTO1FBQ1QsVUFBVTtRQUNWLE1BQU07UUFDTixPQUFPO1FBQ1AsV0FBVztRQUNYLHNCQUFzQjtRQUN0QixjQUFjO1FBQ2QsY0FBYztRQUNkLGNBQWM7UUFDZCxVQUFVO1FBQ1YsVUFBVTtRQUNWLFlBQVk7UUFDWixZQUFZO1FBQ1osV0FBVztRQUNYLE1BQU07UUFDTixVQUFVO1FBQ1YsTUFBTTtRQUNOLEtBQUs7UUFDTCxNQUFNO1FBQ04sS0FBSztRQUNMLFFBQVE7UUFDUixRQUFRO1FBQ1IsU0FBUztRQUNULE9BQU87UUFDUCxZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLFNBQVM7UUFDVCxRQUFRO1FBQ1IsS0FBSztRQUNMLG1CQUFtQjtRQUNuQixRQUFRO1FBQ1IsUUFBUTtRQUNSLGFBQWE7UUFDYixXQUFXO1FBQ1gsYUFBYTtRQUNiLGFBQWE7UUFDYixZQUFZO1FBQ1osbUJBQW1CO1FBQ25CLFVBQVU7UUFDVixTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxXQUFXO1FBQ1gsb0JBQW9CO1FBQ3BCLFdBQVc7UUFDWCxvQkFBb0I7UUFDcEIsUUFBUTtRQUNS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
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
const util_1 = require("./util/util");
|
|
37
|
+
const config_1 = require("./util/config");
|
|
38
|
+
const analyze_1 = require("./util/analyze");
|
|
39
|
+
const fs = __importStar(require("node:fs"));
|
|
40
|
+
const path = __importStar(require("node:path"));
|
|
41
|
+
const bimap_1 = require("./util/bimap");
|
|
42
|
+
const build_1 = require("./build");
|
|
43
|
+
const webpack_sources_1 = require("webpack-sources");
|
|
44
|
+
const PluginName = "RU1NSecuritySDKPlugin";
|
|
45
|
+
class RU1NSecuritySDKPlugin {
|
|
46
|
+
constructor(option) {
|
|
47
|
+
// 当前构建项目的根目录
|
|
48
|
+
this.rootDir = "";
|
|
49
|
+
this.policyOver = {};
|
|
50
|
+
this.policy = new config_1.Config();
|
|
51
|
+
this.rootModules = new Set();
|
|
52
|
+
// moduleID -> module相对路径
|
|
53
|
+
this.moduleId2File = new bimap_1.BiMap();
|
|
54
|
+
this.moduleDependencies = new Map();
|
|
55
|
+
if (option.root == null) {
|
|
56
|
+
option.root = "./src";
|
|
57
|
+
}
|
|
58
|
+
if (option.generatePolicy == null) {
|
|
59
|
+
option.generatePolicy = true;
|
|
60
|
+
}
|
|
61
|
+
if (option.dev == null) {
|
|
62
|
+
option.dev = false;
|
|
63
|
+
}
|
|
64
|
+
if (option.disableProtoAssets == null) {
|
|
65
|
+
option.disableProtoAssets = [];
|
|
66
|
+
}
|
|
67
|
+
this.option = option;
|
|
68
|
+
}
|
|
69
|
+
apply(compiler) {
|
|
70
|
+
// 起始路径
|
|
71
|
+
this.rootDir = compiler.context;
|
|
72
|
+
const policyOverFile = path.join(this.rootDir, "SecSDK", "policy-over.json");
|
|
73
|
+
if (fs.existsSync(policyOverFile)) {
|
|
74
|
+
// @ts-expect-error
|
|
75
|
+
this.policyOver = JSON.parse(fs.readFileSync(policyOverFile));
|
|
76
|
+
}
|
|
77
|
+
compiler.hooks.compilation.tap(PluginName, (compilation) => {
|
|
78
|
+
compilation.hooks.afterOptimizeModuleIds.tap(PluginName, (modules) => {
|
|
79
|
+
for (const module of modules) {
|
|
80
|
+
if (module.id == null) {
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
if (module.constructor.name === "NormalModule") {
|
|
84
|
+
const normal = module;
|
|
85
|
+
const file = util_1.Util.relative(this.rootDir, normal.resource);
|
|
86
|
+
this.moduleId2File.set(normal.id, file);
|
|
87
|
+
if (!/\.(mjs|cjs|js|jsx|ts|tsx)$/i.test(normal.resource)) {
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
// 如果属于root, 不做任何限制
|
|
91
|
+
const rela = util_1.Util.relative(this.option.root, file);
|
|
92
|
+
const isRoot = !rela.startsWith("../");
|
|
93
|
+
if (isRoot) {
|
|
94
|
+
console.log("[+] skip", rela);
|
|
95
|
+
this.rootModules.add(normal.id);
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
const config = {
|
|
99
|
+
dependency: [],
|
|
100
|
+
global: new Map(),
|
|
101
|
+
};
|
|
102
|
+
if (this.option.generatePolicy) {
|
|
103
|
+
const source = normal.originalSource();
|
|
104
|
+
if (source != null) {
|
|
105
|
+
config.global = (0, analyze_1.analyzeGlobals)(source.source().toString());
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
throw new Error(`unsupported`);
|
|
110
|
+
}
|
|
111
|
+
const dependency = new Set();
|
|
112
|
+
for (const conn of compilation.moduleGraph.getOutgoingConnections(module)) {
|
|
113
|
+
if (conn.module == null ||
|
|
114
|
+
conn.module.id == null) {
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
dependency.add(conn.module.id);
|
|
118
|
+
if (conn.module.constructor.name !==
|
|
119
|
+
"NormalModule") {
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
const dep = conn.module;
|
|
123
|
+
const moduleFile = util_1.Util.relative(this.rootDir, dep.resource);
|
|
124
|
+
// 避免重复添加
|
|
125
|
+
if (!config.dependency.includes(moduleFile)) {
|
|
126
|
+
config.dependency.push(moduleFile);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
this.moduleDependencies.set(normal.id, dependency);
|
|
130
|
+
this.policy.addItem(file, config);
|
|
131
|
+
if (file in this.policyOver) {
|
|
132
|
+
this.policy.applyOverride(file, this.policyOver[file]);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
fs.writeFileSync(path.join(this.rootDir, "SecSDK", "policy.json"), this.policy.toJSON());
|
|
137
|
+
});
|
|
138
|
+
compilation.hooks.processAssets.tap({
|
|
139
|
+
name: PluginName,
|
|
140
|
+
stage: compiler.webpack.Compilation
|
|
141
|
+
.PROCESS_ASSETS_STAGE_OPTIMIZE,
|
|
142
|
+
}, (assets) => {
|
|
143
|
+
Object.entries(assets).forEach(([file, source]) => {
|
|
144
|
+
if (!file.endsWith(".js")) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
console.log("[*] process", file);
|
|
148
|
+
const r = (0, build_1.protectModuleRef)(source.source().toString(), this.moduleId2File, this.policy, this.rootModules, this.option.dev, this.moduleDependencies, !this.option.disableProtoAssets.includes(path.basename(file)));
|
|
149
|
+
if (r == null) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
const hasSourceMap = source.map() != null;
|
|
153
|
+
if (hasSourceMap) {
|
|
154
|
+
compilation.updateAsset(file, new webpack_sources_1.SourceMapSource(r.code, file, r.map, source.source(), source.map()));
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
compilation.updateAsset(file, new webpack_sources_1.RawSource(r.code));
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
exports.default = RU1NSecuritySDKPlugin;
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxzQ0FBNkM7QUFDN0MsMENBQXVFO0FBQ3ZFLDRDQUFnRDtBQUNoRCw0Q0FBOEI7QUFDOUIsZ0RBQWtDO0FBQ2xDLHdDQUFxQztBQUNyQyxtQ0FBMkM7QUFDM0MscURBQTZEO0FBWTdELE1BQU0sVUFBVSxHQUFHLHVCQUF1QixDQUFDO0FBRTNDLE1BQXFCLHFCQUFxQjtJQWN0QyxZQUFZLE1BQWM7UUFiMUIsYUFBYTtRQUNMLFlBQU8sR0FBVyxFQUFFLENBQUM7UUFFckIsZUFBVSxHQUF1QyxFQUFFLENBQUM7UUFDcEQsV0FBTSxHQUFXLElBQUksZUFBTSxFQUFFLENBQUM7UUFFOUIsZ0JBQVcsR0FBa0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUUvQyx5QkFBeUI7UUFDakIsa0JBQWEsR0FBRyxJQUFJLGFBQUssRUFBb0IsQ0FBQztRQUU5Qyx1QkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztRQUc1RCxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7WUFDdEIsTUFBTSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7UUFDMUIsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLGNBQWMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNoQyxNQUFNLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUNqQyxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3JCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNwQyxNQUFNLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQ25D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
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.ECMAGlobals = void 0;
|
|
40
|
+
exports.analyzeGlobals = analyzeGlobals;
|
|
41
|
+
const t = __importStar(require("@babel/types"));
|
|
42
|
+
const parser_1 = require("@babel/parser");
|
|
43
|
+
const traverse_1 = __importDefault(require("@babel/traverse"));
|
|
44
|
+
exports.ECMAGlobals = [
|
|
45
|
+
"AggregateError",
|
|
46
|
+
"Array",
|
|
47
|
+
"ArrayBuffer",
|
|
48
|
+
"Atomics",
|
|
49
|
+
"BigInt",
|
|
50
|
+
"BigInt64Array",
|
|
51
|
+
"BigUint64Array",
|
|
52
|
+
"Boolean",
|
|
53
|
+
"DataView",
|
|
54
|
+
"Date",
|
|
55
|
+
"Error",
|
|
56
|
+
"EvalError",
|
|
57
|
+
"FinalizationRegistry",
|
|
58
|
+
"Float16Array",
|
|
59
|
+
"Float32Array",
|
|
60
|
+
"Float64Array",
|
|
61
|
+
"Function",
|
|
62
|
+
"Infinity",
|
|
63
|
+
"Int16Array",
|
|
64
|
+
"Int32Array",
|
|
65
|
+
"Int8Array",
|
|
66
|
+
"Intl",
|
|
67
|
+
"Iterator",
|
|
68
|
+
"JSON",
|
|
69
|
+
"Map",
|
|
70
|
+
"Math",
|
|
71
|
+
"NaN",
|
|
72
|
+
"Number",
|
|
73
|
+
"Object",
|
|
74
|
+
"Promise",
|
|
75
|
+
"Proxy",
|
|
76
|
+
"RangeError",
|
|
77
|
+
"ReferenceError",
|
|
78
|
+
"Reflect",
|
|
79
|
+
"RegExp",
|
|
80
|
+
"Set",
|
|
81
|
+
"SharedArrayBuffer",
|
|
82
|
+
"String",
|
|
83
|
+
"Symbol",
|
|
84
|
+
"SyntaxError",
|
|
85
|
+
"TypeError",
|
|
86
|
+
"Uint16Array",
|
|
87
|
+
"Uint32Array",
|
|
88
|
+
"Uint8Array",
|
|
89
|
+
"Uint8ClampedArray",
|
|
90
|
+
"URIError",
|
|
91
|
+
"WeakMap",
|
|
92
|
+
"WeakRef",
|
|
93
|
+
"WeakSet",
|
|
94
|
+
"decodeURI",
|
|
95
|
+
"decodeURIComponent",
|
|
96
|
+
"encodeURI",
|
|
97
|
+
"encodeURIComponent",
|
|
98
|
+
"escape",
|
|
99
|
+
// "eval",
|
|
100
|
+
"globalThis",
|
|
101
|
+
"isFinite",
|
|
102
|
+
"isNaN",
|
|
103
|
+
"parseFloat",
|
|
104
|
+
"parseInt",
|
|
105
|
+
"undefined",
|
|
106
|
+
"unescape",
|
|
107
|
+
];
|
|
108
|
+
class GVPool {
|
|
109
|
+
constructor() {
|
|
110
|
+
this.globals = new Map();
|
|
111
|
+
}
|
|
112
|
+
add(name, perm) {
|
|
113
|
+
// 不管控除eval以外的ECMA全局变量的读权限
|
|
114
|
+
if (exports.ECMAGlobals.includes(name) && perm === "r") {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
if (this.globals.has(name)) {
|
|
118
|
+
if (perm === "rw") {
|
|
119
|
+
this.globals.set(name, "rw");
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
this.globals.set(name, perm);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
function analyzeGlobals(code) {
|
|
128
|
+
const pool = new GVPool();
|
|
129
|
+
const ast = (0, parser_1.parse)(code, {
|
|
130
|
+
sourceType: "unambiguous",
|
|
131
|
+
});
|
|
132
|
+
(0, traverse_1.default)(ast, {
|
|
133
|
+
MemberExpression(path) {
|
|
134
|
+
let expr = [];
|
|
135
|
+
let node = path.node;
|
|
136
|
+
let flag = true;
|
|
137
|
+
while (t.isMemberExpression(node)) {
|
|
138
|
+
if (t.isIdentifier(node.property) && !node.computed) {
|
|
139
|
+
expr.unshift(node.property.name);
|
|
140
|
+
}
|
|
141
|
+
else if (t.isStringLiteral(node.property)) {
|
|
142
|
+
expr.unshift(node.property.value);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
flag = false;
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
if (t.isIdentifier(node.object)) {
|
|
149
|
+
expr.unshift(node.object.name);
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
else if (t.isMemberExpression(node.object)) {
|
|
153
|
+
node = node.object;
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
flag = false;
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
if (!flag) {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
// 处理 __webpack_require__.g.xxx 的情况, __webpack_require__.g 就是 globalThis
|
|
164
|
+
if (expr.length >= 2 &&
|
|
165
|
+
expr[0] === "__webpack_require__" &&
|
|
166
|
+
expr[1] === "g") {
|
|
167
|
+
expr = expr.slice(2);
|
|
168
|
+
}
|
|
169
|
+
const globalAlias = ["globalThis", "self", "window"];
|
|
170
|
+
let mustBeGlobal = false;
|
|
171
|
+
while (expr.length > 0 &&
|
|
172
|
+
globalAlias.includes(expr[0]) &&
|
|
173
|
+
!path.scope.hasBinding(expr[0], { noGlobals: true })) {
|
|
174
|
+
expr = expr.slice(1);
|
|
175
|
+
// 如果是globalThis/self/window开头的, 则一定是全局变量
|
|
176
|
+
mustBeGlobal = true;
|
|
177
|
+
}
|
|
178
|
+
if (expr.length > 0 &&
|
|
179
|
+
(mustBeGlobal ||
|
|
180
|
+
!path.scope.hasBinding(expr[0], { noGlobals: true })) && expr[0] !== "arguments") {
|
|
181
|
+
pool.add(expr[0], t.isAssignmentExpression(path.parent) &&
|
|
182
|
+
path.parent.left === path.node
|
|
183
|
+
? "rw"
|
|
184
|
+
: "r");
|
|
185
|
+
}
|
|
186
|
+
path.skip();
|
|
187
|
+
},
|
|
188
|
+
Identifier(path) {
|
|
189
|
+
if (!path.scope.hasBinding(path.node.name, { noGlobals: true })) {
|
|
190
|
+
// 排除一些不算真正变量读取的场景
|
|
191
|
+
if ((t.isMemberExpression(path.parent) ||
|
|
192
|
+
t.isOptionalMemberExpression(path.parent)) &&
|
|
193
|
+
path.parent.property === path.node) {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
else if (t.isObjectProperty(path.parent) &&
|
|
197
|
+
path.parent.key === path.node) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
else if ((t.isLabeledStatement(path.parent) ||
|
|
201
|
+
t.isBreakStatement(path.parent) ||
|
|
202
|
+
t.isContinueStatement(path.parent)) &&
|
|
203
|
+
path.parent.label === path.node) {
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
else if ((t.isFunctionDeclaration(path.parent) ||
|
|
207
|
+
t.isFunctionExpression(path.parent)) &&
|
|
208
|
+
path.parent.id === path.node) {
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
else if (t.isCatchClause(path.parent) &&
|
|
212
|
+
path.parent.param === path.node) {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
else if (t.isFunction(path.parent) &&
|
|
216
|
+
(path.parent.params.includes(path.node) ||
|
|
217
|
+
path.parent.id === path.node ||
|
|
218
|
+
path.parent.kind === path.node.name ||
|
|
219
|
+
path.parent.key === path.node)) {
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
else if (t.isMetaProperty(path.parent)) {
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
else if (t.isClassProperty(path.parent) &&
|
|
226
|
+
path.parent.key === path.node) {
|
|
227
|
+
return;
|
|
228
|
+
// globalAlias默认可访问
|
|
229
|
+
}
|
|
230
|
+
else if (path.node.name === "globalThis" ||
|
|
231
|
+
path.node.name === "window" ||
|
|
232
|
+
path.node.name === "self") {
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
else if (path.node.name === "arguments") {
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
pool.add(path.node.name, t.isAssignmentExpression(path.parent) &&
|
|
239
|
+
path.parent.left === path.node
|
|
240
|
+
? "rw"
|
|
241
|
+
: "r");
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
});
|
|
245
|
+
return pool.globals;
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2FuYWx5emUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0ZBLHdDQWtKQztBQTFPRCxnREFBa0M7QUFDbEMsMENBQXNDO0FBQ3RDLCtEQUF1QztBQUUxQixRQUFBLFdBQVcsR0FBRztJQUN2QixnQkFBZ0I7SUFDaEIsT0FBTztJQUNQLGFBQWE7SUFDYixTQUFTO0lBQ1QsUUFBUTtJQUNSLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsU0FBUztJQUNULFVBQVU7SUFDVixNQUFNO0lBQ04sT0FBTztJQUNQLFdBQVc7SUFDWCxzQkFBc0I7SUFDdEIsY0FBYztJQUNkLGNBQWM7SUFDZCxjQUFjO0lBQ2QsVUFBVTtJQUNWLFVBQVU7SUFDVixZQUFZO0lBQ1osWUFBWTtJQUNaLFdBQVc7SUFDWCxNQUFNO0lBQ04sVUFBVTtJQUNWLE1BQU07SUFDTixLQUFLO0lBQ0wsTUFBTTtJQUNOLEtBQUs7SUFDTCxRQUFRO0lBQ1IsUUFBUTtJQUNSLFNBQVM7SUFDVCxPQUFPO0lBQ1AsWUFBWTtJQUNaLGdCQUFnQjtJQUNoQixTQUFTO0lBQ1QsUUFBUTtJQUNSLEtBQUs7SUFDTCxtQkFBbUI7SUFDbkIsUUFBUTtJQUNSLFFBQVE7SUFDUixhQUFhO0lBQ2IsV0FBVztJQUNYLGFBQWE7SUFDYixhQUFhO0lBQ2IsWUFBWTtJQUNaLG1CQUFtQjtJQUNuQixVQUFVO0lBQ1YsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsV0FBVztJQUNYLG9CQUFvQjtJQUNwQixXQUFXO0lBQ1gsb0JBQW9CO0lBQ3BCLFFBQVE7SUFDUixVQUFVO0lBQ1YsWUFBWTtJQUNaLFVBQVU7SUFDVixPQUFPO0lBQ1AsWUFBWTtJQUNaLFVBQVU7SUFDVixXQUFXO0lBQ1gsVUFBVTtDQUNiLENBQUM7QUFFRixNQUFNLE1BQU07SUFBWjtR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
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BiMap = void 0;
|
|
4
|
+
class BiMap {
|
|
5
|
+
constructor(entries) {
|
|
6
|
+
this.keyToValue = new Map();
|
|
7
|
+
this.valueToKey = new Map();
|
|
8
|
+
if (entries) {
|
|
9
|
+
for (const [key, value] of entries) {
|
|
10
|
+
this.set(key, value);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
// 设置键值对
|
|
15
|
+
set(key, value) {
|
|
16
|
+
// 检查键或值是否已存在
|
|
17
|
+
if (this.keyToValue.has(key)) {
|
|
18
|
+
const existingValue = this.keyToValue.get(key);
|
|
19
|
+
this.valueToKey.delete(existingValue);
|
|
20
|
+
}
|
|
21
|
+
if (this.valueToKey.has(value)) {
|
|
22
|
+
const existingKey = this.valueToKey.get(value);
|
|
23
|
+
this.keyToValue.delete(existingKey);
|
|
24
|
+
}
|
|
25
|
+
this.keyToValue.set(key, value);
|
|
26
|
+
this.valueToKey.set(value, key);
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
// 通过键获取值
|
|
30
|
+
getByKey(key) {
|
|
31
|
+
return this.keyToValue.get(key);
|
|
32
|
+
}
|
|
33
|
+
// 通过值获取键
|
|
34
|
+
getByValue(value) {
|
|
35
|
+
return this.valueToKey.get(value);
|
|
36
|
+
}
|
|
37
|
+
// 删除指定键的映射
|
|
38
|
+
deleteByKey(key) {
|
|
39
|
+
if (!this.keyToValue.has(key)) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
const value = this.keyToValue.get(key);
|
|
43
|
+
this.keyToValue.delete(key);
|
|
44
|
+
this.valueToKey.delete(value);
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
// 删除指定值的映射
|
|
48
|
+
deleteByValue(value) {
|
|
49
|
+
if (!this.valueToKey.has(value)) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
const key = this.valueToKey.get(value);
|
|
53
|
+
this.valueToKey.delete(value);
|
|
54
|
+
this.keyToValue.delete(key);
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
// 检查是否包含键
|
|
58
|
+
hasKey(key) {
|
|
59
|
+
return this.keyToValue.has(key);
|
|
60
|
+
}
|
|
61
|
+
// 检查是否包含值
|
|
62
|
+
hasValue(value) {
|
|
63
|
+
return this.valueToKey.has(value);
|
|
64
|
+
}
|
|
65
|
+
// 清空所有映射
|
|
66
|
+
clear() {
|
|
67
|
+
this.keyToValue.clear();
|
|
68
|
+
this.valueToKey.clear();
|
|
69
|
+
}
|
|
70
|
+
// 获取所有键
|
|
71
|
+
get keys() {
|
|
72
|
+
return this.keyToValue.keys();
|
|
73
|
+
}
|
|
74
|
+
// 获取所有值
|
|
75
|
+
get values() {
|
|
76
|
+
return this.valueToKey.keys();
|
|
77
|
+
}
|
|
78
|
+
// 获取大小
|
|
79
|
+
get size() {
|
|
80
|
+
return this.keyToValue.size;
|
|
81
|
+
}
|
|
82
|
+
// 获取所有键值对
|
|
83
|
+
entries() {
|
|
84
|
+
return this.keyToValue.entries();
|
|
85
|
+
}
|
|
86
|
+
// 遍历所有键值对
|
|
87
|
+
forEach(callback, thisArg) {
|
|
88
|
+
this.keyToValue.forEach((value, key) => {
|
|
89
|
+
callback.call(thisArg, value, key, this);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.BiMap = BiMap;
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9iaW1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxNQUFhLEtBQUs7SUFJaEIsWUFBWSxPQUE2QztRQUN2RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRTVCLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVE7SUFDUixHQUFHLENBQUMsR0FBTSxFQUFFLEtBQVE7UUFDbEIsYUFBYTtRQUNiLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9CLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDaEMsSUFB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
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Config = void 0;
|
|
4
|
+
class Config {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.config = new Map();
|
|
7
|
+
}
|
|
8
|
+
static applyOverride(item1, item2) {
|
|
9
|
+
const item = structuredClone(item1);
|
|
10
|
+
if (item2.dependency != null) {
|
|
11
|
+
if (item2.dependency.disallow != null) {
|
|
12
|
+
item.dependency = item1.dependency.filter((e) => item2.dependency.disallow.indexOf(e) === -1);
|
|
13
|
+
}
|
|
14
|
+
if (item2.dependency.allow != null) {
|
|
15
|
+
item2.dependency.allow.forEach((e) => {
|
|
16
|
+
if (item.dependency.indexOf(e) === -1) {
|
|
17
|
+
item.dependency.push(e);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
if (item2.global != null) {
|
|
23
|
+
if (item2.global.disallow != null) {
|
|
24
|
+
item.global = new Map(Array.from(item1.global.entries()).filter((e) => item2.global.disallow.indexOf(e[0]) === -1));
|
|
25
|
+
}
|
|
26
|
+
if (item2.global.allow != null) {
|
|
27
|
+
for (const [k, v] of Object.entries(item2.global.allow)) {
|
|
28
|
+
item.global.set(k, v);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return item;
|
|
33
|
+
}
|
|
34
|
+
addItem(module, item) {
|
|
35
|
+
this.config.set(module, item);
|
|
36
|
+
}
|
|
37
|
+
getItem(module) {
|
|
38
|
+
return this.config.get(module);
|
|
39
|
+
}
|
|
40
|
+
applyOverride(module, item) {
|
|
41
|
+
if (this.config.has(module)) {
|
|
42
|
+
this.config.set(module, Config.applyOverride(this.config.get(module), item));
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
throw new Error(`apply override error`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
toJSON() {
|
|
49
|
+
return JSON.stringify(this.config, (_key, value) => {
|
|
50
|
+
if (value instanceof Map) {
|
|
51
|
+
return Object.fromEntries(value.entries());
|
|
52
|
+
}
|
|
53
|
+
return value;
|
|
54
|
+
}, 4);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.Config = Config;
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWdCQSxNQUFhLE1BQU07SUFHZjtRQUZBLFdBQU0sR0FBNEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUU3QixDQUFDO0lBRVIsTUFBTSxDQUFDLGFBQWEsQ0FDeEIsS0FBaUIsRUFDakIsS0FBeUI7UUFFekIsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXBDLElBQUksS0FBSyxDQUFDLFVBQVUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUNyQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVcsQ0FBQyxRQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUN2RCxDQUFDO1lBQ04sQ0FBQztZQUVELElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ2pDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUNqQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM1QixDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7WUFDdkIsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FDakIsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUNyQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU8sQ0FBQyxRQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUN0RCxDQUNKLENBQUM7WUFDTixDQUFDO1lBRUQsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDN0IsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUN0RCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLENBQUMsTUFBYyxFQUFFLElBQWdCO1FBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsT0FBTyxDQUFDLE1BQWM7UUFDbEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQWMsRUFBRSxJQUF3QjtRQUNsRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQ1gsTUFBTSxFQUNOLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFFLEVBQUUsSUFBSSxDQUFDLENBQ3ZELENBQUM7UUFDTixDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU07UUFDRixPQUFPLElBQUksQ0FBQyxTQUFTLENBQ2pCLElBQUksQ0FBQyxNQUFNLEVBQ1gsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDWixJQUFJLEtBQUssWUFBWSxHQUFHLEVBQUUsQ0FBQztnQkFDdkIsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQy9DLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDLEVBQ0QsQ0FBQyxDQUNKLENBQUM7SUFDTixDQUFDO0NBQ0o7QUE3RUQsd0JBNkVDIn0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.lockdownSrc = void 0;
|
|
7
|
+
const node_fs_1 = require("node:fs");
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
exports.lockdownSrc = (0, node_fs_1.readFileSync)(node_path_1.default.join(__dirname, "../../static/lockdown.js"), "utf-8");
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ja2Rvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9sb2NrZG93bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxxQ0FBdUM7QUFDdkMsMERBQTZCO0FBRWhCLFFBQUEsV0FBVyxHQUFHLElBQUEsc0JBQVksRUFDbkMsbUJBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLDBCQUEwQixDQUFDLEVBQ2hELE9BQU8sQ0FDVixDQUFDIn0=
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.Util = void 0;
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
var Util;
|
|
39
|
+
(function (Util) {
|
|
40
|
+
/**
|
|
41
|
+
* 标准relative, 在win下也使用 / 作为路径分隔符
|
|
42
|
+
* @param from
|
|
43
|
+
* @param to
|
|
44
|
+
* @returns
|
|
45
|
+
*/
|
|
46
|
+
function relative(from, to) {
|
|
47
|
+
return path.relative(from, to).split(path.sep).join('/');
|
|
48
|
+
}
|
|
49
|
+
Util.relative = relative;
|
|
50
|
+
function toJSON(o) {
|
|
51
|
+
return JSON.stringify(o, (_key, value) => {
|
|
52
|
+
if (value instanceof Map) {
|
|
53
|
+
return Object.fromEntries(value.entries());
|
|
54
|
+
}
|
|
55
|
+
return value;
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
Util.toJSON = toJSON;
|
|
59
|
+
})(Util || (exports.Util = Util = {}));
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTZCO0FBSTdCLElBQWlCLElBQUksQ0FzQnBCO0FBdEJELFdBQWlCLElBQUk7SUFDakI7Ozs7O09BS0c7SUFDSCxTQUFnQixRQUFRLENBQUMsSUFBWSxFQUFFLEVBQVU7UUFDN0MsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUM1RCxDQUFDO0lBRmUsYUFBUSxXQUV2QixDQUFBO0lBRUQsU0FBZ0IsTUFBTSxDQUFDLENBQU07UUFDekIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUNqQixDQUFDLEVBQ0QsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDWixJQUFJLEtBQUssWUFBWSxHQUFHLEVBQUUsQ0FBQztnQkFDdkIsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQy9DLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDLENBQ0osQ0FBQztJQUNOLENBQUM7SUFWZSxXQUFNLFNBVXJCLENBQUE7QUFDTCxDQUFDLEVBdEJnQixJQUFJLG9CQUFKLElBQUksUUFzQnBCIn0=
|
package/package.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "supplychain_security_sdk",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"main": "dist/index.js",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
7
|
+
"build": "tsc --build && ncc build dist/index.js -o bundle -m"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist/**/*"
|
|
11
|
+
],
|
|
12
|
+
"keywords": [],
|
|
13
|
+
"author": "",
|
|
14
|
+
"license": "ISC",
|
|
15
|
+
"description": "",
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"@types/babel__generator": "^7.27.0",
|
|
18
|
+
"@types/babel__traverse": "^7.28.0",
|
|
19
|
+
"@types/node": "^24.2.0",
|
|
20
|
+
"@types/webpack": "^5.28.5",
|
|
21
|
+
"@vercel/ncc": "^0.38.3",
|
|
22
|
+
"webpack": "^5.101.3",
|
|
23
|
+
"webpack-cli": "^6.0.1"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@babel/generator": "^7.28.0",
|
|
27
|
+
"@babel/parser": "^7.28.0",
|
|
28
|
+
"@babel/traverse": "^7.28.0",
|
|
29
|
+
"@babel/types": "^7.28.2",
|
|
30
|
+
"webpack-sources": "^3.3.3"
|
|
31
|
+
}
|
|
32
|
+
}
|