testplane 8.35.1 → 8.36.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/build/package.json +3 -1
- package/build/src/browser/cdp/selectivity/debug.d.ts +2 -0
- package/build/src/browser/cdp/selectivity/debug.js +9 -0
- package/build/src/browser/cdp/selectivity/debug.js.map +1 -0
- package/build/src/browser/cdp/selectivity/hash-provider.d.ts +6 -0
- package/build/src/browser/cdp/selectivity/hash-provider.js +81 -0
- package/build/src/browser/cdp/selectivity/hash-provider.js.map +1 -0
- package/build/src/browser/cdp/selectivity/hash-reader.d.ts +17 -0
- package/build/src/browser/cdp/selectivity/hash-reader.js +70 -0
- package/build/src/browser/cdp/selectivity/hash-reader.js.map +1 -0
- package/build/src/browser/cdp/selectivity/hash-writer.d.ts +18 -0
- package/build/src/browser/cdp/selectivity/hash-writer.js +141 -0
- package/build/src/browser/cdp/selectivity/hash-writer.js.map +1 -0
- package/build/src/browser/cdp/selectivity/index.d.ts +6 -0
- package/build/src/browser/cdp/selectivity/index.js +45 -11
- package/build/src/browser/cdp/selectivity/index.js.map +1 -1
- package/build/src/browser/cdp/selectivity/runner.d.ts +19 -0
- package/build/src/browser/cdp/selectivity/runner.js +129 -0
- package/build/src/browser/cdp/selectivity/runner.js.map +1 -0
- package/build/src/browser/cdp/selectivity/test-dependencies-reader.d.ts +10 -0
- package/build/src/browser/cdp/selectivity/test-dependencies-reader.js +41 -0
- package/build/src/browser/cdp/selectivity/test-dependencies-reader.js.map +1 -0
- package/build/src/browser/cdp/selectivity/test-dependencies-writer.d.ts +2 -2
- package/build/src/browser/cdp/selectivity/test-dependencies-writer.js +25 -14
- package/build/src/browser/cdp/selectivity/test-dependencies-writer.js.map +1 -1
- package/build/src/browser/cdp/selectivity/testplane-selectivity.d.ts +1 -0
- package/build/src/browser/cdp/selectivity/testplane-selectivity.js +29 -9
- package/build/src/browser/cdp/selectivity/testplane-selectivity.js.map +1 -1
- package/build/src/browser/cdp/selectivity/types.d.ts +5 -0
- package/build/src/browser/cdp/selectivity/utils.d.ts +8 -1
- package/build/src/browser/cdp/selectivity/utils.js +66 -3
- package/build/src/browser/cdp/selectivity/utils.js.map +1 -1
- package/build/src/bundle/cjs/index.js +207 -108
- package/build/src/config/browser-options.js +7 -2
- package/build/src/config/browser-options.js.map +1 -1
- package/build/src/config/defaults.d.ts +1 -0
- package/build/src/config/defaults.js +1 -0
- package/build/src/config/defaults.js.map +1 -1
- package/build/src/config/options.js +1 -2
- package/build/src/config/options.js.map +1 -1
- package/build/src/config/types.d.ts +1 -0
- package/build/src/config/utils.d.ts +3 -0
- package/build/src/config/utils.js +14 -1
- package/build/src/config/utils.js.map +1 -1
- package/build/src/constants/config.d.ts +1 -0
- package/build/src/constants/config.js +2 -1
- package/build/src/constants/config.js.map +1 -1
- package/build/src/events/index.d.ts +4 -0
- package/build/src/events/index.js +1 -0
- package/build/src/events/index.js.map +1 -1
- package/build/src/runner/index.d.ts +5 -2
- package/build/src/runner/index.js +11 -4
- package/build/src/runner/index.js.map +1 -1
- package/build/src/testplane.js +8 -1
- package/build/src/testplane.js.map +1 -1
- package/build/src/types/index.d.ts +11 -0
- package/build/src/types/index.js.map +1 -1
- package/build/src/utils/typescript.js +3 -0
- package/build/src/utils/typescript.js.map +1 -1
- package/build/src/utils/workers-registry.js +4 -0
- package/build/src/utils/workers-registry.js.map +1 -1
- package/build/src/worker/runner/index.js +7 -5
- package/build/src/worker/runner/index.js.map +1 -1
- package/package.json +3 -1
- package/build/src/browser/cdp/selectivity/file-hash-provider.d.ts +0 -4
- package/build/src/browser/cdp/selectivity/file-hash-provider.js +0 -28
- package/build/src/browser/cdp/selectivity/file-hash-provider.js.map +0 -1
- package/build/src/browser/cdp/selectivity/file-hash-writer.d.ts +0 -17
- package/build/src/browser/cdp/selectivity/file-hash-writer.js +0 -123
- package/build/src/browser/cdp/selectivity/file-hash-writer.js.map +0 -1
|
@@ -0,0 +1,129 @@
|
|
|
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.SelectivityRunner = void 0;
|
|
7
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
8
|
+
const debug_1 = require("./debug");
|
|
9
|
+
const hash_reader_1 = require("./hash-reader");
|
|
10
|
+
const events_1 = require("../../../events");
|
|
11
|
+
const hash_writer_1 = require("./hash-writer");
|
|
12
|
+
const test_dependencies_reader_1 = require("./test-dependencies-reader");
|
|
13
|
+
/** Called at the start of testplane run per each browser */
|
|
14
|
+
const shouldDisableBrowserSelectivity = lodash_1.default.memoize(async (config, browserId) => {
|
|
15
|
+
if (!config.selectivity.enabled) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
if (!config.selectivity.disableSelectivityPatterns.length) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
const hashReader = (0, hash_reader_1.getHashReader)(config.selectivity.testDependenciesPath, config.selectivity.compression);
|
|
22
|
+
return new Promise(resolve => {
|
|
23
|
+
let isSettled = false;
|
|
24
|
+
Promise.all(config.selectivity.disableSelectivityPatterns.map(pattern => {
|
|
25
|
+
return hashReader
|
|
26
|
+
.patternHasChanged(pattern)
|
|
27
|
+
.then(hasChanged => {
|
|
28
|
+
if (hasChanged && !isSettled) {
|
|
29
|
+
isSettled = true;
|
|
30
|
+
(0, debug_1.debugSelectivity)(`Disabling selectivity for ${browserId}: file change by pattern "${pattern}" is detected`);
|
|
31
|
+
resolve(true);
|
|
32
|
+
}
|
|
33
|
+
})
|
|
34
|
+
.catch(err => {
|
|
35
|
+
if (!isSettled) {
|
|
36
|
+
isSettled = true;
|
|
37
|
+
(0, debug_1.debugSelectivity)(`Disabling selectivity for ${browserId}: got an error while checking 'disableSelectivityPatterns': %O`, err);
|
|
38
|
+
resolve(true);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
})).then(() => {
|
|
42
|
+
if (!isSettled) {
|
|
43
|
+
(0, debug_1.debugSelectivity)(`None of 'disableSelectivityPatterns' is changed for ${browserId}`);
|
|
44
|
+
resolve(false);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
}, config => {
|
|
49
|
+
const { enabled, testDependenciesPath, compression, disableSelectivityPatterns } = config.selectivity;
|
|
50
|
+
return enabled
|
|
51
|
+
? enabled + "#" + testDependenciesPath + "#" + compression + "#" + disableSelectivityPatterns.join("#")
|
|
52
|
+
: "";
|
|
53
|
+
});
|
|
54
|
+
const shouldDisableTestBySelectivity = lodash_1.default.memoize(async (config, test) => {
|
|
55
|
+
const { enabled, testDependenciesPath, compression } = config.selectivity;
|
|
56
|
+
if (!enabled) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
const testDepsReader = (0, test_dependencies_reader_1.getTestDependenciesReader)(testDependenciesPath, compression);
|
|
60
|
+
const hashReader = (0, hash_reader_1.getHashReader)(testDependenciesPath, compression);
|
|
61
|
+
const testDeps = await testDepsReader.getFor(test);
|
|
62
|
+
if (!testDeps.js.length) {
|
|
63
|
+
(0, debug_1.debugSelectivity)(`Not disabling "${test.fullTitle()}" as it has no js deps and therefore it was considered as new`);
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
const changedDeps = await hashReader.getTestChangedDeps(testDeps);
|
|
67
|
+
if (changedDeps) {
|
|
68
|
+
(0, debug_1.debugSelectivity)(`Not disabling "${test.fullTitle()}" as its dependencies were changed: %O`, changedDeps);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
(0, debug_1.debugSelectivity)(`Disabling "${test.fullTitle()}" as its dependencies were not changed`);
|
|
72
|
+
}
|
|
73
|
+
return !changedDeps;
|
|
74
|
+
}, (config, test) => {
|
|
75
|
+
const { enabled, testDependenciesPath, compression } = config.selectivity;
|
|
76
|
+
return enabled ? enabled + "#" + testDependenciesPath + "#" + compression + "#" + test.id : "";
|
|
77
|
+
});
|
|
78
|
+
const onTestDependencies = (context, data) => {
|
|
79
|
+
const hashWriter = (0, hash_writer_1.getHashWriter)(context.testDependenciesPath, context.compression);
|
|
80
|
+
hashWriter.addTestDependencyHashes(data);
|
|
81
|
+
};
|
|
82
|
+
class SelectivityRunner {
|
|
83
|
+
static create(...args) {
|
|
84
|
+
return new this(...args);
|
|
85
|
+
}
|
|
86
|
+
constructor(mainRunner, config, runTestFn, opts) {
|
|
87
|
+
this._browserSelectivityDisabledCache = {};
|
|
88
|
+
this._processingTestPromises = [];
|
|
89
|
+
this._config = config;
|
|
90
|
+
this._runTestFn = runTestFn;
|
|
91
|
+
this._opts = opts;
|
|
92
|
+
if (this._opts?.shouldDisableSelectivity) {
|
|
93
|
+
(0, debug_1.debugSelectivity)("Test filter is specified, disabling selectivity");
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
mainRunner.on(events_1.MasterEvents.TEST_DEPENDENCIES, onTestDependencies);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
_shouldDisableSelectivityForBrowser(browserId) {
|
|
100
|
+
if (this._browserSelectivityDisabledCache[browserId]) {
|
|
101
|
+
return this._browserSelectivityDisabledCache[browserId];
|
|
102
|
+
}
|
|
103
|
+
const browserConfig = this._config.forBrowser(browserId);
|
|
104
|
+
this._browserSelectivityDisabledCache[browserId] = shouldDisableBrowserSelectivity(browserConfig, browserId);
|
|
105
|
+
return this._browserSelectivityDisabledCache[browserId];
|
|
106
|
+
}
|
|
107
|
+
runIfNecessary(test, browserId) {
|
|
108
|
+
const browserConfig = this._config.forBrowser(browserId);
|
|
109
|
+
const isSelectivityEnabledForBrowser = browserConfig.selectivity.enabled;
|
|
110
|
+
if (!isSelectivityEnabledForBrowser || this._opts?.shouldDisableSelectivity) {
|
|
111
|
+
return this._runTestFn(test, browserId);
|
|
112
|
+
}
|
|
113
|
+
this._processingTestPromises.push((async () => {
|
|
114
|
+
const shouldDisableBrowserSelectivity = await this._shouldDisableSelectivityForBrowser(browserId);
|
|
115
|
+
if (shouldDisableBrowserSelectivity) {
|
|
116
|
+
return this._runTestFn(test, browserId);
|
|
117
|
+
}
|
|
118
|
+
const shouldDisableTest = await shouldDisableTestBySelectivity(browserConfig, test);
|
|
119
|
+
if (!shouldDisableTest) {
|
|
120
|
+
this._runTestFn(test, browserId);
|
|
121
|
+
}
|
|
122
|
+
})());
|
|
123
|
+
}
|
|
124
|
+
waitForTestsToRun() {
|
|
125
|
+
return Promise.all(this._processingTestPromises);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
exports.SelectivityRunner = SelectivityRunner;
|
|
129
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference types="lodash" />
|
|
2
|
+
import type { Test } from "../../../types";
|
|
3
|
+
import type { NormalizedDependencies, SelectivityCompressionType } from "./types";
|
|
4
|
+
export declare class TestDependenciesReader {
|
|
5
|
+
private readonly _selectivityTestsPath;
|
|
6
|
+
private readonly _compression;
|
|
7
|
+
constructor(selectivityRootPath: string, compression: SelectivityCompressionType);
|
|
8
|
+
getFor(test: Test): Promise<NormalizedDependencies>;
|
|
9
|
+
}
|
|
10
|
+
export declare const getTestDependenciesReader: ((selectivityRootPath: string, compression: SelectivityCompressionType) => TestDependenciesReader) & import("lodash").MemoizedFunction;
|
|
@@ -0,0 +1,41 @@
|
|
|
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.getTestDependenciesReader = exports.TestDependenciesReader = void 0;
|
|
7
|
+
const lodash_1 = require("lodash");
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
const utils_1 = require("./utils");
|
|
10
|
+
class TestDependenciesReader {
|
|
11
|
+
constructor(selectivityRootPath, compression) {
|
|
12
|
+
this._selectivityTestsPath = node_path_1.default.join(selectivityRootPath, "tests");
|
|
13
|
+
this._compression = compression;
|
|
14
|
+
}
|
|
15
|
+
async getFor(test) {
|
|
16
|
+
const testDeps = await (0, utils_1.readTestDependencies)(this._selectivityTestsPath, test, this._compression);
|
|
17
|
+
let result = { css: [], js: [], modules: [] };
|
|
18
|
+
for (const browserId of Object.keys(testDeps)) {
|
|
19
|
+
const depTypes = Object.keys(testDeps[browserId]);
|
|
20
|
+
if (!depTypes.length) {
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
else if (depTypes.length === 1) {
|
|
24
|
+
result = (0, utils_1.mergeSourceDependencies)(result, testDeps[browserId][depTypes[0]]);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
let browserDeps = testDeps[browserId][depTypes[0]];
|
|
28
|
+
for (let i = 1; i < depTypes.length; i++) {
|
|
29
|
+
browserDeps = (0, utils_1.mergeSourceDependencies)(browserDeps, testDeps[browserId][depTypes[i]]);
|
|
30
|
+
}
|
|
31
|
+
result = (0, utils_1.mergeSourceDependencies)(result, browserDeps);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.TestDependenciesReader = TestDependenciesReader;
|
|
38
|
+
exports.getTestDependenciesReader = (0, lodash_1.memoize)((selectivityRootPath, compression) => {
|
|
39
|
+
return new TestDependenciesReader(selectivityRootPath, compression);
|
|
40
|
+
}, (selectivityRootPath, compression) => `${selectivityRootPath}#${compression}`);
|
|
41
|
+
//# sourceMappingURL=test-dependencies-reader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-dependencies-reader.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/test-dependencies-reader.ts"],"names":[],"mappings":";;;;;;AAAA,mCAAiC;AACjC,0DAA6B;AAC7B,mCAAwE;AAIxE,MAAa,sBAAsB;IAI/B,YAAY,mBAA2B,EAAE,WAAuC;QAC5E,IAAI,CAAC,qBAAqB,GAAG,mBAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;QACrE,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAU;QACnB,MAAM,QAAQ,GAAG,MAAM,IAAA,4BAAoB,EAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACjG,IAAI,MAAM,GAA2B,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAEtE,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;YAElD,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACnB,SAAS;YACb,CAAC;iBAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,GAAG,IAAA,+BAAuB,EAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/E,CAAC;iBAAM,CAAC;gBACJ,IAAI,WAAW,GAA2B,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE3E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACvC,WAAW,GAAG,IAAA,+BAAuB,EAAC,WAAW,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzF,CAAC;gBAED,MAAM,GAAG,IAAA,+BAAuB,EAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAC1D,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AAjCD,wDAiCC;AAEY,QAAA,yBAAyB,GAAG,IAAA,gBAAO,EAC5C,CAAC,mBAA2B,EAAE,WAAuC,EAA0B,EAAE;IAC7F,OAAO,IAAI,sBAAsB,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;AACxE,CAAC,EACD,CAAC,mBAAmB,EAAE,WAAW,EAAE,EAAE,CAAC,GAAG,mBAAmB,IAAI,WAAW,EAAE,CAChF,CAAC"}
|
|
@@ -5,7 +5,7 @@ export declare class TestDependenciesWriter {
|
|
|
5
5
|
private readonly _selectivityTestsPath;
|
|
6
6
|
private readonly _compression;
|
|
7
7
|
private _directoryCreated;
|
|
8
|
-
constructor(
|
|
8
|
+
constructor(testDependenciesPath: string, compression: SelectivityCompressionType);
|
|
9
9
|
saveFor(test: Test, browserDeps: NormalizedDependencies, testplaneDeps: NormalizedDependencies): Promise<void>;
|
|
10
10
|
}
|
|
11
|
-
export declare const getTestDependenciesWriter: ((
|
|
11
|
+
export declare const getTestDependenciesWriter: ((testDependenciesPath: string, compression: SelectivityCompressionType) => TestDependenciesWriter) & import("lodash").MemoizedFunction;
|
|
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getTestDependenciesWriter = exports.TestDependenciesWriter = void 0;
|
|
7
7
|
const lodash_1 = require("lodash");
|
|
8
|
-
const
|
|
8
|
+
const proper_lockfile_1 = __importDefault(require("proper-lockfile"));
|
|
9
9
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
10
10
|
const utils_1 = require("./utils");
|
|
11
11
|
const json_utils_1 = require("./json-utils");
|
|
@@ -30,9 +30,9 @@ const areDepsSame = (browserDepsA, browserDepsB) => {
|
|
|
30
30
|
return true;
|
|
31
31
|
};
|
|
32
32
|
class TestDependenciesWriter {
|
|
33
|
-
constructor(
|
|
33
|
+
constructor(testDependenciesPath, compression) {
|
|
34
34
|
this._directoryCreated = false;
|
|
35
|
-
this._selectivityTestsPath =
|
|
35
|
+
this._selectivityTestsPath = (0, utils_1.getSelectivityTestsPath)(testDependenciesPath);
|
|
36
36
|
this._compression = compression;
|
|
37
37
|
}
|
|
38
38
|
async saveFor(test, browserDeps, testplaneDeps) {
|
|
@@ -40,19 +40,30 @@ class TestDependenciesWriter {
|
|
|
40
40
|
await fs_extra_1.default.ensureDir(this._selectivityTestsPath);
|
|
41
41
|
this._directoryCreated = true;
|
|
42
42
|
}
|
|
43
|
-
const testDepsPath =
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
43
|
+
const testDepsPath = (0, utils_1.getTestDependenciesPath)(this._selectivityTestsPath, test);
|
|
44
|
+
const releaseLock = await proper_lockfile_1.default.lock(testDepsPath, {
|
|
45
|
+
stale: 5000,
|
|
46
|
+
update: 1000,
|
|
47
|
+
retries: { minTimeout: 100, maxTimeout: 1000, retries: 15 },
|
|
48
|
+
realpath: false,
|
|
49
|
+
});
|
|
50
|
+
try {
|
|
51
|
+
const testDeps = await (0, utils_1.readTestDependencies)(this._selectivityTestsPath, test, this._compression);
|
|
52
|
+
if (areDepsSame(testDeps[test.browserId]?.browser, browserDeps) &&
|
|
53
|
+
areDepsSame(testDeps[test.browserId]?.testplane, testplaneDeps)) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
testDeps[test.browserId] = { browser: browserDeps, testplane: testplaneDeps };
|
|
57
|
+
(0, utils_1.shallowSortObject)(testDeps);
|
|
58
|
+
await (0, json_utils_1.writeJsonWithCompression)(testDepsPath, testDeps, this._compression);
|
|
59
|
+
}
|
|
60
|
+
finally {
|
|
61
|
+
await releaseLock();
|
|
48
62
|
}
|
|
49
|
-
testDeps[test.browserId] = { browser: browserDeps, testplane: testplaneDeps };
|
|
50
|
-
(0, utils_1.shallowSortObject)(testDeps);
|
|
51
|
-
await (0, json_utils_1.writeJsonWithCompression)(testDepsPath, testDeps, this._compression);
|
|
52
63
|
}
|
|
53
64
|
}
|
|
54
65
|
exports.TestDependenciesWriter = TestDependenciesWriter;
|
|
55
|
-
exports.getTestDependenciesWriter = (0, lodash_1.memoize)((
|
|
56
|
-
return new TestDependenciesWriter(
|
|
57
|
-
});
|
|
66
|
+
exports.getTestDependenciesWriter = (0, lodash_1.memoize)((testDependenciesPath, compression) => {
|
|
67
|
+
return new TestDependenciesWriter(testDependenciesPath, compression);
|
|
68
|
+
}, (testDependenciesPath, compression) => `${testDependenciesPath}#${compression}`);
|
|
58
69
|
//# sourceMappingURL=test-dependencies-writer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-dependencies-writer.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/test-dependencies-writer.ts"],"names":[],"mappings":";;;;;;AAAA,mCAAiC;AACjC,
|
|
1
|
+
{"version":3,"file":"test-dependencies-writer.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/test-dependencies-writer.ts"],"names":[],"mappings":";;;;;;AAAA,mCAAiC;AACjC,sEAAuC;AACvC,wDAA0B;AAC1B,mCAAoH;AAGpH,6CAAwD;AAExD,MAAM,WAAW,GAAG,CAAC,YAAqC,EAAE,YAAqC,EAAW,EAAE;IAC1G,MAAM,KAAK,GAAwC,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAU,CAAC;IAErF,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACxG,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,0CAA0C;IAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClD,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,MAAa,sBAAsB;IAK/B,YAAY,oBAA4B,EAAE,WAAuC;QAFzE,sBAAiB,GAAG,KAAK,CAAC;QAG9B,IAAI,CAAC,qBAAqB,GAAG,IAAA,+BAAuB,EAAC,oBAAoB,CAAC,CAAC;QAC3E,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,OAAO,CACT,IAAU,EACV,WAAmC,EACnC,aAAqC;QAErC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC1B,MAAM,kBAAE,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAC/C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAClC,CAAC;QAED,MAAM,YAAY,GAAG,IAAA,+BAAuB,EAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;QAE/E,MAAM,WAAW,GAAG,MAAM,yBAAQ,CAAC,IAAI,CAAC,YAAY,EAAE;YAClD,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;YAC3D,QAAQ,EAAE,KAAK;SAClB,CAAC,CAAC;QAEH,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,IAAA,4BAAoB,EAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAEjG,IACI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC;gBAC3D,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,EACjE,CAAC;gBACC,OAAO;YACX,CAAC;YAED,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;YAE9E,IAAA,yBAAiB,EAAC,QAAQ,CAAC,CAAC;YAE5B,MAAM,IAAA,qCAAwB,EAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9E,CAAC;gBAAS,CAAC;YACP,MAAM,WAAW,EAAE,CAAC;QACxB,CAAC;IACL,CAAC;CACJ;AAhDD,wDAgDC;AAEY,QAAA,yBAAyB,GAAG,IAAA,gBAAO,EAC5C,CAAC,oBAA4B,EAAE,WAAuC,EAA0B,EAAE;IAC9F,OAAO,IAAI,sBAAsB,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC;AACzE,CAAC,EACD,CAAC,oBAAoB,EAAE,WAAW,EAAE,EAAE,CAAC,GAAG,oBAAoB,IAAI,WAAW,EAAE,CAClF,CAAC"}
|
|
@@ -2,3 +2,4 @@ export declare const disableCollectingTestplaneDependencies: () => void;
|
|
|
2
2
|
export declare const enableCollectingTestplaneDependencies: () => void;
|
|
3
3
|
export declare const getCollectedTestplaneDependencies: () => string[];
|
|
4
4
|
export declare const runWithTestplaneDependenciesCollecting: <T>(fn: () => Promise<T>) => Promise<T>;
|
|
5
|
+
export declare const readTestFileWithTestplaneDependenciesCollecting: <T>(file: string, fn: () => Promise<T>) => Promise<T>;
|
|
@@ -3,12 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.runWithTestplaneDependenciesCollecting = exports.getCollectedTestplaneDependencies = exports.enableCollectingTestplaneDependencies = exports.disableCollectingTestplaneDependencies = void 0;
|
|
6
|
+
exports.readTestFileWithTestplaneDependenciesCollecting = exports.runWithTestplaneDependenciesCollecting = exports.getCollectedTestplaneDependencies = exports.enableCollectingTestplaneDependencies = exports.disableCollectingTestplaneDependencies = void 0;
|
|
7
7
|
const path_1 = __importDefault(require("path"));
|
|
8
8
|
const module_1 = require("module");
|
|
9
9
|
const async_hooks_1 = require("async_hooks");
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
10
11
|
const TypedModule = module_1.Module;
|
|
11
12
|
const testDependenciesStorage = new async_hooks_1.AsyncLocalStorage();
|
|
13
|
+
const testFileDependenciesCache = new Map();
|
|
12
14
|
let disableCollectingDependenciesCb = null;
|
|
13
15
|
const disableCollectingTestplaneDependencies = () => {
|
|
14
16
|
if (disableCollectingDependenciesCb) {
|
|
@@ -21,24 +23,23 @@ const enableCollectingTestplaneDependencies = () => {
|
|
|
21
23
|
if (disableCollectingDependenciesCb) {
|
|
22
24
|
return;
|
|
23
25
|
}
|
|
24
|
-
const
|
|
26
|
+
const originalResolveFileName = TypedModule._resolveFilename;
|
|
25
27
|
disableCollectingDependenciesCb = () => {
|
|
26
|
-
TypedModule.
|
|
28
|
+
TypedModule._resolveFilename = originalResolveFileName;
|
|
27
29
|
};
|
|
28
|
-
TypedModule.
|
|
30
|
+
TypedModule._resolveFilename = function () {
|
|
31
|
+
// eslint-disable-next-line prefer-rest-params
|
|
32
|
+
const result = originalResolveFileName.apply(this, arguments);
|
|
29
33
|
try {
|
|
30
34
|
const store = disableCollectingDependenciesCb ? testDependenciesStorage.getStore() : null;
|
|
31
|
-
|
|
32
|
-
const absPath = store ? TypedModule._resolveFilename.apply(this, arguments) : null;
|
|
33
|
-
const relPath = absPath && path_1.default.isAbsolute(absPath) ? path_1.default.relative(process.cwd(), absPath) : null;
|
|
35
|
+
const relPath = result && path_1.default.isAbsolute(result) ? path_1.default.relative(process.cwd(), result) : null;
|
|
34
36
|
if (store && relPath) {
|
|
35
37
|
const posixRelPath = path_1.default.sep === path_1.default.posix.sep ? relPath : relPath.replaceAll(path_1.default.sep, path_1.default.posix.sep);
|
|
36
38
|
store.jsTestplaneDeps?.add(posixRelPath);
|
|
37
39
|
}
|
|
38
40
|
}
|
|
39
41
|
catch { } // eslint-disable-line no-empty
|
|
40
|
-
|
|
41
|
-
return originalModuleLoad.apply(this, arguments);
|
|
42
|
+
return result;
|
|
42
43
|
};
|
|
43
44
|
};
|
|
44
45
|
exports.enableCollectingTestplaneDependencies = enableCollectingTestplaneDependencies;
|
|
@@ -53,4 +54,23 @@ const runWithTestplaneDependenciesCollecting = (fn) => {
|
|
|
53
54
|
return testDependenciesStorage.run(store, fn);
|
|
54
55
|
};
|
|
55
56
|
exports.runWithTestplaneDependenciesCollecting = runWithTestplaneDependenciesCollecting;
|
|
57
|
+
const readTestFileWithTestplaneDependenciesCollecting = (file, fn) => {
|
|
58
|
+
if (!disableCollectingDependenciesCb) {
|
|
59
|
+
return fn();
|
|
60
|
+
}
|
|
61
|
+
const store = testDependenciesStorage.getStore();
|
|
62
|
+
const jsTestplaneDeps = store && store.jsTestplaneDeps;
|
|
63
|
+
if (!jsTestplaneDeps) {
|
|
64
|
+
return fn();
|
|
65
|
+
}
|
|
66
|
+
const cachedDependencies = testFileDependenciesCache.get(file);
|
|
67
|
+
if (cachedDependencies) {
|
|
68
|
+
cachedDependencies.forEach(dependency => jsTestplaneDeps.add(dependency));
|
|
69
|
+
return fn();
|
|
70
|
+
}
|
|
71
|
+
return fn().finally(() => {
|
|
72
|
+
testFileDependenciesCache.set(file, Array.from(jsTestplaneDeps).sort());
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
exports.readTestFileWithTestplaneDependenciesCollecting = readTestFileWithTestplaneDependenciesCollecting;
|
|
56
76
|
//# sourceMappingURL=testplane-selectivity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testplane-selectivity.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/testplane-selectivity.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,mCAAiD;AACjD,6CAAgD;AAEhD,MAAM,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"testplane-selectivity.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/testplane-selectivity.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,3 +13,8 @@ export declare const Compression: {
|
|
|
13
13
|
readonly ZSTD: "zstd";
|
|
14
14
|
};
|
|
15
15
|
export type SelectivityCompressionType = (typeof Compression)[keyof typeof Compression];
|
|
16
|
+
export type HashFileContents = {
|
|
17
|
+
files: Record<string, string>;
|
|
18
|
+
modules: Record<string, string>;
|
|
19
|
+
patterns: Record<string, string>;
|
|
20
|
+
};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { type RawSourceMap } from "source-map";
|
|
2
2
|
import type { CDPRuntime } from "../domains/runtime";
|
|
3
3
|
import type { CDPSessionId } from "../types";
|
|
4
|
-
import type { NormalizedDependencies } from "./types";
|
|
4
|
+
import type { HashFileContents, NormalizedDependencies, SelectivityCompressionType } from "./types";
|
|
5
|
+
import type { Test } from "../../../types";
|
|
5
6
|
/**
|
|
6
7
|
* Tries to fetch text by url from node.js, then falls back to "fetch" from browser, if node.js fetch fails
|
|
7
8
|
* @param url text url
|
|
@@ -39,3 +40,9 @@ export declare const transformSourceDependencies: (cssDependencies: string[], js
|
|
|
39
40
|
/** Merges two sorted deps array into one with uniq values */
|
|
40
41
|
export declare const mergeSourceDependencies: (a: NormalizedDependencies, b: NormalizedDependencies) => NormalizedDependencies;
|
|
41
42
|
export declare const shallowSortObject: (obj: Record<string, unknown>) => void;
|
|
43
|
+
export declare const getSelectivityHashesPath: (testDependenciesPath: string) => string;
|
|
44
|
+
export declare const readHashFileContents: (selectivityHashesPath: string, compression: SelectivityCompressionType) => Promise<HashFileContents>;
|
|
45
|
+
export declare const getSelectivityTestsPath: (testDependenciesPath: string) => string;
|
|
46
|
+
export declare const getTestDependenciesPath: (selectivityTestsPath: string, test: Test) => string;
|
|
47
|
+
/** @returns `Promise<Record<BrowserID, Record<DepType, NormalizedDependencies>>>` */
|
|
48
|
+
export declare const readTestDependencies: (selectivityTestsPath: string, test: Test, compression: SelectivityCompressionType) => Promise<Record<string, Record<string, NormalizedDependencies>>>;
|
|
@@ -1,16 +1,41 @@
|
|
|
1
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 (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
27
|
};
|
|
5
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.shallowSortObject = exports.mergeSourceDependencies = exports.transformSourceDependencies = exports.hasProtocol = exports.extractSourceFilesDeps = exports.patchSourceMapSources = exports.fetchTextWithBrowserFallback = void 0;
|
|
29
|
+
exports.readTestDependencies = exports.getTestDependenciesPath = exports.getSelectivityTestsPath = exports.readHashFileContents = exports.getSelectivityHashesPath = exports.shallowSortObject = exports.mergeSourceDependencies = exports.transformSourceDependencies = exports.hasProtocol = exports.extractSourceFilesDeps = exports.patchSourceMapSources = exports.fetchTextWithBrowserFallback = void 0;
|
|
7
30
|
const lodash_1 = require("lodash");
|
|
8
31
|
const source_map_1 = require("source-map");
|
|
9
32
|
const fs_1 = __importDefault(require("fs"));
|
|
10
33
|
const path_1 = __importDefault(require("path"));
|
|
11
34
|
const url_1 = require("url");
|
|
35
|
+
const logger = __importStar(require("../../../utils/logger"));
|
|
12
36
|
const fs_2 = require("../../../utils/fs");
|
|
13
37
|
const constants_1 = require("./constants");
|
|
38
|
+
const json_utils_1 = require("./json-utils");
|
|
14
39
|
/**
|
|
15
40
|
* Tries to fetch text by url from node.js, then falls back to "fetch" from browser, if node.js fetch fails
|
|
16
41
|
* @param url text url
|
|
@@ -110,6 +135,17 @@ const hasProtocol = (fileUrlLikePath) => {
|
|
|
110
135
|
}
|
|
111
136
|
};
|
|
112
137
|
exports.hasProtocol = hasProtocol;
|
|
138
|
+
const getProtocol = (fileUrlLikePath) => {
|
|
139
|
+
if (!fileUrlLikePath.includes("://")) {
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
try {
|
|
143
|
+
return new url_1.URL(fileUrlLikePath).protocol;
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
};
|
|
113
149
|
const ensurePosixRelativeDependencyPathExists = (0, lodash_1.memoize)((posixRelativePath) => {
|
|
114
150
|
const relativePath = posixRelativePath.replaceAll(path_1.default.posix.sep, path_1.default.sep);
|
|
115
151
|
if (fs_1.default.existsSync(relativePath)) {
|
|
@@ -121,6 +157,9 @@ const ensurePosixRelativeDependencyPathExists = (0, lodash_1.memoize)((posixRela
|
|
|
121
157
|
"Configuring 'sourceRoot' in Testplane selectivity config also might help",
|
|
122
158
|
].join("\n"));
|
|
123
159
|
});
|
|
160
|
+
const warnUnsupportedProtocol = (0, lodash_1.memoize)((protocol, dependency) => {
|
|
161
|
+
logger.warn(`Selectivity: Ignoring dependencies of unsupported protocol "${protocol}" (example: "${dependency}")`);
|
|
162
|
+
});
|
|
124
163
|
/**
|
|
125
164
|
* @param cssDependencies SORTED uniq array of css dependenciy URI's
|
|
126
165
|
* @param jsDependencies SORTED uniq array of js dependenciy URI's
|
|
@@ -133,8 +172,10 @@ const transformSourceDependencies = (cssDependencies, jsDependencies) => {
|
|
|
133
172
|
const modules = [];
|
|
134
173
|
const classifyDependency = (dependency, typedResultArray) => {
|
|
135
174
|
dependency = decodeURIComponent((0, fs_2.softFileURLToPath)(dependency));
|
|
136
|
-
|
|
137
|
-
|
|
175
|
+
const protocol = getProtocol(dependency);
|
|
176
|
+
if (protocol) {
|
|
177
|
+
warnUnsupportedProtocol(protocol, dependency);
|
|
178
|
+
return;
|
|
138
179
|
}
|
|
139
180
|
const dependencyRelativePath = path_1.default.posix.relative(path_1.default.posix.resolve(), path_1.default.posix.resolve(dependency));
|
|
140
181
|
const nodeModulesLabelPos = dependencyRelativePath.indexOf(nodeModulesLabel);
|
|
@@ -237,4 +278,26 @@ const shallowSortObject = (obj) => {
|
|
|
237
278
|
}
|
|
238
279
|
};
|
|
239
280
|
exports.shallowSortObject = shallowSortObject;
|
|
281
|
+
const getSelectivityHashesPath = (testDependenciesPath) => path_1.default.join(testDependenciesPath, "hashes.json");
|
|
282
|
+
exports.getSelectivityHashesPath = getSelectivityHashesPath;
|
|
283
|
+
const readHashFileContents = (selectivityHashesPath, compression) => (0, json_utils_1.readJsonWithCompression)(selectivityHashesPath, compression, {
|
|
284
|
+
defaultValue: { files: {}, modules: {}, patterns: {} },
|
|
285
|
+
})
|
|
286
|
+
.catch(() => ({ files: {}, modules: {}, patterns: {} }))
|
|
287
|
+
.then(res => {
|
|
288
|
+
res.files ||= {};
|
|
289
|
+
res.modules ||= {};
|
|
290
|
+
res.patterns ||= {};
|
|
291
|
+
return res;
|
|
292
|
+
});
|
|
293
|
+
exports.readHashFileContents = readHashFileContents;
|
|
294
|
+
const getSelectivityTestsPath = (testDependenciesPath) => path_1.default.join(testDependenciesPath, "tests");
|
|
295
|
+
exports.getSelectivityTestsPath = getSelectivityTestsPath;
|
|
296
|
+
const getTestDependenciesPath = (selectivityTestsPath, test) => path_1.default.join(selectivityTestsPath, `${test.id}.json`);
|
|
297
|
+
exports.getTestDependenciesPath = getTestDependenciesPath;
|
|
298
|
+
/** @returns `Promise<Record<BrowserID, Record<DepType, NormalizedDependencies>>>` */
|
|
299
|
+
const readTestDependencies = (selectivityTestsPath, test, compression) => (0, json_utils_1.readJsonWithCompression)((0, exports.getTestDependenciesPath)(selectivityTestsPath, test), compression, {
|
|
300
|
+
defaultValue: {},
|
|
301
|
+
}).catch(() => ({}));
|
|
302
|
+
exports.readTestDependencies = readTestDependencies;
|
|
240
303
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/utils.ts"],"names":[],"mappings":"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"}
|