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 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
+ }