supplychain_security_sdk 1.1.4 → 1.1.6
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/build.js +387 -55
- package/dist/buildIPC.js +5 -3
- package/dist/buildMultiProcess.js +14 -9
- package/dist/index.js +91 -14
- package/dist/util/config.js +4 -1
- package/package.json +1 -1
package/dist/build.js
CHANGED
|
@@ -36,7 +36,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.harden = exports.makeCompartment = void 0;
|
|
39
|
+
exports.scuttleOptionsPlaceholder = exports.scuttleGlobalThis = exports.loadScuttleOptions = exports.harden = exports.makeCompartment = void 0;
|
|
40
40
|
exports.protectModuleRef = protectModuleRef;
|
|
41
41
|
const t = __importStar(require("@babel/types"));
|
|
42
42
|
const traverse_1 = __importDefault(require("@babel/traverse"));
|
|
@@ -113,6 +113,7 @@ const makeCompartment = (__rules, __moduleID = 0, __dev = false) => {
|
|
|
113
113
|
const devResult = { allow: {}, disallow: {} };
|
|
114
114
|
// 执行时this指向globalThis/undefined的函数
|
|
115
115
|
const globalFuncs = [
|
|
116
|
+
"importScripts",
|
|
116
117
|
"alert",
|
|
117
118
|
"atob",
|
|
118
119
|
"blur",
|
|
@@ -206,29 +207,19 @@ const makeCompartment = (__rules, __moduleID = 0, __dev = false) => {
|
|
|
206
207
|
}
|
|
207
208
|
if (can) {
|
|
208
209
|
let tv = Reflect.get(target, prop, target);
|
|
209
|
-
if (typeof tv === "function") {
|
|
210
|
+
if (globalFuncs.includes(prop) && typeof tv === "function") {
|
|
210
211
|
if (proxyObj.has(tv)) {
|
|
211
212
|
tv = proxyObj.get(tv);
|
|
212
213
|
}
|
|
213
214
|
else {
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
},
|
|
223
|
-
});
|
|
224
|
-
}
|
|
225
|
-
else {
|
|
226
|
-
ptv = new Proxy(tv, {
|
|
227
|
-
apply(target, thisArg, argArray) {
|
|
228
|
-
return Reflect.apply(target, thisArg, argArray);
|
|
229
|
-
},
|
|
230
|
-
});
|
|
231
|
-
}
|
|
215
|
+
const ptv = new Proxy(tv, {
|
|
216
|
+
apply(target, thisArg, argArray) {
|
|
217
|
+
if (thisArg === proxyGlobalThis) {
|
|
218
|
+
thisArg = undefined;
|
|
219
|
+
}
|
|
220
|
+
return Reflect.apply(target, thisArg, argArray);
|
|
221
|
+
},
|
|
222
|
+
});
|
|
232
223
|
proxyObj.set(tv, ptv);
|
|
233
224
|
tv = ptv;
|
|
234
225
|
}
|
|
@@ -267,6 +258,9 @@ const harden = () => {
|
|
|
267
258
|
"Promise",
|
|
268
259
|
"String",
|
|
269
260
|
"JSON",
|
|
261
|
+
"RegExp",
|
|
262
|
+
"Response",
|
|
263
|
+
"Request",
|
|
270
264
|
];
|
|
271
265
|
const skipProps = new Set(["size", "length"]);
|
|
272
266
|
for (const obj of objs) {
|
|
@@ -278,28 +272,347 @@ const harden = () => {
|
|
|
278
272
|
if (skipProps.has(prop)) {
|
|
279
273
|
return;
|
|
280
274
|
}
|
|
281
|
-
const
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
275
|
+
const desc = Object.getOwnPropertyDescriptor(o.prototype, prop);
|
|
276
|
+
if (desc == null || !desc.configurable) {
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
if (desc.value != null) {
|
|
280
|
+
const value = desc.value;
|
|
281
|
+
Object.defineProperty(o.prototype, prop, {
|
|
282
|
+
get() {
|
|
283
|
+
return value;
|
|
284
|
+
},
|
|
285
|
+
set(v) {
|
|
286
|
+
if (this !== o.prototype) {
|
|
287
|
+
Object.defineProperty(this, prop, {
|
|
288
|
+
value: v,
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
},
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
const oget = desc.get, oset = desc.set;
|
|
296
|
+
Object.defineProperty(o.prototype, prop, {
|
|
297
|
+
get() {
|
|
298
|
+
if (oget == null) {
|
|
299
|
+
return undefined;
|
|
300
|
+
}
|
|
301
|
+
return oget.call(this);
|
|
302
|
+
},
|
|
303
|
+
set(v) {
|
|
304
|
+
if (oset == null) {
|
|
305
|
+
return;
|
|
306
|
+
}
|
|
307
|
+
if (this !== o.prototype) {
|
|
308
|
+
oset.call(this, v);
|
|
309
|
+
}
|
|
310
|
+
},
|
|
311
|
+
});
|
|
312
|
+
}
|
|
294
313
|
});
|
|
295
314
|
}
|
|
296
315
|
// 然后冻结对象本身
|
|
297
316
|
Object.freeze(o);
|
|
298
317
|
}
|
|
318
|
+
// hook Object.defineProperty, 保护prototype不被修改
|
|
319
|
+
const originalDefineProperty = Object.defineProperty;
|
|
320
|
+
Object.defineProperty = function (obj, prop, desc) {
|
|
321
|
+
var _a;
|
|
322
|
+
for (const o of objs) {
|
|
323
|
+
const proto = (_a = globalThis[o]) === null || _a === void 0 ? void 0 : _a.prototype;
|
|
324
|
+
if (proto == null) {
|
|
325
|
+
continue;
|
|
326
|
+
}
|
|
327
|
+
if (obj === proto && obj.hasOwnProperty(prop)) {
|
|
328
|
+
return obj;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
return originalDefineProperty(obj, prop, desc);
|
|
332
|
+
};
|
|
333
|
+
// hook Object.defineProperties, 保护prototype不被修改
|
|
334
|
+
const originalDefineProperties = Object.defineProperties;
|
|
335
|
+
Object.defineProperties = function (obj, props) {
|
|
336
|
+
var _a;
|
|
337
|
+
for (const o of objs) {
|
|
338
|
+
const proto = (_a = globalThis[o]) === null || _a === void 0 ? void 0 : _a.prototype;
|
|
339
|
+
if (proto == null) {
|
|
340
|
+
continue;
|
|
341
|
+
}
|
|
342
|
+
if (obj === proto) {
|
|
343
|
+
for (const p of Object.keys(props)) {
|
|
344
|
+
if (obj.hasOwnProperty(p)) {
|
|
345
|
+
return obj;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
return originalDefineProperties(obj, props);
|
|
351
|
+
};
|
|
299
352
|
// 冻结Object
|
|
300
353
|
Object.freeze(Object);
|
|
301
354
|
};
|
|
302
355
|
exports.harden = harden;
|
|
356
|
+
const loadScuttleOptions = () => {
|
|
357
|
+
function deepFreeze(obj, seen = new WeakSet()) {
|
|
358
|
+
if (obj === null || typeof obj !== "object") {
|
|
359
|
+
return obj;
|
|
360
|
+
}
|
|
361
|
+
// 检测循环引用
|
|
362
|
+
if (seen.has(obj)) {
|
|
363
|
+
return obj;
|
|
364
|
+
}
|
|
365
|
+
seen.add(obj);
|
|
366
|
+
Object.freeze(obj);
|
|
367
|
+
for (const key of Reflect.ownKeys(obj)) {
|
|
368
|
+
const value = obj[key];
|
|
369
|
+
if (value && typeof value === "object") {
|
|
370
|
+
deepFreeze(value, seen);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
return obj;
|
|
374
|
+
}
|
|
375
|
+
if (globalThis.__ru1n_qiuwen_scuttle_options__ == null) {
|
|
376
|
+
//@ts-expect-error
|
|
377
|
+
const options = PLACEHOLDER_SCUTTLE_OPTIONS;
|
|
378
|
+
Object.defineProperty(globalThis, "__ru1n_qiuwen_scuttle_options__", {
|
|
379
|
+
configurable: false,
|
|
380
|
+
enumerable: false,
|
|
381
|
+
writable: false,
|
|
382
|
+
value: deepFreeze(options),
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
};
|
|
386
|
+
exports.loadScuttleOptions = loadScuttleOptions;
|
|
387
|
+
const scuttleGlobalThis = () => {
|
|
388
|
+
// 如果不能访问Object, 说明已经scuttle过了
|
|
389
|
+
try {
|
|
390
|
+
const o = Object;
|
|
391
|
+
}
|
|
392
|
+
catch (e) {
|
|
393
|
+
return;
|
|
394
|
+
}
|
|
395
|
+
const getDesc = Object.getOwnPropertyDescriptor;
|
|
396
|
+
const defineProp = Object.defineProperty;
|
|
397
|
+
const getOwnPropNames = Object.getOwnPropertyNames;
|
|
398
|
+
const error = Error;
|
|
399
|
+
const log = (s) => { };
|
|
400
|
+
const set = Set;
|
|
401
|
+
const stringify = JSON.stringify;
|
|
402
|
+
const int = parseInt;
|
|
403
|
+
const slice = Array.prototype.slice;
|
|
404
|
+
const globalFuncs = [
|
|
405
|
+
"importScripts",
|
|
406
|
+
"alert",
|
|
407
|
+
"atob",
|
|
408
|
+
"blur",
|
|
409
|
+
"btoa",
|
|
410
|
+
"cancelAnimationFrame",
|
|
411
|
+
"cancelIdleCallback",
|
|
412
|
+
"captureEvents",
|
|
413
|
+
"clearInterval",
|
|
414
|
+
"clearTimeout",
|
|
415
|
+
"close",
|
|
416
|
+
"confirm",
|
|
417
|
+
"find",
|
|
418
|
+
"focus",
|
|
419
|
+
"getComputedStyle",
|
|
420
|
+
"getSelection",
|
|
421
|
+
"matchMedia",
|
|
422
|
+
"moveBy",
|
|
423
|
+
"moveTo",
|
|
424
|
+
"open",
|
|
425
|
+
"postMessage",
|
|
426
|
+
"print",
|
|
427
|
+
"prompt",
|
|
428
|
+
"queueMicrotask",
|
|
429
|
+
"releaseEvents",
|
|
430
|
+
"reportError",
|
|
431
|
+
"requestAnimationFrame",
|
|
432
|
+
"requestIdleCallback",
|
|
433
|
+
"resizeBy",
|
|
434
|
+
"resizeTo",
|
|
435
|
+
"setInterval",
|
|
436
|
+
"setTimeout",
|
|
437
|
+
"stop",
|
|
438
|
+
"structuredClone",
|
|
439
|
+
"webkitCancelAnimationFrame",
|
|
440
|
+
"webkitRequestAnimationFrame",
|
|
441
|
+
"fetchLater",
|
|
442
|
+
"webkitRequestFileSystem",
|
|
443
|
+
"webkitResolveLocalFileSystemURL",
|
|
444
|
+
"addEventListener",
|
|
445
|
+
"dispatchEvent",
|
|
446
|
+
"removeEventListener",
|
|
447
|
+
"when",
|
|
448
|
+
"fetch",
|
|
449
|
+
"scroll",
|
|
450
|
+
"scrollBy",
|
|
451
|
+
"scrollTo",
|
|
452
|
+
"getScreenDetails",
|
|
453
|
+
"queryLocalFonts",
|
|
454
|
+
"showDirectoryPicker",
|
|
455
|
+
"showOpenFilePicker",
|
|
456
|
+
"showSaveFilePicker",
|
|
457
|
+
];
|
|
458
|
+
const myGlobal = {};
|
|
459
|
+
const og = globalThis;
|
|
460
|
+
const msgEvent = MessageEvent;
|
|
461
|
+
const oldSource = getDesc(msgEvent.prototype, "source").get;
|
|
462
|
+
defineProp(msgEvent.prototype, "source", {
|
|
463
|
+
get() {
|
|
464
|
+
const result = oldSource.call(this);
|
|
465
|
+
if (result === og) {
|
|
466
|
+
return myGlobal;
|
|
467
|
+
}
|
|
468
|
+
return result;
|
|
469
|
+
},
|
|
470
|
+
configurable: false,
|
|
471
|
+
enumerable: true,
|
|
472
|
+
});
|
|
473
|
+
const props = new set(getOwnPropNames(globalThis));
|
|
474
|
+
for (const k in globalThis) {
|
|
475
|
+
props.add(k);
|
|
476
|
+
}
|
|
477
|
+
const skipProps = [
|
|
478
|
+
"self",
|
|
479
|
+
"window",
|
|
480
|
+
"globalThis",
|
|
481
|
+
"__ru1n_qiuwen_myGlobal__",
|
|
482
|
+
"__proto__",
|
|
483
|
+
];
|
|
484
|
+
if (globalThis.__ru1n_qiuwen_scuttle_options__ == null) {
|
|
485
|
+
log("No scuttle options found!!!!!");
|
|
486
|
+
throw new error("No scuttle options found");
|
|
487
|
+
}
|
|
488
|
+
const options = globalThis.__ru1n_qiuwen_scuttle_options__;
|
|
489
|
+
for (const prop of props) {
|
|
490
|
+
if (skipProps.includes(prop)) {
|
|
491
|
+
continue;
|
|
492
|
+
}
|
|
493
|
+
// on系列函数是事件响应函数, 需要被正确的绑定到globalThis上
|
|
494
|
+
if (prop.startsWith("on")) {
|
|
495
|
+
defineProp(myGlobal, prop, {
|
|
496
|
+
[prop]: {
|
|
497
|
+
get() {
|
|
498
|
+
return globalThis[prop];
|
|
499
|
+
},
|
|
500
|
+
set(value) {
|
|
501
|
+
globalThis[prop] = value;
|
|
502
|
+
},
|
|
503
|
+
enumerable: true,
|
|
504
|
+
configurable: false,
|
|
505
|
+
},
|
|
506
|
+
});
|
|
507
|
+
continue;
|
|
508
|
+
}
|
|
509
|
+
if (globalFuncs.includes(prop)) {
|
|
510
|
+
const originalFunc = globalThis[prop];
|
|
511
|
+
myGlobal[prop] = function (...args) {
|
|
512
|
+
if (this === myGlobal) {
|
|
513
|
+
return originalFunc.apply(undefined, args);
|
|
514
|
+
}
|
|
515
|
+
else {
|
|
516
|
+
return originalFunc.apply(this, args);
|
|
517
|
+
}
|
|
518
|
+
};
|
|
519
|
+
}
|
|
520
|
+
else {
|
|
521
|
+
myGlobal[prop] = globalThis[prop];
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
defineProp(globalThis, "__ru1n_qiuwen_myGlobal__", {
|
|
525
|
+
get() {
|
|
526
|
+
const stack = new error().stack;
|
|
527
|
+
if (stack == null) {
|
|
528
|
+
log("No call stack available.");
|
|
529
|
+
return null;
|
|
530
|
+
}
|
|
531
|
+
// 2. 按换行符分割成数组
|
|
532
|
+
const stackLines = stack.split("\n");
|
|
533
|
+
// 3. 找到第二层调用信息
|
|
534
|
+
let targetLine = "", cc = 0;
|
|
535
|
+
for (let i = 1; i < stackLines.length; i++) {
|
|
536
|
+
const line = stackLines[i].trim();
|
|
537
|
+
if (line.startsWith("at ")) {
|
|
538
|
+
if (cc === 1) {
|
|
539
|
+
targetLine = line;
|
|
540
|
+
break;
|
|
541
|
+
}
|
|
542
|
+
cc++;
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
if (!targetLine) {
|
|
546
|
+
log(`No valid call stack information found. ${stack}`);
|
|
547
|
+
return null; // 没有找到有效的调用栈信息
|
|
548
|
+
}
|
|
549
|
+
// 4. 使用正则表达式解析目标行
|
|
550
|
+
// 匹配格式: "at [函数名] (文件名:行号:列号)" 或 "at 文件名:行号:列号"
|
|
551
|
+
const regex1 = /at\s+.+\s+\((.+):(\d+):(\d+)\)/; // 有函数名和括号的情况
|
|
552
|
+
const regex2 = /at\s+(.+):(\d+):(\d+)/; // 没有函数名和括号的情况
|
|
553
|
+
let match = targetLine.match(regex1) || targetLine.match(regex2);
|
|
554
|
+
if (match == null || match.length < 4) {
|
|
555
|
+
log(`Unable to parse call stack line: ${targetLine}`);
|
|
556
|
+
return null;
|
|
557
|
+
}
|
|
558
|
+
const callerInfo = {
|
|
559
|
+
fileName: match[1],
|
|
560
|
+
lineNumber: int(match[2], 10),
|
|
561
|
+
columnNumber: int(match[3], 10),
|
|
562
|
+
rawLine: targetLine,
|
|
563
|
+
};
|
|
564
|
+
// 校验取值来源是否合法
|
|
565
|
+
for (const option of options) {
|
|
566
|
+
if (callerInfo.fileName.endsWith(option.file) &&
|
|
567
|
+
callerInfo.lineNumber === option.line &&
|
|
568
|
+
callerInfo.columnNumber === option.col) {
|
|
569
|
+
log(`Authorized access to __ru1n_qiuwen_myGlobal__: ${stringify(callerInfo)}`);
|
|
570
|
+
return myGlobal;
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
log(`Unauthorized access to __ru1n_qiuwen_myGlobal__: ${stringify(callerInfo)}`);
|
|
574
|
+
return null;
|
|
575
|
+
},
|
|
576
|
+
set(value) {
|
|
577
|
+
throw new error(`Setting global property "__ru1n_qiuwen_myGlobal__" is restricted.`);
|
|
578
|
+
},
|
|
579
|
+
configurable: false,
|
|
580
|
+
enumerable: false,
|
|
581
|
+
});
|
|
582
|
+
myGlobal.window = myGlobal;
|
|
583
|
+
myGlobal.self = myGlobal;
|
|
584
|
+
myGlobal.globalThis = myGlobal;
|
|
585
|
+
for (const prop of props) {
|
|
586
|
+
if (skipProps.includes(prop) || prop.startsWith("on")) {
|
|
587
|
+
continue;
|
|
588
|
+
}
|
|
589
|
+
const desc = getDesc(globalThis, prop);
|
|
590
|
+
if (!desc ||
|
|
591
|
+
!desc.configurable ||
|
|
592
|
+
desc.get ||
|
|
593
|
+
desc.set ||
|
|
594
|
+
[
|
|
595
|
+
"OffscreenCanvas",
|
|
596
|
+
"Reflect",
|
|
597
|
+
"__ru1n_qiuwen_scuttle_options__",
|
|
598
|
+
].includes(prop)) {
|
|
599
|
+
continue;
|
|
600
|
+
}
|
|
601
|
+
defineProp(globalThis, prop, {
|
|
602
|
+
get() {
|
|
603
|
+
log(`Access to global property "${prop}" on globalThis is restricted.`);
|
|
604
|
+
throw new error(`Access to global property "${prop}" on globalThis is restricted.`);
|
|
605
|
+
},
|
|
606
|
+
set(value) {
|
|
607
|
+
log(`Setting global property "${prop}" on globalThis is restricted.`);
|
|
608
|
+
throw new error(`Setting global property "${prop}" on globalThis is restricted.`);
|
|
609
|
+
},
|
|
610
|
+
enumerable: true,
|
|
611
|
+
configurable: false,
|
|
612
|
+
});
|
|
613
|
+
}
|
|
614
|
+
};
|
|
615
|
+
exports.scuttleGlobalThis = scuttleGlobalThis;
|
|
303
616
|
const analyzeRule = (map) => {
|
|
304
617
|
//@ts-expect-error
|
|
305
618
|
const rule = globalThis.__ru1nSecSDK;
|
|
@@ -329,10 +642,23 @@ const analyzeRule = (map) => {
|
|
|
329
642
|
};
|
|
330
643
|
const makeCompartmentFn = (0, parser_1.parseExpression)(exports.makeCompartment.toString());
|
|
331
644
|
const hardenFn = (0, parser_1.parseExpression)(exports.harden.toString());
|
|
332
|
-
|
|
645
|
+
exports.scuttleOptionsPlaceholder = "PLACEHOLDER_SCUTTLE_OPTIONS".repeat(100);
|
|
646
|
+
const loadScuttleOptionsFn = (0, parser_1.parseExpression)(exports.loadScuttleOptions
|
|
647
|
+
.toString()
|
|
648
|
+
.replace("PLACEHOLDER_SCUTTLE_OPTIONS", exports.scuttleOptionsPlaceholder));
|
|
649
|
+
const scuttleGlobalThisFn = (0, parser_1.parseExpression)(exports.scuttleGlobalThis.toString());
|
|
650
|
+
function protectModuleRef(assetCode, moduleMap, policy, rootModuleIDs, dev, moduleDependencies, enableScuttle, enableProto = true) {
|
|
333
651
|
const ast = (0, parser_1.parse)(assetCode, {
|
|
334
652
|
sourceType: "unambiguous",
|
|
335
653
|
});
|
|
654
|
+
// 去除所有use strict
|
|
655
|
+
(0, traverse_1.default)(ast, {
|
|
656
|
+
Directive(path) {
|
|
657
|
+
if (path.node.value.value === "use strict") {
|
|
658
|
+
path.remove();
|
|
659
|
+
}
|
|
660
|
+
},
|
|
661
|
+
});
|
|
336
662
|
// 判断是否为webpack打包产物
|
|
337
663
|
let type = 0;
|
|
338
664
|
if (t.isExpressionStatement(ast.program.body[0]) &&
|
|
@@ -351,7 +677,10 @@ function protectModuleRef(assetCode, moduleMap, policy, rootModuleIDs, dev, modu
|
|
|
351
677
|
type = 2;
|
|
352
678
|
}
|
|
353
679
|
if (type === 0) {
|
|
354
|
-
|
|
680
|
+
addScuttle();
|
|
681
|
+
return new generator_1.CodeGenerator(ast, {
|
|
682
|
+
sourceMaps: true,
|
|
683
|
+
}).generate();
|
|
355
684
|
}
|
|
356
685
|
else if (type === 2) {
|
|
357
686
|
ast.program.body = [
|
|
@@ -382,14 +711,10 @@ function protectModuleRef(assetCode, moduleMap, policy, rootModuleIDs, dev, modu
|
|
|
382
711
|
}
|
|
383
712
|
const file = moduleMap.getByKey(mid);
|
|
384
713
|
if (file == null) {
|
|
385
|
-
// console.log(`unknown module id ${mid}`);
|
|
386
714
|
return;
|
|
387
715
|
}
|
|
388
716
|
const config = policy.getItem(file);
|
|
389
717
|
if (config == null) {
|
|
390
|
-
// console.log(
|
|
391
|
-
// `no config item for ${mid}`
|
|
392
|
-
// );
|
|
393
718
|
return;
|
|
394
719
|
}
|
|
395
720
|
// 构建依赖的模块
|
|
@@ -457,13 +782,17 @@ function protectModuleRef(assetCode, moduleMap, policy, rootModuleIDs, dev, modu
|
|
|
457
782
|
...fn.params
|
|
458
783
|
.slice(3)
|
|
459
784
|
.map((p) => t.objectProperty(p, p, false, true)),
|
|
460
|
-
t.objectProperty(t.identifier("globalThis"),
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
785
|
+
t.objectProperty(t.identifier("globalThis"), config.enable
|
|
786
|
+
? t.callExpression(makeFnId, [
|
|
787
|
+
(0, parser_1.parseExpression)(`new Map(Object.entries(${rule.toString()}))`),
|
|
788
|
+
typeof mid ===
|
|
789
|
+
"number"
|
|
790
|
+
? t.numericLiteral(mid)
|
|
791
|
+
: t.stringLiteral(mid),
|
|
792
|
+
t.booleanLiteral(dev),
|
|
793
|
+
])
|
|
794
|
+
: (console.log(`[*] disable global protection for ${file}`),
|
|
795
|
+
t.identifier("globalThis"))),
|
|
467
796
|
]),
|
|
468
797
|
t.objectExpression([
|
|
469
798
|
t.objectMethod("method", t.identifier("has"), [], t.blockStatement([
|
|
@@ -505,17 +834,20 @@ function protectModuleRef(assetCode, moduleMap, policy, rootModuleIDs, dev, modu
|
|
|
505
834
|
}
|
|
506
835
|
},
|
|
507
836
|
});
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
837
|
+
function addScuttle() {
|
|
838
|
+
if (enableScuttle !== "disable") {
|
|
839
|
+
// 在首部添加scuttle模式代码
|
|
840
|
+
ast.program.body = [
|
|
841
|
+
t.withStatement((0, parser_1.parseExpression)(`globalThis.__ru1n_qiuwen_myGlobal__`), t.blockStatement(ast.program.body)),
|
|
842
|
+
];
|
|
843
|
+
ast.program.body.unshift(t.expressionStatement(t.callExpression(scuttleGlobalThisFn, [])));
|
|
844
|
+
ast.program.body.unshift(t.expressionStatement(t.callExpression(loadScuttleOptionsFn, [])));
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
addScuttle();
|
|
516
848
|
const generator = new generator_1.CodeGenerator(ast, {
|
|
517
849
|
sourceMaps: true,
|
|
518
850
|
});
|
|
519
851
|
return generator.generate();
|
|
520
852
|
}
|
|
521
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd1VBLDRDQWlZQztBQXpzQkQsZ0RBQWtDO0FBQ2xDLCtEQUF1QztBQUN2QywwQ0FBdUQ7QUFDdkQsZ0RBQWlEO0FBR2pELHNDQUE2QztBQUV0QyxNQUFNLGVBQWUsR0FBRyxDQUMzQixPQUFnQyxFQUNoQyxhQUE4QixDQUFDLEVBQy9CLFFBQWlCLEtBQUssRUFDaEIsRUFBRTtJQUNSLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxDQUFDO1FBQ3hCLGdCQUFnQjtRQUNoQixPQUFPO1FBQ1AsYUFBYTtRQUNiLFNBQVM7UUFDVCxRQUFRO1FBQ1IsZUFBZTtRQUNmLGdCQUFnQjtRQUNoQixTQUFTO1FBQ1QsVUFBVTtRQUNWLE1BQU07UUFDTixPQUFPO1FBQ1AsV0FBVztRQUNYLHNCQUFzQjtRQUN0QixjQUFjO1FBQ2QsY0FBYztRQUNkLGNBQWM7UUFDZCxVQUFVO1FBQ1YsVUFBVTtRQUNWLFlBQVk7UUFDWixZQUFZO1FBQ1osV0FBVztRQUNYLE1BQU07UUFDTixVQUFVO1FBQ1YsTUFBTTtRQUNOLEtBQUs7UUFDTCxNQUFNO1FBQ04sS0FBSztRQUNMLFFBQVE7UUFDUixRQUFRO1FBQ1IsU0FBUztRQUNULE9BQU87UUFDUCxZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLFNBQVM7UUFDVCxRQUFRO1FBQ1IsS0FBSztRQUNMLG1CQUFtQjtRQUNuQixRQUFRO1FBQ1IsUUFBUTtRQUNSLGFBQWE7UUFDYixXQUFXO1FBQ1gsYUFBYTtRQUNiLGFBQWE7UUFDYixZQUFZO1FBQ1osbUJBQW1CO1FBQ25CLFVBQVU7UUFDVixTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxXQUFXO1FBQ1gsb0JBQW9CO1FBQ3BCLFdBQVc7UUFDWCxvQkFBb0I7UUFDcEIsUUFBUTtRQUNS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
|
|
853
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcXJCQSw0Q0FvYUM7QUF6bENELGdEQUFrQztBQUNsQywrREFBdUM7QUFDdkMsMENBQXVEO0FBQ3ZELGdEQUFpRDtBQUdqRCxzQ0FBNkM7QUFFdEMsTUFBTSxlQUFlLEdBQUcsQ0FDM0IsT0FBZ0MsRUFDaEMsYUFBOEIsQ0FBQyxFQUMvQixRQUFpQixLQUFLLEVBQ2hCLEVBQUU7SUFDUixNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUN4QixnQkFBZ0I7UUFDaEIsT0FBTztRQUNQLGFBQWE7UUFDYixTQUFTO1FBQ1QsUUFBUTtRQUNSLGVBQWU7UUFDZixnQkFBZ0I7UUFDaEIsU0FBUztRQUNULFVBQVU7UUFDVixNQUFNO1FBQ04sT0FBTztRQUNQLFdBQVc7UUFDWCxzQkFBc0I7UUFDdEIsY0FBYztRQUNkLGNBQWM7UUFDZCxjQUFjO1FBQ2QsVUFBVTtRQUNWLFVBQVU7UUFDVixZQUFZO1FBQ1osWUFBWTtRQUNaLFdBQVc7UUFDWCxNQUFNO1FBQ04sVUFBVTtRQUNWLE1BQU07UUFDTixLQUFLO1FBQ0wsTUFBTTtRQUNOLEtBQUs7UUFDTCxRQUFRO1FBQ1IsUUFBUTtRQUNSLFNBQVM7UUFDVCxPQUFPO1FBQ1AsWUFBWTtRQUNaLGdCQUFnQjtRQUNoQixTQUFTO1FBQ1QsUUFBUTtRQUNSLEtBQUs7UUFDTCxtQkFBbUI7UUFDbkIsUUFBUTtRQUNSLFFBQVE7UUFDUixhQUFhO1FBQ2IsV0FBVztRQUNYLGFBQWE7UUFDYixhQUFhO1FBQ2IsWUFBWTtRQUNaLG1CQUFtQjtRQUNuQixVQUFVO1FBQ1YsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsV0FBVztRQUNYLG9CQUFvQjtRQUNwQixXQUFXO1FBQ1gsb0JBQW9CO1FBQ3BCLFFBQVE7UUFD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
|
package/dist/buildIPC.js
CHANGED
|
@@ -5,8 +5,9 @@ const bimap_1 = require("./util/bimap");
|
|
|
5
5
|
const config_1 = require("./util/config");
|
|
6
6
|
if ((process === null || process === void 0 ? void 0 : process.send) != null) {
|
|
7
7
|
process.on("message", (msg) => {
|
|
8
|
+
var _a;
|
|
8
9
|
// 取msg中的参数, 调用protectModuleRef进行构建
|
|
9
|
-
const { id, params: { assetCode, moduleMap, config, rootModuleIDs, dev, moduleDependencyMap, enableProto, isModuleIDNumeric, }, } = msg;
|
|
10
|
+
const { id, params: { assetCode, moduleMap, config, rootModuleIDs, dev, moduleDependencyMap, enableScuttle, enableProto, isModuleIDNumeric, }, } = msg;
|
|
10
11
|
// 要对参数做类型转换
|
|
11
12
|
const newModuleMap = new bimap_1.BiMap();
|
|
12
13
|
for (const [k, v] of Object.entries(moduleMap)) {
|
|
@@ -17,13 +18,14 @@ if ((process === null || process === void 0 ? void 0 : process.send) != null) {
|
|
|
17
18
|
newConfig.config.set(k, {
|
|
18
19
|
dependency: v.dependency,
|
|
19
20
|
global: new Map(Object.entries(v.global)),
|
|
21
|
+
enable: (_a = v.enable) !== null && _a !== void 0 ? _a : true,
|
|
20
22
|
});
|
|
21
23
|
}
|
|
22
24
|
const newModuleDependencyMap = new Map();
|
|
23
25
|
for (const [k, v] of Object.entries(moduleDependencyMap)) {
|
|
24
26
|
newModuleDependencyMap.set(isModuleIDNumeric ? parseInt(k) : k, new Set(v));
|
|
25
27
|
}
|
|
26
|
-
const result = (0, build_1.protectModuleRef)(assetCode, newModuleMap, newConfig, new Set(rootModuleIDs), dev, newModuleDependencyMap, enableProto);
|
|
28
|
+
const result = (0, build_1.protectModuleRef)(assetCode, newModuleMap, newConfig, new Set(rootModuleIDs), dev, newModuleDependencyMap, enableScuttle, enableProto);
|
|
27
29
|
if (result == null) {
|
|
28
30
|
const errMsg = {
|
|
29
31
|
id,
|
|
@@ -58,4 +60,4 @@ if ((process === null || process === void 0 ? void 0 : process.send) != null) {
|
|
|
58
60
|
else {
|
|
59
61
|
throw new Error("this file should be run in a child process");
|
|
60
62
|
}
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRJUEMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnVpbGRJUEMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtQ0FBMkM7QUFDM0Msd0NBQXFDO0FBQ3JDLDBDQUF1QztBQWtDdkMsSUFBSSxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxJQUFJLEtBQUksSUFBSSxFQUFFLENBQUM7SUFDeEIsT0FBTyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFnQixFQUFFLEVBQUU7O1FBQ3ZDLG1DQUFtQztRQUNuQyxNQUFNLEVBQ0YsRUFBRSxFQUNGLE1BQU0sRUFBRSxFQUNKLFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLGFBQWEsRUFDYixHQUFHLEVBQ0gsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixXQUFXLEVBQ1gsaUJBQWlCLEdBQ3BCLEdBQ0osR0FBRyxHQUFHLENBQUM7UUFFUixZQUFZO1FBQ1osTUFBTSxZQUFZLEdBQTRCLElBQUksYUFBSyxFQUFFLENBQUM7UUFDMUQsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUM3QyxZQUFZLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsTUFBTSxTQUFTLEdBQVcsSUFBSSxlQUFNLEVBQUUsQ0FBQztRQUN2QyxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDcEIsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVO2dCQUN4QixNQUFNLEVBQUUsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3pDLE1BQU0sRUFBRSxNQUFBLENBQUMsQ0FBQyxNQUFNLG1DQUFJLElBQUk7YUFDM0IsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUNELE1BQU0sc0JBQXNCLEdBQWlDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDdkUsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1lBQ3ZELHNCQUFzQixDQUFDLEdBQUcsQ0FDdEIsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNuQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDYixDQUFDO1FBQ04sQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLElBQUEsd0JBQWdCLEVBQzNCLFNBQVMsRUFDVCxZQUFZLEVBQ1osU0FBUyxFQUNULElBQUksR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUN0QixHQUFHLEVBQ0gsc0JBQXNCLEVBQ3RCLGFBQWEsRUFDYixXQUFXLENBQ2QsQ0FBQztRQUVGLElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2pCLE1BQU0sTUFBTSxHQUFtQjtnQkFDM0IsRUFBRTtnQkFDRixNQUFNLEVBQUUsSUFBSTtnQkFDWixHQUFHLEVBQUUsSUFBSTthQUNaLENBQUM7WUFDRixPQUFPLENBQUMsSUFBSyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakQsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3JCLE1BQU0sTUFBTSxHQUFtQjtvQkFDM0IsRUFBRTtvQkFDRixNQUFNLEVBQUUsSUFBSTtvQkFDWixHQUFHLEVBQUUsb0JBQW9CO2lCQUM1QixDQUFDO2dCQUNGLE9BQU8sQ0FBQyxJQUFLLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osTUFBTSxNQUFNLEdBQW1CO29CQUMzQixFQUFFO29CQUNGLE1BQU0sRUFBRTt3QkFDSixJQUFJLEVBQUUsTUFBTyxDQUFDLElBQUs7d0JBQ25CLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU8sQ0FBQyxHQUFJLENBQUM7cUJBQ3BDO29CQUNELEdBQUcsRUFBRSxJQUFJO2lCQUNaLENBQUM7Z0JBQ0YsT0FBTyxDQUFDLElBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pELENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0tBQU0sQ0FBQztJQUNKLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztBQUNsRSxDQUFDIn0=
|
|
@@ -11,7 +11,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.buildMultiProcess = buildMultiProcess;
|
|
13
13
|
const child_process_1 = require("child_process");
|
|
14
|
-
function buildMultiProcess(assetCode, moduleMap, config, rootModuleIDs, dev, moduleDependencyMap, enableProto) {
|
|
14
|
+
function buildMultiProcess(assetCode, moduleMap, config, rootModuleIDs, dev, moduleDependencyMap, enableScuttle, enableProto) {
|
|
15
15
|
return __awaiter(this, void 0, void 0, function* () {
|
|
16
16
|
return new Promise((resolve, reject) => {
|
|
17
17
|
const child = (0, child_process_1.fork)(require.resolve("./buildIPC"));
|
|
@@ -41,13 +41,17 @@ function buildMultiProcess(assetCode, moduleMap, config, rootModuleIDs, dev, mod
|
|
|
41
41
|
params: {
|
|
42
42
|
assetCode,
|
|
43
43
|
moduleMap: Object.fromEntries(moduleMap.entries()),
|
|
44
|
-
config: Object.fromEntries(Array.from(config.config.entries()).map(([k, v]) =>
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
44
|
+
config: Object.fromEntries(Array.from(config.config.entries()).map(([k, v]) => {
|
|
45
|
+
var _a;
|
|
46
|
+
return [
|
|
47
|
+
k,
|
|
48
|
+
{
|
|
49
|
+
dependency: v.dependency,
|
|
50
|
+
global: Object.fromEntries(v.global.entries()),
|
|
51
|
+
enable: (_a = v.enable) !== null && _a !== void 0 ? _a : true,
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
})),
|
|
51
55
|
rootModuleIDs: Array.from(rootModuleIDs),
|
|
52
56
|
dev,
|
|
53
57
|
moduleDependencyMap: Object.fromEntries(Array.from(moduleDependencyMap.entries()).map(([k, v]) => [
|
|
@@ -55,6 +59,7 @@ function buildMultiProcess(assetCode, moduleMap, config, rootModuleIDs, dev, mod
|
|
|
55
59
|
Array.from(v),
|
|
56
60
|
])),
|
|
57
61
|
enableProto,
|
|
62
|
+
enableScuttle,
|
|
58
63
|
isModuleIDNumeric: Array.from(moduleDependencyMap.keys()).every((k) => typeof k === "number"),
|
|
59
64
|
},
|
|
60
65
|
};
|
|
@@ -62,4 +67,4 @@ function buildMultiProcess(assetCode, moduleMap, config, rootModuleIDs, dev, mod
|
|
|
62
67
|
});
|
|
63
68
|
});
|
|
64
69
|
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRNdWx0aVByb2Nlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnVpbGRNdWx0aVByb2Nlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUErRVMsOENBQWlCO0FBL0UxQixpREFBcUM7QUFRckMsU0FBZSxpQkFBaUIsQ0FDNUIsU0FBaUIsRUFDakIsU0FBa0MsRUFDbEMsTUFBYyxFQUNkLGFBQTRCLEVBQzVCLEdBQVksRUFDWixtQkFBaUQsRUFDakQsYUFBa0QsRUFDbEQsV0FBb0I7O1FBS3BCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDbkMsTUFBTSxLQUFLLEdBQUcsSUFBQSxvQkFBSSxFQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUVsRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUUvQyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQW1CLEVBQUUsRUFBRTtnQkFDeEMsSUFBSSxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO29CQUNoQixJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDVixNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQy9CLENBQUM7eUJBQU0sQ0FBQzt3QkFDSixJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7NEJBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDbEIsQ0FBQzs2QkFBTSxDQUFDOzRCQUNKLE9BQU8sQ0FBQztnQ0FDSixJQUFJLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJO2dDQUNyQixHQUFHLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHO29DQUNmLENBQUMsQ0FBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFrQjtvQ0FDOUMsQ0FBQyxDQUFDLElBQUk7NkJBQ2IsQ0FBQyxDQUFDO3dCQUNQLENBQUM7b0JBQ0wsQ0FBQztnQkFDTCxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLEdBQUcsR0FBZ0I7Z0JBQ3JCLEVBQUU7Z0JBQ0YsTUFBTSxFQUFFO29CQUNKLFNBQVM7b0JBQ1QsU0FBUyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNsRCxNQUFNLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FDdEIsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTs7d0JBQUMsT0FBQTs0QkFDaEQsQ0FBQzs0QkFDRDtnQ0FDSSxVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVU7Z0NBQ3hCLE1BQU0sRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7Z0NBQzlDLE1BQU0sRUFBRSxNQUFBLENBQUMsQ0FBQyxNQUFNLG1DQUFJLElBQUk7NkJBQzNCO3lCQUNKLENBQUE7cUJBQUEsQ0FBQyxDQUNMO29CQUNELGFBQWEsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztvQkFDeEMsR0FBRztvQkFDSCxtQkFBbUIsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUNuQyxLQUFLLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO3dCQUN0RCxDQUFDO3dCQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3FCQUNoQixDQUFDLENBQ0w7b0JBQ0QsV0FBVztvQkFDWCxhQUFhO29CQUNiLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQzNELENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQy9CO2lCQUNKO2FBQ0osQ0FBQztZQUVGLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQUEifQ==
|
package/dist/index.js
CHANGED
|
@@ -50,6 +50,7 @@ const path = __importStar(require("node:path"));
|
|
|
50
50
|
const bimap_1 = require("./util/bimap");
|
|
51
51
|
const webpack_sources_1 = require("webpack-sources");
|
|
52
52
|
const buildMultiProcess_1 = require("./buildMultiProcess");
|
|
53
|
+
const build_1 = require("./build");
|
|
53
54
|
const PluginName = "RU1NSecuritySDKPlugin";
|
|
54
55
|
class RU1NSecuritySDKPlugin {
|
|
55
56
|
constructor(option) {
|
|
@@ -73,6 +74,9 @@ class RU1NSecuritySDKPlugin {
|
|
|
73
74
|
if (option.disableProtoAssets == null) {
|
|
74
75
|
option.disableProtoAssets = [];
|
|
75
76
|
}
|
|
77
|
+
if (option.scuttle == null) {
|
|
78
|
+
option.scuttle = false;
|
|
79
|
+
}
|
|
76
80
|
this.option = option;
|
|
77
81
|
}
|
|
78
82
|
apply(compiler) {
|
|
@@ -107,6 +111,7 @@ class RU1NSecuritySDKPlugin {
|
|
|
107
111
|
const config = {
|
|
108
112
|
dependency: [],
|
|
109
113
|
global: new Map(),
|
|
114
|
+
enable: true,
|
|
110
115
|
};
|
|
111
116
|
if (this.option.generatePolicy) {
|
|
112
117
|
const source = normal.originalSource();
|
|
@@ -149,27 +154,99 @@ class RU1NSecuritySDKPlugin {
|
|
|
149
154
|
stage: compiler.webpack.Compilation
|
|
150
155
|
.PROCESS_ASSETS_STAGE_OPTIMIZE,
|
|
151
156
|
}, (assets) => __awaiter(this, void 0, void 0, function* () {
|
|
157
|
+
var _a, _b;
|
|
152
158
|
for (const item of Object.entries(assets)) {
|
|
153
159
|
const file = item[0], source = item[1];
|
|
154
|
-
if (
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
160
|
+
if (file.endsWith(".js")) {
|
|
161
|
+
console.log("[*] process", file);
|
|
162
|
+
if (file === "secsdk-scuttle-globalThis.js") {
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
const enableProto = !this.option.disableProtoAssets.includes(path.basename(file));
|
|
166
|
+
let enableScuttle = "disable";
|
|
167
|
+
if (this.option.scuttle) {
|
|
168
|
+
if ((_a = this.option.skipScuttleAssets) === null || _a === void 0 ? void 0 : _a.includes(path.basename(file))) {
|
|
169
|
+
enableScuttle = "disable";
|
|
170
|
+
}
|
|
171
|
+
else if ((_b = this.option.scuttleExtraEntrys) === null || _b === void 0 ? void 0 : _b.includes(path.basename(file))) {
|
|
172
|
+
enableScuttle = "extraEntry";
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
enableScuttle = "enable";
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (!enableProto) {
|
|
179
|
+
console.log(`[*] disable prototype protection for ${file}`);
|
|
180
|
+
}
|
|
181
|
+
const r = yield (0, buildMultiProcess_1.buildMultiProcess)(source.source().toString(), this.moduleId2File, this.policy, this.rootModules, this.option.dev, this.moduleDependencies, enableScuttle, enableProto);
|
|
182
|
+
if (r == null) {
|
|
183
|
+
continue;
|
|
184
|
+
}
|
|
185
|
+
const hasSourceMap = source.map() != null;
|
|
186
|
+
if (hasSourceMap) {
|
|
187
|
+
compilation.updateAsset(file, new webpack_sources_1.SourceMapSource(r.code, file, r.map, source.source(), source.map()));
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
compilation.updateAsset(file, new webpack_sources_1.RawSource(r.code));
|
|
191
|
+
}
|
|
161
192
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
193
|
+
}
|
|
194
|
+
}));
|
|
195
|
+
compilation.hooks.processAssets.tap({
|
|
196
|
+
name: PluginName,
|
|
197
|
+
stage: compiler.webpack.Compilation
|
|
198
|
+
.PROCESS_ASSETS_STAGE_SUMMARIZE,
|
|
199
|
+
}, (assets) => {
|
|
200
|
+
const scuttleOptions = [];
|
|
201
|
+
for (const item of Object.entries(assets)) {
|
|
202
|
+
const file = item[0], source = item[1];
|
|
203
|
+
if (file.endsWith(".js")) {
|
|
204
|
+
const sourceCode = source.source().toString();
|
|
205
|
+
let code = "globalThis.__ru1n_qiuwen_myGlobal__";
|
|
206
|
+
let index = sourceCode.indexOf(code);
|
|
207
|
+
if (index === -1) {
|
|
208
|
+
console.warn(`[!] ${file} missing scuttle options placeholder, skip!!!!!`);
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
index += "globalThis.".length;
|
|
212
|
+
const before = sourceCode
|
|
213
|
+
.slice(0, index)
|
|
214
|
+
.split("\n");
|
|
215
|
+
const line = before.length;
|
|
216
|
+
const col = before[before.length - 1].length + 1;
|
|
217
|
+
scuttleOptions.push({
|
|
218
|
+
file: util_1.Util.relative(this.rootDir, file),
|
|
219
|
+
line,
|
|
220
|
+
col,
|
|
221
|
+
});
|
|
222
|
+
if (sourceCode.indexOf(code, index + 1) !== -1) {
|
|
223
|
+
console.warn(`[!] ${file} has multiple scuttle options placeholder, it seems that contains malformed code!!!!!`);
|
|
224
|
+
throw new Error("malformed code");
|
|
225
|
+
}
|
|
165
226
|
}
|
|
166
|
-
|
|
167
|
-
|
|
227
|
+
}
|
|
228
|
+
const opts = JSON.stringify(scuttleOptions);
|
|
229
|
+
if (opts.length > build_1.scuttleOptionsPlaceholder.length) {
|
|
230
|
+
throw new Error("scuttle options too long");
|
|
231
|
+
}
|
|
232
|
+
for (const item of Object.entries(assets)) {
|
|
233
|
+
const file = item[0], source = item[1];
|
|
234
|
+
if (file.endsWith(".js")) {
|
|
235
|
+
const sourceCode = source.source().toString();
|
|
236
|
+
const newSourceCode = sourceCode.replace(build_1.scuttleOptionsPlaceholder, opts +
|
|
237
|
+
" ".repeat(build_1.scuttleOptionsPlaceholder.length -
|
|
238
|
+
opts.length));
|
|
239
|
+
if (source.map() == null) {
|
|
240
|
+
compilation.updateAsset(file, new webpack_sources_1.RawSource(newSourceCode));
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
compilation.updateAsset(file, new webpack_sources_1.SourceMapSource(newSourceCode, file, source.map(), source.source()));
|
|
244
|
+
}
|
|
168
245
|
}
|
|
169
246
|
}
|
|
170
|
-
})
|
|
247
|
+
});
|
|
171
248
|
});
|
|
172
249
|
}
|
|
173
250
|
}
|
|
174
251
|
exports.default = RU1NSecuritySDKPlugin;
|
|
175
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxzQ0FBNkM7QUFDN0MsMENBQXVFO0FBQ3ZFLDRDQUFnRDtBQUNoRCw0Q0FBOEI7QUFDOUIsZ0RBQWtDO0FBQ2xDLHdDQUFxQztBQUVyQyxxREFBNkQ7QUFDN0QsMkRBQXdEO0FBWXhELE1BQU0sVUFBVSxHQUFHLHVCQUF1QixDQUFDO0FBRTNDLE1BQXFCLHFCQUFxQjtJQWN0QyxZQUFZLE1BQWM7UUFiMUIsYUFBYTtRQUNMLFlBQU8sR0FBVyxFQUFFLENBQUM7UUFFckIsZUFBVSxHQUF1QyxFQUFFLENBQUM7UUFDcEQsV0FBTSxHQUFXLElBQUksZUFBTSxFQUFFLENBQUM7UUFFOUIsZ0JBQVcsR0FBa0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUUvQyx5QkFBeUI7UUFDakIsa0JBQWEsR0FBRyxJQUFJLGFBQUssRUFBb0IsQ0FBQztRQUU5Qyx1QkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztRQUc1RCxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7WUFDdEIsTUFBTSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7UUFDMUIsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLGNBQWMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNoQyxNQUFNLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUNqQyxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3JCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNwQyxNQUFNLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQ25DLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN6QixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQWtCO1FBQ3BCLE9BQU87UUFDUCxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7UUFFaEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FDNUIsSUFBSSxDQUFDLE9BQU8sRUFDWixRQUFRLEVBQ1Isa0JBQWtCLENBQ3JCLENBQUM7UUFDRixJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxtQkFBbUI7WUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztZQUM5RCxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUVELFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUN2RCxXQUFXLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FDeEMsVUFBVSxFQUNWLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ1IsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDM0IsSUFBSSxNQUFNLENBQUMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO3dCQUNwQixTQUFTO29CQUNiLENBQUM7b0JBRUQsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxjQUFjLEVBQUUsQ0FBQzt3QkFDN0MsTUFBTSxNQUFNLEdBQUcsTUFBc0IsQ0FBQzt3QkFFdEMsTUFBTSxJQUFJLEdBQUcsV0FBSSxDQUFDLFFBQVEsQ0FDdEIsSUFBSSxDQUFDLE9BQU8sRUFDWixNQUFNLENBQUMsUUFBUSxDQUNsQixDQUFDO3dCQUVGLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7d0JBRXpDLElBQ0ksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQy9CLE1BQU0sQ0FBQyxRQUFRLENBQ2xCLEVBQ0gsQ0FBQzs0QkFDQyxTQUFTO3dCQUNiLENBQUM7d0JBRUQsbUJBQW1CO3dCQUNuQixNQUFNLElBQUksR0FBRyxXQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSyxFQUFFLElBQUksQ0FBQyxDQUFDO3dCQUNwRCxNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ3ZDLElBQUksTUFBTSxFQUFFLENBQUM7NEJBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUcsQ0FBQyxDQUFDOzRCQUNqQyxTQUFTO3dCQUNiLENBQUM7d0JBRUQsTUFBTSxNQUFNLEdBQWU7NEJBQ3ZCLFVBQVUsRUFBRSxFQUFFOzRCQUNkLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRTt5QkFDcEIsQ0FBQzt3QkFFRixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7NEJBQzdCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQzs0QkFDdkMsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7Z0NBQ2pCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBQSx3QkFBYyxFQUMxQixNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQzdCLENBQUM7NEJBQ04sQ0FBQzt3QkFDTCxDQUFDOzZCQUFNLENBQUM7NEJBQ0osTUFBTSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQzt3QkFDbkMsQ0FBQzt3QkFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBWSxDQUFDO3dCQUV2QyxLQUFLLE1BQU0sSUFBSSxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsc0JBQXNCLENBQzdELE1BQU0sQ0FDVCxFQUFFLENBQUM7NEJBQ0EsSUFDSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUk7Z0NBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLElBQUksRUFDeEIsQ0FBQztnQ0FDQyxTQUFTOzRCQUNiLENBQUM7NEJBRUQsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQWMsQ0FBQyxDQUFDOzRCQUUzQyxJQUNJLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUk7Z0NBQzVCLGNBQWMsRUFDaEIsQ0FBQztnQ0FDQyxTQUFTOzRCQUNiLENBQUM7NEJBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQXNCLENBQUM7NEJBRXhDLE1BQU0sVUFBVSxHQUFHLFdBQUksQ0FBQyxRQUFRLENBQzVCLElBQUksQ0FBQyxPQUFPLEVBQ1osR0FBRyxDQUFDLFFBQVEsQ0FDZixDQUFDOzRCQUVGLFNBQVM7NEJBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0NBQzFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDOzRCQUN2QyxDQUFDO3dCQUNMLENBQUM7d0JBRUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO3dCQUVwRCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7d0JBRWxDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzs0QkFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQ3JCLElBQUksRUFDSixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUN4QixDQUFDO3dCQUNOLENBQUM7b0JBQ0wsQ0FBQztnQkFDTCxDQUFDO2dCQUVELEVBQUUsQ0FBQyxhQUFhLENBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsRUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FDdkIsQ0FBQztZQUNOLENBQUMsQ0FDSixDQUFDO1lBRUYsV0FBVyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUN0QztnQkFDSSxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsV0FBVztxQkFDOUIsNkJBQTZCO2FBQ3JDLEVBQ0QsQ0FBTyxNQUFNLEVBQUUsRUFBRTtnQkFDYixLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDeEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNoQixNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO3dCQUN4QixTQUFTO29CQUNiLENBQUM7b0JBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ2pDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sSUFBQSxxQ0FBaUIsRUFDN0IsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUMxQixJQUFJLENBQUMsYUFBYSxFQUNsQixJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBSSxFQUNoQixJQUFJLENBQUMsa0JBQWtCLEVBQ3ZCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBbUIsQ0FBQyxRQUFRLENBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQ3RCLENBQ0osQ0FBQztvQkFFRixJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQzt3QkFDWixTQUFTO29CQUNiLENBQUM7b0JBRUQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQztvQkFFMUMsSUFBSSxZQUFZLEVBQUUsQ0FBQzt3QkFDZixXQUFXLENBQUMsV0FBVyxDQUNuQixJQUFJLEVBQ0osSUFBSSxpQ0FBZSxDQUNmLENBQUMsQ0FBQyxJQUFJLEVBQ04sSUFBSSxFQUNKLENBQUMsQ0FBQyxHQUFJLEVBQ04sTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUNmLE1BQU0sQ0FBQyxHQUFHLEVBQUcsQ0FDaEIsQ0FDSixDQUFDO29CQUNOLENBQUM7eUJBQU0sQ0FBQzt3QkFDSixXQUFXLENBQUMsV0FBVyxDQUNuQixJQUFJLEVBQ0osSUFBSSwyQkFBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FDeEIsQ0FBQztvQkFDTixDQUFDO2dCQUNMLENBQUM7WUFDTCxDQUFDLENBQUEsQ0FDSixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0o7QUE3TUQsd0NBNk1DIn0=
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxzQ0FBNkM7QUFDN0MsMENBQXVFO0FBQ3ZFLDRDQUFnRDtBQUNoRCw0Q0FBOEI7QUFDOUIsZ0RBQWtDO0FBQ2xDLHdDQUFxQztBQUNyQyxxREFBNkQ7QUFDN0QsMkRBQXdEO0FBQ3hELG1DQUVpQjtBQWtCakIsTUFBTSxVQUFVLEdBQUcsdUJBQXVCLENBQUM7QUFFM0MsTUFBcUIscUJBQXFCO0lBY3RDLFlBQVksTUFBYztRQWIxQixhQUFhO1FBQ0wsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUVyQixlQUFVLEdBQXVDLEVBQUUsQ0FBQztRQUNwRCxXQUFNLEdBQVcsSUFBSSxlQUFNLEVBQUUsQ0FBQztRQUU5QixnQkFBVyxHQUFrQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRS9DLHlCQUF5QjtRQUNqQixrQkFBYSxHQUFHLElBQUksYUFBSyxFQUFvQixDQUFDO1FBRTlDLHVCQUFrQixHQUFHLElBQUksR0FBRyxFQUEyQixDQUFDO1FBRzVELElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN0QixNQUFNLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztRQUMxQixDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsY0FBYyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDckIsTUFBTSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLGtCQUFrQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3BDLE1BQU0sQ0FBQyxrQkFB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
|
package/dist/util/config.js
CHANGED
|
@@ -29,6 +29,9 @@ class Config {
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
+
if (item2.enable != null) {
|
|
33
|
+
item.enable = item2.enable;
|
|
34
|
+
}
|
|
32
35
|
return item;
|
|
33
36
|
}
|
|
34
37
|
addItem(module, item) {
|
|
@@ -55,4 +58,4 @@ class Config {
|
|
|
55
58
|
}
|
|
56
59
|
}
|
|
57
60
|
exports.Config = Config;
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQW1CQSxNQUFhLE1BQU07SUFHZjtRQUZBLFdBQU0sR0FBNEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUU3QixDQUFDO0lBRVIsTUFBTSxDQUFDLGFBQWEsQ0FDeEIsS0FBaUIsRUFDakIsS0FBeUI7UUFFekIsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXBDLElBQUksS0FBSyxDQUFDLFVBQVUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUNyQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVcsQ0FBQyxRQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUN2RCxDQUFDO1lBQ04sQ0FBQztZQUVELElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ2pDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUNqQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM1QixDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7WUFDdkIsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FDakIsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUNyQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU8sQ0FBQyxRQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUN0RCxDQUNKLENBQUM7WUFDTixDQUFDO1lBRUQsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDN0IsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUN0RCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDL0IsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLENBQUMsTUFBYyxFQUFFLElBQWdCO1FBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsT0FBTyxDQUFDLE1BQWM7UUFDbEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQWMsRUFBRSxJQUF3QjtRQUNsRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQ1gsTUFBTSxFQUNOLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFFLEVBQUUsSUFBSSxDQUFDLENBQ3ZELENBQUM7UUFDTixDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU07UUFDRixPQUFPLElBQUksQ0FBQyxTQUFTLENBQ2pCLElBQUksQ0FBQyxNQUFNLEVBQ1gsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDWixJQUFJLEtBQUssWUFBWSxHQUFHLEVBQUUsQ0FBQztnQkFDdkIsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQy9DLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDLEVBQ0QsQ0FBQyxDQUNKLENBQUM7SUFDTixDQUFDO0NBQ0o7QUFqRkQsd0JBaUZDIn0=
|