flakiness 0.311.0 → 0.312.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/lib/cli/cli.js +24 -489
- package/package.json +4 -4
- package/types/tsconfig.tsbuildinfo +1 -1
package/lib/cli/cli.js
CHANGED
|
@@ -610,10 +610,17 @@ var Ranges;
|
|
|
610
610
|
}
|
|
611
611
|
Ranges2.singleRange = singleRange;
|
|
612
612
|
function unionAll(ranges) {
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
613
|
+
const level = Array.from(ranges);
|
|
614
|
+
let length = level.length;
|
|
615
|
+
if (!length)
|
|
616
|
+
return Ranges2.EMPTY;
|
|
617
|
+
while (length > 1) {
|
|
618
|
+
let next = 0;
|
|
619
|
+
for (let i = 0; i < length; i += 2)
|
|
620
|
+
level[next++] = i + 1 < length ? union(level[i], level[i + 1]) : level[i];
|
|
621
|
+
length = next;
|
|
622
|
+
}
|
|
623
|
+
return level[0];
|
|
617
624
|
}
|
|
618
625
|
Ranges2.unionAll = unionAll;
|
|
619
626
|
function unionAll_2(rangesIterable) {
|
|
@@ -1138,7 +1145,7 @@ import { Temporal as Temporal2 } from "temporal-polyfill";
|
|
|
1138
1145
|
// ../package.json
|
|
1139
1146
|
var package_default = {
|
|
1140
1147
|
name: "@flakiness/monorepo",
|
|
1141
|
-
version: "0.
|
|
1148
|
+
version: "0.312.0",
|
|
1142
1149
|
type: "module",
|
|
1143
1150
|
private: true,
|
|
1144
1151
|
scripts: {
|
|
@@ -1158,12 +1165,12 @@ var package_default = {
|
|
|
1158
1165
|
devDependencies: {
|
|
1159
1166
|
"@flakiness/playwright": "catalog:",
|
|
1160
1167
|
"@playwright/test": "catalog:",
|
|
1161
|
-
"@types/node": "^22.20.
|
|
1168
|
+
"@types/node": "^22.20.5",
|
|
1162
1169
|
esbuild: "^0.27.7",
|
|
1163
1170
|
flakiness: "workspace:*",
|
|
1164
1171
|
kubik: "^0.24.0",
|
|
1165
1172
|
"smee-client": "^5.0.0",
|
|
1166
|
-
tsx: "^4.23.
|
|
1173
|
+
tsx: "^4.23.15",
|
|
1167
1174
|
typescript: "^7.0.2"
|
|
1168
1175
|
}
|
|
1169
1176
|
};
|
|
@@ -2031,131 +2038,11 @@ async function downloadRun(api, project, runId) {
|
|
|
2031
2038
|
// ../server/lib/common/stats/envGroup.js
|
|
2032
2039
|
import { FlakinessReport } from "@flakiness/flakiness-report";
|
|
2033
2040
|
|
|
2034
|
-
// ../shared/lib/common/multimap.js
|
|
2035
|
-
var Multimap = class _Multimap {
|
|
2036
|
-
static fromEntries(entries) {
|
|
2037
|
-
const m = new _Multimap();
|
|
2038
|
-
for (const [key, value] of entries)
|
|
2039
|
-
m.set(key, value);
|
|
2040
|
-
return m;
|
|
2041
|
-
}
|
|
2042
|
-
_map = /* @__PURE__ */ new Map();
|
|
2043
|
-
constructor(entries = []) {
|
|
2044
|
-
for (const [k, v] of entries)
|
|
2045
|
-
this.set(k, v);
|
|
2046
|
-
}
|
|
2047
|
-
addAllFromMap(map) {
|
|
2048
|
-
for (const [key, value] of map)
|
|
2049
|
-
this.set(key, value);
|
|
2050
|
-
}
|
|
2051
|
-
map(callback) {
|
|
2052
|
-
const result = [];
|
|
2053
|
-
for (const [key, value] of this._map)
|
|
2054
|
-
result.push(callback(key, value));
|
|
2055
|
-
return result;
|
|
2056
|
-
}
|
|
2057
|
-
[Symbol.iterator]() {
|
|
2058
|
-
return this._map.entries();
|
|
2059
|
-
}
|
|
2060
|
-
hasAny(key) {
|
|
2061
|
-
return this._map.has(key);
|
|
2062
|
-
}
|
|
2063
|
-
has(key, value) {
|
|
2064
|
-
return this._map.get(key)?.has(value) ?? false;
|
|
2065
|
-
}
|
|
2066
|
-
set(key, value) {
|
|
2067
|
-
let s = this._map.get(key);
|
|
2068
|
-
if (!s) {
|
|
2069
|
-
s = /* @__PURE__ */ new Set();
|
|
2070
|
-
this._map.set(key, s);
|
|
2071
|
-
}
|
|
2072
|
-
s.add(value);
|
|
2073
|
-
}
|
|
2074
|
-
get size() {
|
|
2075
|
-
return this._map.size;
|
|
2076
|
-
}
|
|
2077
|
-
setAll(key, values) {
|
|
2078
|
-
let s = this._map.get(key);
|
|
2079
|
-
if (!s) {
|
|
2080
|
-
s = /* @__PURE__ */ new Set();
|
|
2081
|
-
this._map.set(key, s);
|
|
2082
|
-
}
|
|
2083
|
-
for (const v of values)
|
|
2084
|
-
s.add(v);
|
|
2085
|
-
}
|
|
2086
|
-
delete(key, value) {
|
|
2087
|
-
let s = this._map.get(key);
|
|
2088
|
-
if (!s)
|
|
2089
|
-
return;
|
|
2090
|
-
s.delete(value);
|
|
2091
|
-
if (!s.size)
|
|
2092
|
-
this._map.delete(key);
|
|
2093
|
-
}
|
|
2094
|
-
keys() {
|
|
2095
|
-
return this._map.keys();
|
|
2096
|
-
}
|
|
2097
|
-
*values() {
|
|
2098
|
-
for (const set of this._map.values())
|
|
2099
|
-
yield* set.keys();
|
|
2100
|
-
}
|
|
2101
|
-
getAll(key) {
|
|
2102
|
-
let s = this._map.get(key);
|
|
2103
|
-
return s ? [...s] : [];
|
|
2104
|
-
}
|
|
2105
|
-
getFirst(key) {
|
|
2106
|
-
let s = this._map.get(key);
|
|
2107
|
-
if (!s)
|
|
2108
|
-
return void 0;
|
|
2109
|
-
return s.values().next().value;
|
|
2110
|
-
}
|
|
2111
|
-
count(key) {
|
|
2112
|
-
let s = this._map.get(key);
|
|
2113
|
-
return s ? s.size : 0;
|
|
2114
|
-
}
|
|
2115
|
-
deleteAll(key) {
|
|
2116
|
-
this._map.delete(key);
|
|
2117
|
-
}
|
|
2118
|
-
clear() {
|
|
2119
|
-
this._map.clear();
|
|
2120
|
-
}
|
|
2121
|
-
clone() {
|
|
2122
|
-
const m = new _Multimap();
|
|
2123
|
-
for (const [key, values] of this._map)
|
|
2124
|
-
m._map.set(key, new Set(values));
|
|
2125
|
-
return m;
|
|
2126
|
-
}
|
|
2127
|
-
};
|
|
2128
|
-
|
|
2129
|
-
// ../node_modules/.pnpm/stable-hash@0.0.6/node_modules/stable-hash/dist/index.mjs
|
|
2130
|
-
var o = /* @__PURE__ */ new WeakMap();
|
|
2131
|
-
var u = 0;
|
|
2132
|
-
function stableHash(t2) {
|
|
2133
|
-
const i = typeof t2, s = t2 && t2.constructor, c = s === Date;
|
|
2134
|
-
if (Object(t2) === t2 && !c && s != RegExp) {
|
|
2135
|
-
let e2 = o.get(t2);
|
|
2136
|
-
if (e2) return e2;
|
|
2137
|
-
e2 = ++u + "~", o.set(t2, e2);
|
|
2138
|
-
let n;
|
|
2139
|
-
if (s === Array) {
|
|
2140
|
-
for (e2 = "@", n = 0; n < t2.length; n++) e2 += stableHash(t2[n]) + ",";
|
|
2141
|
-
o.set(t2, e2);
|
|
2142
|
-
} else if (s === Object) {
|
|
2143
|
-
e2 = "#";
|
|
2144
|
-
const f = Object.keys(t2).sort();
|
|
2145
|
-
for (; (n = f.pop()) !== void 0; ) t2[n] !== void 0 && (e2 += n + ":" + stableHash(t2[n]) + ",");
|
|
2146
|
-
o.set(t2, e2);
|
|
2147
|
-
}
|
|
2148
|
-
return e2;
|
|
2149
|
-
}
|
|
2150
|
-
return c ? t2.toJSON() : i === "symbol" ? t2.toString() : i === "string" ? JSON.stringify(t2) : "" + t2;
|
|
2151
|
-
}
|
|
2152
|
-
var dist_default = stableHash;
|
|
2153
|
-
|
|
2154
2041
|
// ../node_modules/.pnpm/xxhash-wasm@1.1.0/node_modules/xxhash-wasm/esm/xxhash-wasm.js
|
|
2155
2042
|
var t = new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 48, 8, 96, 3, 127, 127, 127, 1, 127, 96, 3, 127, 127, 127, 0, 96, 2, 127, 127, 0, 96, 1, 127, 1, 127, 96, 3, 127, 127, 126, 1, 126, 96, 3, 126, 127, 127, 1, 126, 96, 2, 127, 126, 0, 96, 1, 127, 1, 126, 3, 11, 10, 0, 0, 2, 1, 3, 4, 5, 6, 1, 7, 5, 3, 1, 0, 1, 7, 85, 9, 3, 109, 101, 109, 2, 0, 5, 120, 120, 104, 51, 50, 0, 0, 6, 105, 110, 105, 116, 51, 50, 0, 2, 8, 117, 112, 100, 97, 116, 101, 51, 50, 0, 3, 8, 100, 105, 103, 101, 115, 116, 51, 50, 0, 4, 5, 120, 120, 104, 54, 52, 0, 5, 6, 105, 110, 105, 116, 54, 52, 0, 7, 8, 117, 112, 100, 97, 116, 101, 54, 52, 0, 8, 8, 100, 105, 103, 101, 115, 116, 54, 52, 0, 9, 10, 251, 22, 10, 242, 1, 1, 4, 127, 32, 0, 32, 1, 106, 33, 3, 32, 1, 65, 16, 79, 4, 127, 32, 3, 65, 16, 107, 33, 6, 32, 2, 65, 168, 136, 141, 161, 2, 106, 33, 3, 32, 2, 65, 137, 235, 208, 208, 7, 107, 33, 4, 32, 2, 65, 207, 140, 162, 142, 6, 106, 33, 5, 3, 64, 32, 3, 32, 0, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 33, 3, 32, 4, 32, 0, 65, 4, 106, 34, 0, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 33, 4, 32, 2, 32, 0, 65, 4, 106, 34, 0, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 33, 2, 32, 5, 32, 0, 65, 4, 106, 34, 0, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 33, 5, 32, 6, 32, 0, 65, 4, 106, 34, 0, 79, 13, 0, 11, 32, 2, 65, 12, 119, 32, 5, 65, 18, 119, 106, 32, 4, 65, 7, 119, 106, 32, 3, 65, 1, 119, 106, 5, 32, 2, 65, 177, 207, 217, 178, 1, 106, 11, 32, 1, 106, 32, 0, 32, 1, 65, 15, 113, 16, 1, 11, 146, 1, 0, 32, 1, 32, 2, 106, 33, 2, 3, 64, 32, 1, 65, 4, 106, 32, 2, 75, 69, 4, 64, 32, 0, 32, 1, 40, 2, 0, 65, 189, 220, 202, 149, 124, 108, 106, 65, 17, 119, 65, 175, 214, 211, 190, 2, 108, 33, 0, 32, 1, 65, 4, 106, 33, 1, 12, 1, 11, 11, 3, 64, 32, 1, 32, 2, 79, 69, 4, 64, 32, 0, 32, 1, 45, 0, 0, 65, 177, 207, 217, 178, 1, 108, 106, 65, 11, 119, 65, 177, 243, 221, 241, 121, 108, 33, 0, 32, 1, 65, 1, 106, 33, 1, 12, 1, 11, 11, 32, 0, 32, 0, 65, 15, 118, 115, 65, 247, 148, 175, 175, 120, 108, 34, 0, 65, 13, 118, 32, 0, 115, 65, 189, 220, 202, 149, 124, 108, 34, 0, 65, 16, 118, 32, 0, 115, 11, 63, 0, 32, 0, 65, 8, 106, 32, 1, 65, 168, 136, 141, 161, 2, 106, 54, 2, 0, 32, 0, 65, 12, 106, 32, 1, 65, 137, 235, 208, 208, 7, 107, 54, 2, 0, 32, 0, 65, 16, 106, 32, 1, 54, 2, 0, 32, 0, 65, 20, 106, 32, 1, 65, 207, 140, 162, 142, 6, 106, 54, 2, 0, 11, 195, 4, 1, 6, 127, 32, 1, 32, 2, 106, 33, 6, 32, 0, 65, 24, 106, 33, 4, 32, 0, 65, 40, 106, 40, 2, 0, 33, 3, 32, 0, 32, 0, 40, 2, 0, 32, 2, 106, 54, 2, 0, 32, 0, 65, 4, 106, 34, 5, 32, 5, 40, 2, 0, 32, 2, 65, 16, 79, 32, 0, 40, 2, 0, 65, 16, 79, 114, 114, 54, 2, 0, 32, 2, 32, 3, 106, 65, 16, 73, 4, 64, 32, 3, 32, 4, 106, 32, 1, 32, 2, 252, 10, 0, 0, 32, 0, 65, 40, 106, 32, 2, 32, 3, 106, 54, 2, 0, 15, 11, 32, 3, 4, 64, 32, 3, 32, 4, 106, 32, 1, 65, 16, 32, 3, 107, 34, 2, 252, 10, 0, 0, 32, 0, 65, 8, 106, 34, 3, 32, 3, 40, 2, 0, 32, 4, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 54, 2, 0, 32, 0, 65, 12, 106, 34, 3, 32, 3, 40, 2, 0, 32, 4, 65, 4, 106, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 54, 2, 0, 32, 0, 65, 16, 106, 34, 3, 32, 3, 40, 2, 0, 32, 4, 65, 8, 106, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 54, 2, 0, 32, 0, 65, 20, 106, 34, 3, 32, 3, 40, 2, 0, 32, 4, 65, 12, 106, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 54, 2, 0, 32, 0, 65, 40, 106, 65, 0, 54, 2, 0, 32, 1, 32, 2, 106, 33, 1, 11, 32, 1, 32, 6, 65, 16, 107, 77, 4, 64, 32, 6, 65, 16, 107, 33, 8, 32, 0, 65, 8, 106, 40, 2, 0, 33, 2, 32, 0, 65, 12, 106, 40, 2, 0, 33, 3, 32, 0, 65, 16, 106, 40, 2, 0, 33, 5, 32, 0, 65, 20, 106, 40, 2, 0, 33, 7, 3, 64, 32, 2, 32, 1, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 33, 2, 32, 3, 32, 1, 65, 4, 106, 34, 1, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 33, 3, 32, 5, 32, 1, 65, 4, 106, 34, 1, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 33, 5, 32, 7, 32, 1, 65, 4, 106, 34, 1, 40, 2, 0, 65, 247, 148, 175, 175, 120, 108, 106, 65, 13, 119, 65, 177, 243, 221, 241, 121, 108, 33, 7, 32, 8, 32, 1, 65, 4, 106, 34, 1, 79, 13, 0, 11, 32, 0, 65, 8, 106, 32, 2, 54, 2, 0, 32, 0, 65, 12, 106, 32, 3, 54, 2, 0, 32, 0, 65, 16, 106, 32, 5, 54, 2, 0, 32, 0, 65, 20, 106, 32, 7, 54, 2, 0, 11, 32, 1, 32, 6, 73, 4, 64, 32, 4, 32, 1, 32, 6, 32, 1, 107, 34, 1, 252, 10, 0, 0, 32, 0, 65, 40, 106, 32, 1, 54, 2, 0, 11, 11, 97, 1, 1, 127, 32, 0, 65, 16, 106, 40, 2, 0, 33, 1, 32, 0, 65, 4, 106, 40, 2, 0, 4, 127, 32, 1, 65, 12, 119, 32, 0, 65, 20, 106, 40, 2, 0, 65, 18, 119, 106, 32, 0, 65, 12, 106, 40, 2, 0, 65, 7, 119, 106, 32, 0, 65, 8, 106, 40, 2, 0, 65, 1, 119, 106, 5, 32, 1, 65, 177, 207, 217, 178, 1, 106, 11, 32, 0, 40, 2, 0, 106, 32, 0, 65, 24, 106, 32, 0, 65, 40, 106, 40, 2, 0, 16, 1, 11, 255, 3, 2, 3, 126, 1, 127, 32, 0, 32, 1, 106, 33, 6, 32, 1, 65, 32, 79, 4, 126, 32, 6, 65, 32, 107, 33, 6, 32, 2, 66, 214, 235, 130, 238, 234, 253, 137, 245, 224, 0, 124, 33, 3, 32, 2, 66, 177, 169, 172, 193, 173, 184, 212, 166, 61, 125, 33, 4, 32, 2, 66, 249, 234, 208, 208, 231, 201, 161, 228, 225, 0, 124, 33, 5, 3, 64, 32, 3, 32, 0, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 3, 32, 4, 32, 0, 65, 8, 106, 34, 0, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 4, 32, 2, 32, 0, 65, 8, 106, 34, 0, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 2, 32, 5, 32, 0, 65, 8, 106, 34, 0, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 5, 32, 6, 32, 0, 65, 8, 106, 34, 0, 79, 13, 0, 11, 32, 2, 66, 12, 137, 32, 5, 66, 18, 137, 124, 32, 4, 66, 7, 137, 124, 32, 3, 66, 1, 137, 124, 32, 3, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 133, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 66, 157, 163, 181, 234, 131, 177, 141, 138, 250, 0, 125, 32, 4, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 133, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 66, 157, 163, 181, 234, 131, 177, 141, 138, 250, 0, 125, 32, 2, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 133, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 66, 157, 163, 181, 234, 131, 177, 141, 138, 250, 0, 125, 32, 5, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 133, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 66, 157, 163, 181, 234, 131, 177, 141, 138, 250, 0, 125, 5, 32, 2, 66, 197, 207, 217, 178, 241, 229, 186, 234, 39, 124, 11, 32, 1, 173, 124, 32, 0, 32, 1, 65, 31, 113, 16, 6, 11, 134, 2, 0, 32, 1, 32, 2, 106, 33, 2, 3, 64, 32, 2, 32, 1, 65, 8, 106, 79, 4, 64, 32, 1, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 32, 0, 133, 66, 27, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 66, 157, 163, 181, 234, 131, 177, 141, 138, 250, 0, 125, 33, 0, 32, 1, 65, 8, 106, 33, 1, 12, 1, 11, 11, 32, 1, 65, 4, 106, 32, 2, 77, 4, 64, 32, 0, 32, 1, 53, 2, 0, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 133, 66, 23, 137, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 249, 243, 221, 241, 153, 246, 153, 171, 22, 124, 33, 0, 32, 1, 65, 4, 106, 33, 1, 11, 3, 64, 32, 1, 32, 2, 73, 4, 64, 32, 0, 32, 1, 49, 0, 0, 66, 197, 207, 217, 178, 241, 229, 186, 234, 39, 126, 133, 66, 11, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 0, 32, 1, 65, 1, 106, 33, 1, 12, 1, 11, 11, 32, 0, 32, 0, 66, 33, 136, 133, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 34, 0, 32, 0, 66, 29, 136, 133, 66, 249, 243, 221, 241, 153, 246, 153, 171, 22, 126, 34, 0, 32, 0, 66, 32, 136, 133, 11, 77, 0, 32, 0, 65, 8, 106, 32, 1, 66, 214, 235, 130, 238, 234, 253, 137, 245, 224, 0, 124, 55, 3, 0, 32, 0, 65, 16, 106, 32, 1, 66, 177, 169, 172, 193, 173, 184, 212, 166, 61, 125, 55, 3, 0, 32, 0, 65, 24, 106, 32, 1, 55, 3, 0, 32, 0, 65, 32, 106, 32, 1, 66, 249, 234, 208, 208, 231, 201, 161, 228, 225, 0, 124, 55, 3, 0, 11, 244, 4, 2, 3, 127, 4, 126, 32, 1, 32, 2, 106, 33, 5, 32, 0, 65, 40, 106, 33, 4, 32, 0, 65, 200, 0, 106, 40, 2, 0, 33, 3, 32, 0, 32, 0, 41, 3, 0, 32, 2, 173, 124, 55, 3, 0, 32, 2, 32, 3, 106, 65, 32, 73, 4, 64, 32, 3, 32, 4, 106, 32, 1, 32, 2, 252, 10, 0, 0, 32, 0, 65, 200, 0, 106, 32, 2, 32, 3, 106, 54, 2, 0, 15, 11, 32, 3, 4, 64, 32, 3, 32, 4, 106, 32, 1, 65, 32, 32, 3, 107, 34, 2, 252, 10, 0, 0, 32, 0, 65, 8, 106, 34, 3, 32, 3, 41, 3, 0, 32, 4, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 55, 3, 0, 32, 0, 65, 16, 106, 34, 3, 32, 3, 41, 3, 0, 32, 4, 65, 8, 106, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 55, 3, 0, 32, 0, 65, 24, 106, 34, 3, 32, 3, 41, 3, 0, 32, 4, 65, 16, 106, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 55, 3, 0, 32, 0, 65, 32, 106, 34, 3, 32, 3, 41, 3, 0, 32, 4, 65, 24, 106, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 55, 3, 0, 32, 0, 65, 200, 0, 106, 65, 0, 54, 2, 0, 32, 1, 32, 2, 106, 33, 1, 11, 32, 1, 65, 32, 106, 32, 5, 77, 4, 64, 32, 5, 65, 32, 107, 33, 2, 32, 0, 65, 8, 106, 41, 3, 0, 33, 6, 32, 0, 65, 16, 106, 41, 3, 0, 33, 7, 32, 0, 65, 24, 106, 41, 3, 0, 33, 8, 32, 0, 65, 32, 106, 41, 3, 0, 33, 9, 3, 64, 32, 6, 32, 1, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 6, 32, 7, 32, 1, 65, 8, 106, 34, 1, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 7, 32, 8, 32, 1, 65, 8, 106, 34, 1, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 8, 32, 9, 32, 1, 65, 8, 106, 34, 1, 41, 3, 0, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 124, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 33, 9, 32, 2, 32, 1, 65, 8, 106, 34, 1, 79, 13, 0, 11, 32, 0, 65, 8, 106, 32, 6, 55, 3, 0, 32, 0, 65, 16, 106, 32, 7, 55, 3, 0, 32, 0, 65, 24, 106, 32, 8, 55, 3, 0, 32, 0, 65, 32, 106, 32, 9, 55, 3, 0, 11, 32, 1, 32, 5, 73, 4, 64, 32, 4, 32, 1, 32, 5, 32, 1, 107, 34, 1, 252, 10, 0, 0, 32, 0, 65, 200, 0, 106, 32, 1, 54, 2, 0, 11, 11, 188, 2, 1, 5, 126, 32, 0, 65, 24, 106, 41, 3, 0, 33, 1, 32, 0, 41, 3, 0, 34, 2, 66, 32, 90, 4, 126, 32, 0, 65, 8, 106, 41, 3, 0, 34, 3, 66, 1, 137, 32, 0, 65, 16, 106, 41, 3, 0, 34, 4, 66, 7, 137, 124, 32, 1, 66, 12, 137, 32, 0, 65, 32, 106, 41, 3, 0, 34, 5, 66, 18, 137, 124, 124, 32, 3, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 133, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 66, 157, 163, 181, 234, 131, 177, 141, 138, 250, 0, 125, 32, 4, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 133, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 66, 157, 163, 181, 234, 131, 177, 141, 138, 250, 0, 125, 32, 1, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 133, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 66, 157, 163, 181, 234, 131, 177, 141, 138, 250, 0, 125, 32, 5, 66, 207, 214, 211, 190, 210, 199, 171, 217, 66, 126, 66, 31, 137, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 133, 66, 135, 149, 175, 175, 152, 182, 222, 155, 158, 127, 126, 66, 157, 163, 181, 234, 131, 177, 141, 138, 250, 0, 125, 5, 32, 1, 66, 197, 207, 217, 178, 241, 229, 186, 234, 39, 124, 11, 32, 2, 124, 32, 0, 65, 40, 106, 32, 2, 66, 31, 131, 167, 16, 6, 11]);
|
|
2156
2043
|
async function e() {
|
|
2157
2044
|
return (function(t2) {
|
|
2158
|
-
const { exports: { mem: e2, xxh32: n, xxh64: r, init32: i, update32: a, digest32:
|
|
2045
|
+
const { exports: { mem: e2, xxh32: n, xxh64: r, init32: i, update32: a, digest32: o, init64: s, update64: u, digest64: c } } = t2;
|
|
2159
2046
|
let h = new Uint8Array(e2.buffer);
|
|
2160
2047
|
function g(t3, n2) {
|
|
2161
2048
|
if (e2.buffer.byteLength < t3 + n2) {
|
|
@@ -2165,11 +2052,11 @@ async function e() {
|
|
|
2165
2052
|
}
|
|
2166
2053
|
function f(t3, e3, n2, r2, i2, a2) {
|
|
2167
2054
|
g(t3);
|
|
2168
|
-
const
|
|
2169
|
-
return h.set(
|
|
2055
|
+
const o2 = new Uint8Array(t3);
|
|
2056
|
+
return h.set(o2), n2(0, e3), o2.set(h.subarray(0, t3)), { update(e4) {
|
|
2170
2057
|
let n3;
|
|
2171
|
-
return h.set(
|
|
2172
|
-
}, digest: () => (h.set(
|
|
2058
|
+
return h.set(o2), "string" == typeof e4 ? (g(3 * e4.length, t3), n3 = w.encodeInto(e4, h.subarray(t3)).written) : (g(e4.byteLength, t3), h.set(e4, t3), n3 = e4.byteLength), r2(0, t3, n3), o2.set(h.subarray(0, t3)), this;
|
|
2059
|
+
}, digest: () => (h.set(o2), a2(i2(0))) };
|
|
2173
2060
|
}
|
|
2174
2061
|
function y(t3) {
|
|
2175
2062
|
return t3 >>> 0;
|
|
@@ -2185,13 +2072,12 @@ async function e() {
|
|
|
2185
2072
|
function L(t3, e3 = p) {
|
|
2186
2073
|
return g(3 * t3.length, 0), d(r(0, w.encodeInto(t3, h).written, e3));
|
|
2187
2074
|
}
|
|
2188
|
-
return { h32: x, h32ToString: (t3, e3 = l) => x(t3, e3).toString(16).padStart(8, "0"), h32Raw: (t3, e3 = l) => (g(t3.byteLength, 0), h.set(t3), y(n(0, t3.byteLength, e3))), create32: (t3 = l) => f(48, t3, i, a,
|
|
2075
|
+
return { h32: x, h32ToString: (t3, e3 = l) => x(t3, e3).toString(16).padStart(8, "0"), h32Raw: (t3, e3 = l) => (g(t3.byteLength, 0), h.set(t3), y(n(0, t3.byteLength, e3))), create32: (t3 = l) => f(48, t3, i, a, o, y), h64: L, h64ToString: (t3, e3 = p) => L(t3, e3).toString(16).padStart(16, "0"), h64Raw: (t3, e3 = p) => (g(t3.byteLength, 0), h.set(t3), d(r(0, t3.byteLength, e3))), create64: (t3 = p) => f(88, t3, s, u, c, d) };
|
|
2189
2076
|
})((await WebAssembly.instantiate(t)).instance);
|
|
2190
2077
|
}
|
|
2191
2078
|
|
|
2192
2079
|
// ../shared/lib/common/utils.js
|
|
2193
2080
|
var xxHasher = await e();
|
|
2194
|
-
var ID_SEPARATOR = `388c03a1c6`;
|
|
2195
2081
|
function humanReadableMs(ms) {
|
|
2196
2082
|
if (+ms < 1e-5)
|
|
2197
2083
|
return `0 ms`;
|
|
@@ -2234,19 +2120,8 @@ function durationTrendScale(currentMs, baseMs) {
|
|
|
2234
2120
|
return "\xB10%";
|
|
2235
2121
|
return `-${(1 - trend) * 100 | 0}%`;
|
|
2236
2122
|
}
|
|
2237
|
-
function xxHash(data) {
|
|
2238
|
-
if (Array.isArray(data))
|
|
2239
|
-
return xxHasher.h64ToString(data.join(ID_SEPARATOR));
|
|
2240
|
-
return xxHasher.h64ToString(data);
|
|
2241
|
-
}
|
|
2242
|
-
function xxHashObject(obj) {
|
|
2243
|
-
return xxHash(dist_default(obj));
|
|
2244
|
-
}
|
|
2245
2123
|
|
|
2246
2124
|
// ../server/lib/common/stats/envGroup.js
|
|
2247
|
-
function normalize(value) {
|
|
2248
|
-
return value.toLowerCase().trim();
|
|
2249
|
-
}
|
|
2250
2125
|
var EnvGroupKey;
|
|
2251
2126
|
((EnvGroupKey2) => {
|
|
2252
2127
|
function from(key) {
|
|
@@ -2272,22 +2147,6 @@ var COMPUTED_KEYS = /* @__PURE__ */ new Map([
|
|
|
2272
2147
|
// OS name and version joined with a space. The CLI's `--env-os` sends it.
|
|
2273
2148
|
[EnvGroupKey.OS_NAME_WITH_VERSION, (env) => [env.systemData.osName, env.systemData.osVersion].filter(Boolean).join(" ") || void 0]
|
|
2274
2149
|
]);
|
|
2275
|
-
function envEntries(env) {
|
|
2276
|
-
const entries = /* @__PURE__ */ new Map();
|
|
2277
|
-
const add = (key, value) => {
|
|
2278
|
-
if (value !== void 0 && value !== null && value !== "")
|
|
2279
|
-
entries.set(key, String(value));
|
|
2280
|
-
};
|
|
2281
|
-
add(EnvGroupKey.NAME, env.name);
|
|
2282
|
-
add(EnvGroupKey.CATEGORY, env.category);
|
|
2283
|
-
add(EnvGroupKey.CONFIG_PATH, env.configPath);
|
|
2284
|
-
add(EnvGroupKey.OS_NAME, env.systemData.osName);
|
|
2285
|
-
add(EnvGroupKey.OS_VERSION, env.systemData.osVersion);
|
|
2286
|
-
add(EnvGroupKey.OS_ARCH, env.systemData.osArch);
|
|
2287
|
-
for (const [name, value] of Object.entries(env.userSuppliedData ?? {}))
|
|
2288
|
-
add(EnvGroupKey.metadata(name), value);
|
|
2289
|
-
return entries;
|
|
2290
|
-
}
|
|
2291
2150
|
var LEGACY_SYSTEM_KEYS = /* @__PURE__ */ new Map([
|
|
2292
2151
|
["env_id", EnvGroupKey.ENV_ID],
|
|
2293
2152
|
["name", EnvGroupKey.NAME],
|
|
@@ -2297,337 +2156,13 @@ var LEGACY_SYSTEM_KEYS = /* @__PURE__ */ new Map([
|
|
|
2297
2156
|
["os_name_no_version", EnvGroupKey.OS_NAME],
|
|
2298
2157
|
["osarch", EnvGroupKey.OS_ARCH]
|
|
2299
2158
|
]);
|
|
2300
|
-
function fromLegacyJSON(json) {
|
|
2301
|
-
const eq = {};
|
|
2302
|
-
const add = (name, values, isUserData) => {
|
|
2303
|
-
const key = isUserData ? EnvGroupKey.metadata(name) : LEGACY_SYSTEM_KEYS.get(name);
|
|
2304
|
-
if (key)
|
|
2305
|
-
eq[key] = [...eq[key] ?? [], ...values];
|
|
2306
|
-
};
|
|
2307
|
-
if ("inverse" in json) {
|
|
2308
|
-
for (const { name, values } of json.filters.system ?? [])
|
|
2309
|
-
add(name, values, false);
|
|
2310
|
-
for (const { name, values } of json.filters.user ?? [])
|
|
2311
|
-
add(name, values, true);
|
|
2312
|
-
} else {
|
|
2313
|
-
for (const { name, value } of json.system)
|
|
2314
|
-
add(name, [value], false);
|
|
2315
|
-
for (const { name, value } of json.user)
|
|
2316
|
-
add(name, [value], true);
|
|
2317
|
-
}
|
|
2318
|
-
return EnvGroup.open(eq);
|
|
2319
|
-
}
|
|
2320
|
-
function jsonFilters(filters) {
|
|
2321
|
-
const json = {};
|
|
2322
|
-
for (const key of [...filters.keys()].sort()) {
|
|
2323
|
-
const values = filters.getAll(key).sort();
|
|
2324
|
-
json[key] = values.length === 1 ? values[0] : values;
|
|
2325
|
-
}
|
|
2326
|
-
return json;
|
|
2327
|
-
}
|
|
2328
|
-
function envFilters(env, droplist) {
|
|
2329
|
-
const eq = {};
|
|
2330
|
-
for (const [key, value] of envEntries(env)) {
|
|
2331
|
-
if (!droplist.has(key))
|
|
2332
|
-
eq[key] = value;
|
|
2333
|
-
}
|
|
2334
|
-
return eq;
|
|
2335
|
-
}
|
|
2336
|
-
var EnvGroup = class _EnvGroup {
|
|
2337
|
-
constructor(_type, eq = {}, droplist = []) {
|
|
2338
|
-
this._type = _type;
|
|
2339
|
-
this._addEq(eq);
|
|
2340
|
-
this._drop(droplist);
|
|
2341
|
-
}
|
|
2342
|
-
_type;
|
|
2343
|
-
/**
|
|
2344
|
-
* The maximum number of distinct timelines we expect to have per query.
|
|
2345
|
-
* This constant is used throughout the engine to establish per-timeline caches.
|
|
2346
|
-
*/
|
|
2347
|
-
static MAX_TIMELINES = 500;
|
|
2348
|
-
static ALL = _EnvGroup.open();
|
|
2349
|
-
static categoryCollectionLabel(category) {
|
|
2350
|
-
if (category === FlakinessReport.CATEGORY_PLAYWRIGHT)
|
|
2351
|
-
return "Playwright Environments";
|
|
2352
|
-
if (category === FlakinessReport.CATEGORY_JUNIT)
|
|
2353
|
-
return "JUnit Environments";
|
|
2354
|
-
if (category === FlakinessReport.CATEGORY_PYTEST)
|
|
2355
|
-
return "Pytest Environments";
|
|
2356
|
-
if (category === "perf")
|
|
2357
|
-
return "Performance Benchmarks";
|
|
2358
|
-
return `${category} environments`;
|
|
2359
|
-
}
|
|
2360
|
-
static osLabel(input) {
|
|
2361
|
-
return osLabel(input);
|
|
2362
|
-
}
|
|
2363
|
-
static open(eq = {}, droplist = []) {
|
|
2364
|
-
return new _EnvGroup("open", eq, droplist);
|
|
2365
|
-
}
|
|
2366
|
-
static closed(eq = {}, droplist = []) {
|
|
2367
|
-
return new _EnvGroup("closed", eq, droplist);
|
|
2368
|
-
}
|
|
2369
|
-
static closedFromEnv(env, droplist = /* @__PURE__ */ new Set()) {
|
|
2370
|
-
return _EnvGroup.closed(envFilters(env, droplist), droplist);
|
|
2371
|
-
}
|
|
2372
|
-
/** Accepts the legacy JSON as well. */
|
|
2373
|
-
static deserialize(json) {
|
|
2374
|
-
if (!("type" in json))
|
|
2375
|
-
return fromLegacyJSON(json);
|
|
2376
|
-
const group = new _EnvGroup(json.type, {}, (json.drop ?? []).map(EnvGroupKey.from));
|
|
2377
|
-
for (const [key, values] of Object.entries(json.eq ?? {}))
|
|
2378
|
-
group._addEq({ [EnvGroupKey.from(key)]: values });
|
|
2379
|
-
return group;
|
|
2380
|
-
}
|
|
2381
|
-
// Normalized values are used for matching and identity.
|
|
2382
|
-
_filters = new Multimap();
|
|
2383
|
-
// The same values as they were given, one spelling per normalized value, for display.
|
|
2384
|
-
_rawFilters = new Multimap();
|
|
2385
|
-
_droplist = /* @__PURE__ */ new Set();
|
|
2386
|
-
_memoizedAccepts = /* @__PURE__ */ new Map();
|
|
2387
|
-
_memoizedEtag;
|
|
2388
|
-
_memoizedDescription;
|
|
2389
|
-
/**
|
|
2390
|
-
* A copy of this group with the values added to the filters of their keys.
|
|
2391
|
-
* An environment matches a key when it has any of the key's values.
|
|
2392
|
-
*/
|
|
2393
|
-
addEq(eq) {
|
|
2394
|
-
const group = this._copy();
|
|
2395
|
-
group._addEq(eq);
|
|
2396
|
-
return group;
|
|
2397
|
-
}
|
|
2398
|
-
/** A copy of this group with the keys added to its droplist. */
|
|
2399
|
-
drop(...keys) {
|
|
2400
|
-
const group = this._copy();
|
|
2401
|
-
group._drop(keys);
|
|
2402
|
-
return group;
|
|
2403
|
-
}
|
|
2404
|
-
_addEq(eq) {
|
|
2405
|
-
for (const [key, rawValues] of Object.entries(eq)) {
|
|
2406
|
-
for (const value of typeof rawValues === "string" ? [rawValues] : rawValues) {
|
|
2407
|
-
const normalized = normalize(value);
|
|
2408
|
-
if (this._filters.has(key, normalized))
|
|
2409
|
-
continue;
|
|
2410
|
-
this._filters.set(key, normalized);
|
|
2411
|
-
this._rawFilters.set(key, value);
|
|
2412
|
-
}
|
|
2413
|
-
}
|
|
2414
|
-
}
|
|
2415
|
-
_drop(keys) {
|
|
2416
|
-
for (const key of keys)
|
|
2417
|
-
this._droplist.add(key);
|
|
2418
|
-
}
|
|
2419
|
-
_copy() {
|
|
2420
|
-
const group = new _EnvGroup(this._type);
|
|
2421
|
-
group._filters = this._filters.clone();
|
|
2422
|
-
group._rawFilters = this._rawFilters.clone();
|
|
2423
|
-
group._droplist = new Set(this._droplist);
|
|
2424
|
-
return group;
|
|
2425
|
-
}
|
|
2426
|
-
groupType() {
|
|
2427
|
-
return this._type;
|
|
2428
|
-
}
|
|
2429
|
-
/** Whether the group accepts every environment. The droplist doesn't matter: it only affects {@link subgroups}. */
|
|
2430
|
-
acceptsAll() {
|
|
2431
|
-
return this._type === "open" && !this._filters.size;
|
|
2432
|
-
}
|
|
2433
|
-
values(key) {
|
|
2434
|
-
return this._rawFilters.getAll(key);
|
|
2435
|
-
}
|
|
2436
|
-
droplist() {
|
|
2437
|
-
return this._droplist;
|
|
2438
|
-
}
|
|
2439
|
-
_computeAccepts(env) {
|
|
2440
|
-
const entries = envEntries(env);
|
|
2441
|
-
for (const key of this._filters.keys()) {
|
|
2442
|
-
const extract = COMPUTED_KEYS.get(key);
|
|
2443
|
-
const value = extract ? extract(env) : entries.get(key);
|
|
2444
|
-
if (value === void 0 || !this._filters.has(key, normalize(value)))
|
|
2445
|
-
return false;
|
|
2446
|
-
}
|
|
2447
|
-
if (this._type === "open")
|
|
2448
|
-
return true;
|
|
2449
|
-
return [...entries.keys()].every((key) => this._filters.hasAny(key) || this._droplist.has(key));
|
|
2450
|
-
}
|
|
2451
|
-
accepts(env) {
|
|
2452
|
-
let result = this._memoizedAccepts.get(env.envId);
|
|
2453
|
-
if (result === void 0) {
|
|
2454
|
-
result = this._computeAccepts(env);
|
|
2455
|
-
this._memoizedAccepts.set(env.envId, result);
|
|
2456
|
-
}
|
|
2457
|
-
return result;
|
|
2458
|
-
}
|
|
2459
|
-
/**
|
|
2460
|
-
* Splits the environments of `envs` that this group accepts. Two
|
|
2461
|
-
* environments share a subgroup when their keys and values match after
|
|
2462
|
-
* the dropped keys are removed.
|
|
2463
|
-
*
|
|
2464
|
-
* A subgroup is closed: it pins the remaining keys and keeps the droplist.
|
|
2465
|
-
* It also keeps this group's filters on the keys it doesn't pin, so it
|
|
2466
|
-
* accepts only environments that this group accepts.
|
|
2467
|
-
*/
|
|
2468
|
-
subgroups(envs) {
|
|
2469
|
-
const subgroups = /* @__PURE__ */ new Map();
|
|
2470
|
-
for (const env of envs) {
|
|
2471
|
-
if (!this.accepts(env))
|
|
2472
|
-
continue;
|
|
2473
|
-
const eq = envFilters(env, this._droplist);
|
|
2474
|
-
for (const key of this._rawFilters.keys()) {
|
|
2475
|
-
if (!Object.hasOwn(eq, key))
|
|
2476
|
-
eq[key] = this._rawFilters.getAll(key);
|
|
2477
|
-
}
|
|
2478
|
-
const subgroup = _EnvGroup.closed(eq, this._droplist);
|
|
2479
|
-
subgroups.set(subgroup.etag(), subgroup);
|
|
2480
|
-
}
|
|
2481
|
-
return [...subgroups.values()];
|
|
2482
|
-
}
|
|
2483
|
-
/** Keys with several values are left out of the description. */
|
|
2484
|
-
description() {
|
|
2485
|
-
if (!this._memoizedDescription)
|
|
2486
|
-
this._memoizedDescription = this._computeDescription();
|
|
2487
|
-
return this._memoizedDescription;
|
|
2488
|
-
}
|
|
2489
|
-
compare(other) {
|
|
2490
|
-
const a = this.description();
|
|
2491
|
-
const b = other.description();
|
|
2492
|
-
return cmpText(a.name ?? a.configPath, b.name ?? b.configPath) ?? cmpText(a.metadata, b.metadata) ?? cmpText(a.system, b.system) ?? cmpText(a.configPath, b.configPath) ?? cmpText(a.category, b.category) ?? 0;
|
|
2493
|
-
}
|
|
2494
|
-
serialize() {
|
|
2495
|
-
return {
|
|
2496
|
-
type: this._type,
|
|
2497
|
-
eq: this._rawFilters.size ? jsonFilters(this._rawFilters) : void 0,
|
|
2498
|
-
drop: this._droplist.size ? [...this._droplist].sort() : void 0
|
|
2499
|
-
};
|
|
2500
|
-
}
|
|
2501
|
-
etag() {
|
|
2502
|
-
if (!this._memoizedEtag) {
|
|
2503
|
-
this._memoizedEtag = xxHashObject({
|
|
2504
|
-
type: this._type,
|
|
2505
|
-
filters: jsonFilters(this._filters),
|
|
2506
|
-
droplist: [...this._droplist].sort()
|
|
2507
|
-
});
|
|
2508
|
-
}
|
|
2509
|
-
return this._memoizedEtag;
|
|
2510
|
-
}
|
|
2511
|
-
isEqual(other) {
|
|
2512
|
-
return this.etag() === other.etag();
|
|
2513
|
-
}
|
|
2514
|
-
/** Whether both filters accept the same environments out of `envs`. */
|
|
2515
|
-
isFunctionallyEqual(other, envs) {
|
|
2516
|
-
return envs.every((env) => this.accepts(env) === other.accepts(env));
|
|
2517
|
-
}
|
|
2518
|
-
_computeDescription() {
|
|
2519
|
-
const single = (key) => {
|
|
2520
|
-
const values = this.values(key);
|
|
2521
|
-
return values.length === 1 ? values[0] : void 0;
|
|
2522
|
-
};
|
|
2523
|
-
const name = single(EnvGroupKey.NAME);
|
|
2524
|
-
const systemData = {
|
|
2525
|
-
osName: single(EnvGroupKey.OS_NAME) ?? single(EnvGroupKey.OS_NAME_WITH_VERSION),
|
|
2526
|
-
osVersion: single(EnvGroupKey.OS_VERSION),
|
|
2527
|
-
osArch: single(EnvGroupKey.OS_ARCH)
|
|
2528
|
-
};
|
|
2529
|
-
const tokens = [];
|
|
2530
|
-
for (const key of this._filters.keys()) {
|
|
2531
|
-
const value = key.startsWith("metadata.") ? single(key) : void 0;
|
|
2532
|
-
if (value === void 0 || value.toLowerCase() === "false" || value.toLowerCase() === "default")
|
|
2533
|
-
continue;
|
|
2534
|
-
const metadataKey = key.slice("metadata.".length);
|
|
2535
|
-
if (value.toLowerCase() === "true")
|
|
2536
|
-
tokens.push(metadataKey);
|
|
2537
|
-
else if (Number.isFinite(Number(value)))
|
|
2538
|
-
tokens.push(`${metadataKey}=${value}`);
|
|
2539
|
-
else
|
|
2540
|
-
tokens.push(value);
|
|
2541
|
-
}
|
|
2542
|
-
const system = osLabel(systemData);
|
|
2543
|
-
const systemType = osType(systemData);
|
|
2544
|
-
const impliedContext = [...tokens, system];
|
|
2545
|
-
if (name)
|
|
2546
|
-
impliedContext.push(name);
|
|
2547
|
-
if (systemType === "macos")
|
|
2548
|
-
impliedContext.push("mac", "macos", "mac os");
|
|
2549
|
-
else if (systemType === "windows")
|
|
2550
|
-
impliedContext.push("win32", "win", "windows", "mingw");
|
|
2551
|
-
else if (systemType === "linux")
|
|
2552
|
-
impliedContext.push("linux");
|
|
2553
|
-
if (tokens.some((token) => token.startsWith("chrome")))
|
|
2554
|
-
impliedContext.push("chromium");
|
|
2555
|
-
const metadataTokens = tokens.filter((theToken, theIndex) => impliedContext.every((aToken, aIndex) => aIndex === theIndex || aToken.toLowerCase().indexOf(theToken.toLowerCase()) === -1));
|
|
2556
|
-
return {
|
|
2557
|
-
name,
|
|
2558
|
-
category: single(EnvGroupKey.CATEGORY) ?? "",
|
|
2559
|
-
configPath: single(EnvGroupKey.CONFIG_PATH),
|
|
2560
|
-
metadataTokens,
|
|
2561
|
-
metadata: metadataTokens.length ? metadataTokens.join(", ") : void 0,
|
|
2562
|
-
system,
|
|
2563
|
-
systemType
|
|
2564
|
-
};
|
|
2565
|
-
}
|
|
2566
|
-
};
|
|
2567
|
-
function osType(input) {
|
|
2568
|
-
const lower = (input.osName ?? "").trim().toLowerCase();
|
|
2569
|
-
if (!lower)
|
|
2570
|
-
return void 0;
|
|
2571
|
-
if (/^(darwin|mac ?os|macos)\b/.test(lower))
|
|
2572
|
-
return "macos";
|
|
2573
|
-
if (/^(mingw|win32|windows)/.test(lower))
|
|
2574
|
-
return "windows";
|
|
2575
|
-
if (/^(ubuntu|linux)\b/.test(lower))
|
|
2576
|
-
return "linux";
|
|
2577
|
-
}
|
|
2578
|
-
function osNameLabel(input) {
|
|
2579
|
-
const rawName = (input.osName ?? "").trim();
|
|
2580
|
-
const rawVersion = (input.osVersion ?? "").trim();
|
|
2581
|
-
const suffix = (value, prefix) => value.replace(prefix, "").trim();
|
|
2582
|
-
let name;
|
|
2583
|
-
if (/^(darwin|mac ?os|macos)\b/i.test(rawName))
|
|
2584
|
-
name = ["macOS", suffix(rawName, /^(darwin|mac ?os|macos)\b\s*/i)].filter(Boolean).join(" ");
|
|
2585
|
-
else if (/^mingw/i.test(rawName))
|
|
2586
|
-
name = ["Windows", suffix(rawName, /^mingw(?:32|64)?[_\s-]*/i)].filter(Boolean).join(" ");
|
|
2587
|
-
else if (/^(win32|windows)\b/i.test(rawName))
|
|
2588
|
-
name = ["Windows", suffix(rawName, /^(win32|windows)\b\s*/i)].filter(Boolean).join(" ");
|
|
2589
|
-
else if (/^ubuntu\b/i.test(rawName))
|
|
2590
|
-
name = ["Ubuntu", suffix(rawName, /^ubuntu\b\s*/i)].filter(Boolean).join(" ");
|
|
2591
|
-
else if (/^linux\b/i.test(rawName))
|
|
2592
|
-
name = ["Linux", suffix(rawName, /^linux\b\s*/i)].filter(Boolean).join(" ");
|
|
2593
|
-
else
|
|
2594
|
-
name = rawName;
|
|
2595
|
-
if (rawVersion && !name.toLowerCase().includes(rawVersion.toLowerCase()))
|
|
2596
|
-
name = [name, rawVersion].filter(Boolean).join(" ");
|
|
2597
|
-
return name.trim();
|
|
2598
|
-
}
|
|
2599
|
-
function osArchLabel(input) {
|
|
2600
|
-
const rawArch = (input.osArch ?? "").trim();
|
|
2601
|
-
const lower = rawArch.toLowerCase();
|
|
2602
|
-
if (!lower)
|
|
2603
|
-
return "";
|
|
2604
|
-
if (["x86_64", "amd64", "x64"].includes(lower))
|
|
2605
|
-
return "x86-64";
|
|
2606
|
-
if (["aarch64", "arm64"].includes(lower))
|
|
2607
|
-
return "arm64";
|
|
2608
|
-
if (["x86", "i386", "i686"].includes(lower))
|
|
2609
|
-
return "x86";
|
|
2610
|
-
return rawArch;
|
|
2611
|
-
}
|
|
2612
|
-
function osLabel(input) {
|
|
2613
|
-
const arch = osArchLabel(input);
|
|
2614
|
-
const archLabel = arch && arch !== "x86" && arch !== "x86-64" ? arch : "";
|
|
2615
|
-
return [osNameLabel(input), archLabel].filter(Boolean).join(" ");
|
|
2616
|
-
}
|
|
2617
|
-
function cmpText(a = "", b = "") {
|
|
2618
|
-
a = a.toLowerCase();
|
|
2619
|
-
b = b.toLowerCase();
|
|
2620
|
-
if (a === b)
|
|
2621
|
-
return void 0;
|
|
2622
|
-
return a < b ? -1 : 1;
|
|
2623
|
-
}
|
|
2624
2159
|
|
|
2625
2160
|
// src/cli/cmd-list-tests.ts
|
|
2626
2161
|
function buildEnvFilter(filters) {
|
|
2627
|
-
const
|
|
2162
|
+
const envFilters = {};
|
|
2628
2163
|
const add = (key, values) => {
|
|
2629
2164
|
if (values?.length)
|
|
2630
|
-
|
|
2165
|
+
envFilters[key] = [...envFilters[key] ?? [], ...values];
|
|
2631
2166
|
};
|
|
2632
2167
|
add(EnvGroupKey.NAME, filters.envName);
|
|
2633
2168
|
add(EnvGroupKey.CONFIG_PATH, filters.envPath);
|
|
@@ -2638,9 +2173,9 @@ function buildEnvFilter(filters) {
|
|
|
2638
2173
|
const eqIndex = entry.indexOf("=");
|
|
2639
2174
|
add(EnvGroupKey.metadata(entry.slice(0, eqIndex)), [entry.slice(eqIndex + 1)]);
|
|
2640
2175
|
}
|
|
2641
|
-
if (!Object.keys(
|
|
2176
|
+
if (!Object.keys(envFilters).length)
|
|
2642
2177
|
return void 0;
|
|
2643
|
-
return { type: "open", eq:
|
|
2178
|
+
return { type: "open", eq: envFilters };
|
|
2644
2179
|
}
|
|
2645
2180
|
async function cmdListTests(options) {
|
|
2646
2181
|
const [orgSlug, projectSlug] = options.flakinessProject.split("/");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "flakiness",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.312.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"bin": {
|
|
6
6
|
"flakiness": "./lib/cli/cli.js"
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
"author": "Degu Labs, Inc",
|
|
20
20
|
"license": "MIT",
|
|
21
21
|
"devDependencies": {
|
|
22
|
-
"@flakiness/server": "0.
|
|
23
|
-
"@flakiness/shared": "0.
|
|
24
|
-
"@playwright/test": "^1.
|
|
22
|
+
"@flakiness/server": "0.312.0",
|
|
23
|
+
"@flakiness/shared": "0.312.0",
|
|
24
|
+
"@playwright/test": "^1.63.0",
|
|
25
25
|
"@types/debug": "^4.1.13",
|
|
26
26
|
"@types/express": "^4.17.25",
|
|
27
27
|
"gray-matter": "^4.0.3"
|