@visulima/vis 1.0.0-alpha.11 → 1.0.0-alpha.13
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/CHANGELOG.md +101 -0
- package/LICENSE.md +559 -186
- package/README.md +18 -0
- package/dist/bin.js +1 -9
- package/dist/config/index.d.ts +477 -556
- package/dist/config/index.js +1 -2
- package/dist/generate/index.js +1 -3
- package/dist/packem_chunks/applyDefaults.js +2 -336
- package/dist/packem_chunks/bin.js +234 -9552
- package/dist/packem_chunks/doctor-probe.js +2 -112
- package/dist/packem_chunks/fix.js +11 -234
- package/dist/packem_chunks/handler.js +1 -99
- package/dist/packem_chunks/handler10.js +2 -53
- package/dist/packem_chunks/handler11.js +1 -32
- package/dist/packem_chunks/handler12.js +5 -100
- package/dist/packem_chunks/handler13.js +1 -25
- package/dist/packem_chunks/handler14.js +18 -916
- package/dist/packem_chunks/handler15.js +15 -201
- package/dist/packem_chunks/handler16.js +1 -124
- package/dist/packem_chunks/handler17.js +1 -13
- package/dist/packem_chunks/handler18.js +1 -106
- package/dist/packem_chunks/handler19.js +1 -19
- package/dist/packem_chunks/handler2.js +2 -75
- package/dist/packem_chunks/handler20.js +5 -29
- package/dist/packem_chunks/handler21.js +1 -222
- package/dist/packem_chunks/handler22.js +1 -237
- package/dist/packem_chunks/handler23.js +5 -101
- package/dist/packem_chunks/handler24.js +1 -110
- package/dist/packem_chunks/handler25.js +3 -402
- package/dist/packem_chunks/handler26.js +1 -13
- package/dist/packem_chunks/handler27.js +1 -63
- package/dist/packem_chunks/handler28.js +7 -34
- package/dist/packem_chunks/handler29.js +21 -456
- package/dist/packem_chunks/handler3.js +4 -95
- package/dist/packem_chunks/handler30.js +3 -170
- package/dist/packem_chunks/handler31.js +1 -530
- package/dist/packem_chunks/handler32.js +2 -214
- package/dist/packem_chunks/handler33.js +25 -119
- package/dist/packem_chunks/handler34.js +2 -630
- package/dist/packem_chunks/handler35.js +3 -283
- package/dist/packem_chunks/handler36.js +22 -542
- package/dist/packem_chunks/handler37.js +410 -744
- package/dist/packem_chunks/handler38.js +22 -989
- package/dist/packem_chunks/handler39.js +22 -574
- package/dist/packem_chunks/handler4.js +2 -90
- package/dist/packem_chunks/handler40.js +22 -1685
- package/dist/packem_chunks/handler41.js +6 -1088
- package/dist/packem_chunks/handler42.js +5 -797
- package/dist/packem_chunks/handler43.js +10 -2658
- package/dist/packem_chunks/handler44.js +51 -3784
- package/dist/packem_chunks/handler45.js +25 -2574
- package/dist/packem_chunks/handler46.js +3 -3769
- package/dist/packem_chunks/handler47.js +21 -1485
- package/dist/packem_chunks/handler48.js +42 -0
- package/dist/packem_chunks/handler5.js +8 -174
- package/dist/packem_chunks/handler6.js +1 -95
- package/dist/packem_chunks/handler7.js +1 -115
- package/dist/packem_chunks/handler8.js +1 -12
- package/dist/packem_chunks/handler9.js +1 -29
- package/dist/packem_chunks/heal-accept.js +10 -522
- package/dist/packem_chunks/heal.js +14 -673
- package/dist/packem_chunks/index.js +7 -873
- package/dist/packem_chunks/loader.js +1 -23
- package/dist/packem_chunks/tar.js +3 -0
- package/dist/packem_shared/ai-analysis-hm8d2W7z.js +67 -0
- package/dist/packem_shared/ai-cache-DoiF80AR.js +1 -0
- package/dist/packem_shared/ai-fix-nn4zOE95.js +43 -0
- package/dist/packem_shared/cache-directory-CwHlJhgx.js +1 -0
- package/dist/packem_shared/dependency-scan-COr5n63B.js +2 -0
- package/dist/packem_shared/docker-D6OGr5_S.js +2 -0
- package/dist/packem_shared/failure-log-iUVLf6ts.js +2 -0
- package/dist/packem_shared/flakiness-D9wf0t56.js +1 -0
- package/dist/packem_shared/giget-CcEy_Elm.js +2 -0
- package/dist/packem_shared/index-DH-5hsrC.js +1 -0
- package/dist/packem_shared/otel-DxDUPJJH.js +6 -0
- package/dist/packem_shared/otelPlugin-CQq6poq8.js +1 -0
- package/dist/packem_shared/registry-CkubDdiY.js +2 -0
- package/dist/packem_shared/run-summary-utils-BfBvjzhY.js +1 -0
- package/dist/packem_shared/runtime-check-BXZ43CBW.js +1 -0
- package/dist/packem_shared/selectors-BylODRiM.js +3 -0
- package/dist/packem_shared/symbols-CQmER5MT.js +1 -0
- package/dist/packem_shared/toolchain-BgBOUHII.js +5 -0
- package/dist/packem_shared/typosquats-CcZl99B1.js +1 -0
- package/dist/packem_shared/use-measured-height-DjYgUOKk.js +1 -0
- package/dist/packem_shared/utils-DrNg0XTR.js +1 -0
- package/dist/packem_shared/verify-Baj5mFJ7.js +1 -0
- package/dist/packem_shared/vis-update-app-D1jl0UZZ.js +1 -0
- package/dist/packem_shared/xxh3-DrAUNq4n.js +1 -0
- package/index.js +556 -727
- package/package.json +19 -29
- package/schemas/project.schema.json +739 -297
- package/schemas/vis-config.schema.json +3365 -384
- package/templates/buildkite-ci/template.yml +20 -20
- package/dist/packem_shared/VisUpdateApp-D-Yz_wvg.js +0 -1316
- package/dist/packem_shared/_commonjsHelpers-BqLXS_qQ.js +0 -5
- package/dist/packem_shared/ai-analysis-CHeB1joD.js +0 -367
- package/dist/packem_shared/ai-cache-Be_jexe4.js +0 -142
- package/dist/packem_shared/ai-fix-B9iQVcD2.js +0 -379
- package/dist/packem_shared/cache-directory-2qvs4goY.js +0 -98
- package/dist/packem_shared/catalog-BJTtyi-O.js +0 -1371
- package/dist/packem_shared/dependency-scan-A0KSklpG.js +0 -188
- package/dist/packem_shared/docker-2iZzc280.js +0 -181
- package/dist/packem_shared/failure-log-Cz3Z4SKL.js +0 -100
- package/dist/packem_shared/flakiness-goTxXuCX.js +0 -180
- package/dist/packem_shared/otel-DCvqCTz_.js +0 -158
- package/dist/packem_shared/otelPlugin-DFaLDvJf.js +0 -3
- package/dist/packem_shared/registry-CbqXI0rc.js +0 -272
- package/dist/packem_shared/run-summary-utils-PVMl4aIh.js +0 -130
- package/dist/packem_shared/runtime-check-Cobi3p6l.js +0 -127
- package/dist/packem_shared/selectors-SM69TfqC.js +0 -194
- package/dist/packem_shared/symbols-Ta7g2nU-.js +0 -14
- package/dist/packem_shared/toolchain-BdZd9eBi.js +0 -975
- package/dist/packem_shared/typosquats-C-bCh3PX.js +0 -1210
- package/dist/packem_shared/use-measured-height-CNP0vT4M.js +0 -20
- package/dist/packem_shared/utils-CthVdBPS.js +0 -40
- package/dist/packem_shared/xxh3-Ck8mXNg1.js +0 -239
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { measureElement } from '@visulima/tui';
|
|
2
|
-
import { useRef, useState, useLayoutEffect } from 'react';
|
|
3
|
-
|
|
4
|
-
const useMeasuredHeight = (initialHeight, onChange) => {
|
|
5
|
-
const ref = useRef(null);
|
|
6
|
-
const [measuredHeight, setMeasuredHeight] = useState(initialHeight);
|
|
7
|
-
useLayoutEffect(() => {
|
|
8
|
-
if (!ref.current) {
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
const { height } = measureElement(ref.current);
|
|
12
|
-
if (height > 0 && height !== measuredHeight) {
|
|
13
|
-
setMeasuredHeight(height);
|
|
14
|
-
onChange?.(height);
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
return { measuredHeight, ref };
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
export { useMeasuredHeight as u };
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
const toStringArray = (value) => {
|
|
2
|
-
if (!value) {
|
|
3
|
-
return [];
|
|
4
|
-
}
|
|
5
|
-
return Array.isArray(value) ? value : [value];
|
|
6
|
-
};
|
|
7
|
-
const errorMessage = (error) => {
|
|
8
|
-
if (error instanceof Error) {
|
|
9
|
-
return error.message;
|
|
10
|
-
}
|
|
11
|
-
if (typeof error === "string") {
|
|
12
|
-
return error;
|
|
13
|
-
}
|
|
14
|
-
return String(error);
|
|
15
|
-
};
|
|
16
|
-
const VERSION_SPEC_REGEX = /^(.+?)(?:@(.+))?$/;
|
|
17
|
-
const parsePackageArgument = (argument) => {
|
|
18
|
-
if (argument.startsWith("@")) {
|
|
19
|
-
const slashIndex = argument.indexOf("/");
|
|
20
|
-
if (slashIndex === -1) {
|
|
21
|
-
return { name: argument, versionSpec: void 0 };
|
|
22
|
-
}
|
|
23
|
-
const afterSlash = argument.slice(slashIndex + 1);
|
|
24
|
-
const atIndex = afterSlash.indexOf("@");
|
|
25
|
-
if (atIndex === -1) {
|
|
26
|
-
return { name: argument, versionSpec: void 0 };
|
|
27
|
-
}
|
|
28
|
-
return {
|
|
29
|
-
name: argument.slice(0, slashIndex + 1 + atIndex),
|
|
30
|
-
versionSpec: afterSlash.slice(atIndex + 1)
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
const match = VERSION_SPEC_REGEX.exec(argument);
|
|
34
|
-
if (!match) {
|
|
35
|
-
return { name: argument, versionSpec: void 0 };
|
|
36
|
-
}
|
|
37
|
-
return { name: match[1] ?? argument, versionSpec: match[2] };
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
export { errorMessage as e, parsePackageArgument as p, toStringArray as t };
|
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
const MASK_128 = (1n << 128n) - 1n;
|
|
2
|
-
const MASK_64 = (1n << 64n) - 1n;
|
|
3
|
-
const MASK_32 = (1n << 32n) - 1n;
|
|
4
|
-
const PRIME32_1 = 0x9E3779B1n;
|
|
5
|
-
const PRIME32_2 = 0x85EBCA77n;
|
|
6
|
-
const PRIME32_3 = 0xC2B2AE3Dn;
|
|
7
|
-
const PRIME64_1 = 0x9E3779B185EBCA87n;
|
|
8
|
-
const PRIME64_2 = 0xC2B2AE3D27D4EB4Fn;
|
|
9
|
-
const PRIME64_3 = 0x165667B19E3779F9n;
|
|
10
|
-
const PRIME64_4 = 0x85EBCA77C2B2AE63n;
|
|
11
|
-
const PRIME64_5 = 0x27D4EB2F165667C5n;
|
|
12
|
-
const PRIME_MX1 = 0x165667919E3779F9n;
|
|
13
|
-
const PRIME_MX2 = 0x9FB21C651E98DF25n;
|
|
14
|
-
const STRIPE_LEN = 64;
|
|
15
|
-
const ACC_NB = STRIPE_LEN / 8;
|
|
16
|
-
const U64 = 8;
|
|
17
|
-
const KKEY = Buffer.from(
|
|
18
|
-
"b8fe6c3923a44bbe7c01812cf721ad1cded46de9839097db7240a4a4b7b3671fcb79e64eccc0e578825ad07dccff7221b8084674f743248ee03590e6813a264c3c2852bb91c300cb88d0658b1b532ea371644897a20df94e3819ef46a9deacd8a8fa763fe39c343ff9dcbbc7c70b4f1d8a51e04bcdb45931c89f7ec9d9787364eac5ac8334d3ebc3c581a0fffa1363eb170ddd51b7f0da49d316552629d4689e2b16be587d47a1fc8ff8b8d17ad031ce45cb3a8f95160428afd7fbcabb4b407e",
|
|
19
|
-
"hex"
|
|
20
|
-
);
|
|
21
|
-
const getView = (buf, offset = 0) => Buffer.from(buf.buffer, buf.byteOffset + offset, buf.length - offset);
|
|
22
|
-
const bswap64 = (a) => {
|
|
23
|
-
const scratch = Buffer.allocUnsafe(8);
|
|
24
|
-
scratch.writeBigUInt64LE(a);
|
|
25
|
-
return scratch.readBigUInt64BE();
|
|
26
|
-
};
|
|
27
|
-
const bswap32 = (a) => {
|
|
28
|
-
let v = a;
|
|
29
|
-
v = (v & 0x0000FFFFn) << 16n | (v & 0xFFFF0000n) >> 16n;
|
|
30
|
-
v = (v & 0x00FF00FFn) << 8n | (v & 0xFF00FF00n) >> 8n;
|
|
31
|
-
return v;
|
|
32
|
-
};
|
|
33
|
-
const multU32ToU64 = (a, b) => (a & MASK_32) * (b & MASK_32) & MASK_64;
|
|
34
|
-
const rotl32 = (a, b) => (a << b | a >> 32n - b) & MASK_32;
|
|
35
|
-
const xorshift64 = (b, shift) => b ^ b >> shift;
|
|
36
|
-
const inv64 = (x) => ~x + 1n & MASK_64;
|
|
37
|
-
const mul128Fold64 = (a, b) => {
|
|
38
|
-
const lll = a * b & MASK_128;
|
|
39
|
-
return lll & MASK_64 ^ lll >> 64n;
|
|
40
|
-
};
|
|
41
|
-
const avalanche = (h) => {
|
|
42
|
-
let v = h;
|
|
43
|
-
v ^= v >> 37n;
|
|
44
|
-
v = v * PRIME_MX1 & MASK_64;
|
|
45
|
-
v ^= v >> 32n;
|
|
46
|
-
return v;
|
|
47
|
-
};
|
|
48
|
-
const avalanche64 = (h) => {
|
|
49
|
-
let v = h;
|
|
50
|
-
v ^= v >> 33n;
|
|
51
|
-
v = v * PRIME64_2 & MASK_64;
|
|
52
|
-
v ^= v >> 29n;
|
|
53
|
-
v = v * PRIME64_3 & MASK_64;
|
|
54
|
-
v ^= v >> 32n;
|
|
55
|
-
return v;
|
|
56
|
-
};
|
|
57
|
-
const accumulate512 = (acc, data, key) => {
|
|
58
|
-
for (let i = 0; i < ACC_NB; i++) {
|
|
59
|
-
const dataVal = data.readBigUInt64LE(i * 8);
|
|
60
|
-
const dataKey = dataVal ^ key.readBigUInt64LE(i * 8);
|
|
61
|
-
acc[i ^ 1] += dataVal;
|
|
62
|
-
acc[i] += multU32ToU64(dataKey, dataKey >> 32n);
|
|
63
|
-
}
|
|
64
|
-
return acc;
|
|
65
|
-
};
|
|
66
|
-
const accumulate = (acc, data, key, nbStripes) => {
|
|
67
|
-
for (let i = 0; i < nbStripes; i++) {
|
|
68
|
-
accumulate512(acc, getView(data, i * STRIPE_LEN), getView(key, i * 8));
|
|
69
|
-
}
|
|
70
|
-
return acc;
|
|
71
|
-
};
|
|
72
|
-
const scrambleAcc = (acc, key) => {
|
|
73
|
-
for (let i = 0; i < ACC_NB; i++) {
|
|
74
|
-
const key64 = key.readBigUInt64LE(i * 8);
|
|
75
|
-
let acc64 = acc[i];
|
|
76
|
-
acc64 = xorshift64(acc64, 47n);
|
|
77
|
-
acc64 ^= key64;
|
|
78
|
-
acc64 *= PRIME32_1;
|
|
79
|
-
acc[i] = acc64 & MASK_64;
|
|
80
|
-
}
|
|
81
|
-
return acc;
|
|
82
|
-
};
|
|
83
|
-
const mix2Accs = (acc, key) => (
|
|
84
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
85
|
-
mul128Fold64(acc[0] ^ key.readBigUInt64LE(0), acc[1] ^ key.readBigUInt64LE(U64))
|
|
86
|
-
);
|
|
87
|
-
const mergeAccs = (acc, key, start) => {
|
|
88
|
-
let result64 = start;
|
|
89
|
-
result64 += mix2Accs(acc.slice(0), getView(key, 0));
|
|
90
|
-
result64 += mix2Accs(acc.slice(2), getView(key, 16));
|
|
91
|
-
result64 += mix2Accs(acc.slice(4), getView(key, 32));
|
|
92
|
-
result64 += mix2Accs(acc.slice(6), getView(key, 48));
|
|
93
|
-
return avalanche(result64 & MASK_64);
|
|
94
|
-
};
|
|
95
|
-
const hashLong = (acc, data, secret) => {
|
|
96
|
-
const nbStripesPerBlock = Math.floor((secret.byteLength - STRIPE_LEN) / 8);
|
|
97
|
-
const blockLen = STRIPE_LEN * nbStripesPerBlock;
|
|
98
|
-
const nbBlocks = Math.floor((data.byteLength - 1) / blockLen);
|
|
99
|
-
for (let i = 0; i < nbBlocks; i++) {
|
|
100
|
-
accumulate(acc, getView(data, i * blockLen), secret, nbStripesPerBlock);
|
|
101
|
-
scrambleAcc(acc, getView(secret, secret.byteLength - STRIPE_LEN));
|
|
102
|
-
}
|
|
103
|
-
const nbStripes = Math.floor((data.byteLength - 1 - blockLen * nbBlocks) / STRIPE_LEN);
|
|
104
|
-
accumulate(acc, getView(data, nbBlocks * blockLen), secret, nbStripes);
|
|
105
|
-
accumulate512(acc, getView(data, data.byteLength - STRIPE_LEN), getView(secret, secret.byteLength - STRIPE_LEN - 7));
|
|
106
|
-
return acc;
|
|
107
|
-
};
|
|
108
|
-
const hashLong128b = (data, secret) => {
|
|
109
|
-
const acc = new BigUint64Array([PRIME32_3, PRIME64_1, PRIME64_2, PRIME64_3, PRIME64_4, PRIME32_2, PRIME64_5, PRIME32_1]);
|
|
110
|
-
hashLong(acc, data, secret);
|
|
111
|
-
const low64 = mergeAccs(acc, getView(secret, 11), BigInt(data.byteLength) * PRIME64_1 & MASK_64);
|
|
112
|
-
const high64 = mergeAccs(
|
|
113
|
-
acc,
|
|
114
|
-
getView(secret, secret.byteLength - STRIPE_LEN - 11),
|
|
115
|
-
~(BigInt(data.byteLength) * PRIME64_2) & MASK_64
|
|
116
|
-
);
|
|
117
|
-
return high64 << 64n | low64;
|
|
118
|
-
};
|
|
119
|
-
const mix16B = (data, key, seed) => mul128Fold64(
|
|
120
|
-
(data.readBigUInt64LE(0) ^ key.readBigUInt64LE(0) + seed) & MASK_64,
|
|
121
|
-
(data.readBigUInt64LE(8) ^ key.readBigUInt64LE(8) - seed) & MASK_64
|
|
122
|
-
);
|
|
123
|
-
const mix32B = (acc, data1, data2, key, seed) => {
|
|
124
|
-
let accl = acc & MASK_64;
|
|
125
|
-
let acch = acc >> 64n & MASK_64;
|
|
126
|
-
accl += mix16B(data1, key, seed);
|
|
127
|
-
accl ^= data2.readBigUInt64LE(0) + data2.readBigUInt64LE(8);
|
|
128
|
-
accl &= MASK_64;
|
|
129
|
-
acch += mix16B(data2, getView(key, 16), seed);
|
|
130
|
-
acch ^= data1.readBigUInt64LE(0) + data1.readBigUInt64LE(8);
|
|
131
|
-
acch &= MASK_64;
|
|
132
|
-
return acch << 64n | accl;
|
|
133
|
-
};
|
|
134
|
-
const len1to3_128b = (data, key32, seed) => {
|
|
135
|
-
const len = data.byteLength;
|
|
136
|
-
const combined = BigInt(data.readUInt8(len - 1)) | BigInt(len << 8) | BigInt(data.readUInt8(0) << 16) | BigInt(data.readUInt8(len >> 1) << 24);
|
|
137
|
-
const blow = (BigInt(key32.readUInt32LE(0)) ^ BigInt(key32.readUInt32LE(4))) + seed;
|
|
138
|
-
const low = (combined ^ blow) & MASK_64;
|
|
139
|
-
const bhigh = (BigInt(key32.readUInt32LE(8)) ^ BigInt(key32.readUInt32LE(12))) - seed;
|
|
140
|
-
const high = (rotl32(bswap32(combined), 13n) ^ bhigh) & MASK_64;
|
|
141
|
-
return (avalanche64(high) & MASK_64) << 64n | avalanche64(low);
|
|
142
|
-
};
|
|
143
|
-
const len4to8_128b = (data, key32, seed) => {
|
|
144
|
-
const len = data.byteLength;
|
|
145
|
-
const l1 = data.readUInt32LE(0);
|
|
146
|
-
const l2 = data.readUInt32LE(len - 4);
|
|
147
|
-
const l64 = BigInt(l1) | BigInt(l2) << 32n;
|
|
148
|
-
const bitflip = (key32.readBigUInt64LE(16) ^ key32.readBigUInt64LE(24)) + seed & MASK_64;
|
|
149
|
-
const keyed = l64 ^ bitflip;
|
|
150
|
-
let m128 = keyed * (PRIME64_1 + (BigInt(len) << 2n)) & MASK_128;
|
|
151
|
-
m128 += (m128 & MASK_64) << 65n;
|
|
152
|
-
m128 &= MASK_128;
|
|
153
|
-
m128 ^= m128 >> 67n;
|
|
154
|
-
return xorshift64(xorshift64(m128 & MASK_64, 35n) * PRIME_MX2 & MASK_64, 28n) | avalanche(m128 >> 64n) << 64n;
|
|
155
|
-
};
|
|
156
|
-
const len9to16_128b = (data, key64, seed) => {
|
|
157
|
-
const len = data.byteLength;
|
|
158
|
-
const bitflipl = (key64.readBigUInt64LE(32) ^ key64.readBigUInt64LE(40)) + seed & MASK_64;
|
|
159
|
-
const bitfliph = (key64.readBigUInt64LE(48) ^ key64.readBigUInt64LE(56)) - seed & MASK_64;
|
|
160
|
-
const ll1 = data.readBigUInt64LE();
|
|
161
|
-
let ll2 = data.readBigUInt64LE(len - 8);
|
|
162
|
-
let m128 = (ll1 ^ ll2 ^ bitflipl) * PRIME64_1;
|
|
163
|
-
const m128l = (m128 & MASK_64) + (BigInt(len - 1) << 54n);
|
|
164
|
-
m128 = m128 & (MASK_128 ^ MASK_64) | m128l;
|
|
165
|
-
ll2 ^= bitfliph;
|
|
166
|
-
m128 += ll2 + (ll2 & MASK_32) * (PRIME32_2 - 1n) << 64n;
|
|
167
|
-
m128 &= MASK_128;
|
|
168
|
-
m128 ^= bswap64(m128 >> 64n);
|
|
169
|
-
let h128 = (m128 & MASK_64) * PRIME64_2;
|
|
170
|
-
h128 += (m128 >> 64n) * PRIME64_2 << 64n;
|
|
171
|
-
h128 &= MASK_128;
|
|
172
|
-
return avalanche(h128 & MASK_64) | avalanche(h128 >> 64n) << 64n;
|
|
173
|
-
};
|
|
174
|
-
const len0to16_128b = (data, seed) => {
|
|
175
|
-
const len = data.byteLength;
|
|
176
|
-
if (len > 8) {
|
|
177
|
-
return len9to16_128b(data, KKEY, seed);
|
|
178
|
-
}
|
|
179
|
-
if (len >= 4) {
|
|
180
|
-
return len4to8_128b(data, KKEY, seed);
|
|
181
|
-
}
|
|
182
|
-
if (len > 0) {
|
|
183
|
-
return len1to3_128b(data, KKEY, seed);
|
|
184
|
-
}
|
|
185
|
-
return avalanche64(seed ^ KKEY.readBigUInt64LE(64) ^ KKEY.readBigUInt64LE(72)) | avalanche64(seed ^ KKEY.readBigUInt64LE(80) ^ KKEY.readBigUInt64LE(88)) << 64n;
|
|
186
|
-
};
|
|
187
|
-
const len17to128_128b = (data, secret, seed) => {
|
|
188
|
-
let acc = BigInt(data.byteLength) * PRIME64_1 & MASK_64;
|
|
189
|
-
let i = BigInt(data.byteLength - 1) / 32n;
|
|
190
|
-
while (i >= 0n) {
|
|
191
|
-
const ni = Number(i);
|
|
192
|
-
acc = mix32B(acc, getView(data, 16 * ni), getView(data, data.byteLength - 16 * (ni + 1)), getView(secret, 32 * ni), seed);
|
|
193
|
-
i--;
|
|
194
|
-
}
|
|
195
|
-
let h128l = acc + (acc >> 64n) & MASK_64;
|
|
196
|
-
h128l = avalanche(h128l);
|
|
197
|
-
let h128h = (acc & MASK_64) * PRIME64_1 + (acc >> 64n) * PRIME64_4 + (BigInt(data.byteLength) - seed & MASK_64) * PRIME64_2;
|
|
198
|
-
h128h &= MASK_64;
|
|
199
|
-
h128h = inv64(avalanche(h128h));
|
|
200
|
-
return h128l | h128h << 64n;
|
|
201
|
-
};
|
|
202
|
-
const len129to240_128b = (data, secret, seed) => {
|
|
203
|
-
let acc = BigInt(data.byteLength) * PRIME64_1 & MASK_64;
|
|
204
|
-
for (let i = 32; i < 160; i += 32) {
|
|
205
|
-
acc = mix32B(acc, getView(data, i - 32), getView(data, i - 16), getView(secret, i - 32), seed);
|
|
206
|
-
}
|
|
207
|
-
acc = avalanche(acc & MASK_64) | avalanche(acc >> 64n) << 64n;
|
|
208
|
-
for (let i = 160; i <= data.byteLength; i += 32) {
|
|
209
|
-
acc = mix32B(acc, getView(data, i - 32), getView(data, i - 16), getView(secret, 3 + i - 160), seed);
|
|
210
|
-
}
|
|
211
|
-
acc = mix32B(acc, getView(data, data.byteLength - 16), getView(data, data.byteLength - 32), getView(secret, 136 - 17 - 16), inv64(seed));
|
|
212
|
-
let h128l = acc + (acc >> 64n) & MASK_64;
|
|
213
|
-
h128l = avalanche(h128l);
|
|
214
|
-
let h128h = (acc & MASK_64) * PRIME64_1 + (acc >> 64n) * PRIME64_4 + (BigInt(data.byteLength) - seed & MASK_64) * PRIME64_2;
|
|
215
|
-
h128h &= MASK_64;
|
|
216
|
-
h128h = inv64(avalanche(h128h));
|
|
217
|
-
return h128l | h128h << 64n;
|
|
218
|
-
};
|
|
219
|
-
const xxh3_128 = (data, seed = 0n) => {
|
|
220
|
-
const len = data.byteLength;
|
|
221
|
-
if (len <= 16) {
|
|
222
|
-
return len0to16_128b(data, seed);
|
|
223
|
-
}
|
|
224
|
-
if (len <= 128) {
|
|
225
|
-
return len17to128_128b(data, KKEY, seed);
|
|
226
|
-
}
|
|
227
|
-
if (len <= 240) {
|
|
228
|
-
return len129to240_128b(data, KKEY, seed);
|
|
229
|
-
}
|
|
230
|
-
return hashLong128b(data, KKEY);
|
|
231
|
-
};
|
|
232
|
-
const bigintToHex = (value) => {
|
|
233
|
-
const hi = value >> 64n & MASK_64;
|
|
234
|
-
const lo = value & MASK_64;
|
|
235
|
-
return hi.toString(16).padStart(16, "0") + lo.toString(16).padStart(16, "0");
|
|
236
|
-
};
|
|
237
|
-
const xxh3Hash = (data) => bigintToHex(xxh3_128(data));
|
|
238
|
-
|
|
239
|
-
export { xxh3Hash as x };
|