1 | "use strict";
|
2 |
|
3 |
|
4 | Object.defineProperty(exports, "__esModule", { value: true });
|
5 | exports.makePatchingRequire = void 0;
|
6 | var path = require("path");
|
7 | var semver = require("semver");
|
8 |
|
9 | var moduleModule = require("module");
|
10 | var nativeModules = Object.keys(process.binding("natives"));
|
11 | var originalRequire = moduleModule.prototype.require;
|
12 | function makePatchingRequire(knownPatches) {
|
13 | var patchedModules = {};
|
14 | return function patchedRequire(moduleId) {
|
15 | var originalModule = originalRequire.apply(this, arguments);
|
16 | if (knownPatches[moduleId]) {
|
17 |
|
18 | var modulePath = moduleModule._resolveFilename(moduleId, this);
|
19 | if (patchedModules.hasOwnProperty(modulePath)) {
|
20 |
|
21 | return patchedModules[modulePath];
|
22 | }
|
23 | var moduleVersion = void 0;
|
24 | if (nativeModules.indexOf(moduleId) < 0) {
|
25 | try {
|
26 | moduleVersion = originalRequire.call(this, path.join(moduleId, "package.json")).version;
|
27 | }
|
28 | catch (e) {
|
29 |
|
30 |
|
31 | return originalModule;
|
32 | }
|
33 | }
|
34 | else {
|
35 |
|
36 |
|
37 | moduleVersion = process.version.substring(1);
|
38 | }
|
39 | var prereleaseTagIndex = moduleVersion.indexOf("-");
|
40 | if (prereleaseTagIndex >= 0) {
|
41 |
|
42 |
|
43 |
|
44 | moduleVersion = moduleVersion.substring(0, prereleaseTagIndex);
|
45 | }
|
46 | var modifiedModule = originalModule;
|
47 | for (var _i = 0, _a = knownPatches[moduleId]; _i < _a.length; _i++) {
|
48 | var modulePatcher = _a[_i];
|
49 | if (semver.satisfies(moduleVersion, modulePatcher.versionSpecifier)) {
|
50 | modifiedModule = modulePatcher.patch(modifiedModule, modulePath);
|
51 | }
|
52 | }
|
53 | return patchedModules[modulePath] = modifiedModule;
|
54 | }
|
55 | return originalModule;
|
56 | };
|
57 | }
|
58 | exports.makePatchingRequire = makePatchingRequire;
|
59 |
|
\ | No newline at end of file |