fix(terminal): count a contrast-cache pair once toward the entry cap

`_admitNewEntry` fired from both `setCss` and `setColor`, so one (bg, fg)
pair consumed two of the 4096 slots and the cache actually wiped at ~2048
pairs. Track admission in a `_seen` TwoKeyMap keyed by the pair, cleared
with the other maps, so the bound matches the documented constant.

Regenerated the desktop and mobile bundle patches and both lockfile hashes.
This commit is contained in:
Neil
2026-09-19 15:04:42 -07:00
parent 00ed3625f8
commit 8e34d8a876
7 changed files with 145 additions and 110 deletions
File diff suppressed because one or more lines are too long
@@ -1,8 +1,8 @@
diff --git a/src/browser/ColorContrastCache.ts b/src/browser/ColorContrastCache.ts
index fdcd9d133199a6cd6ba9bea9606a02c03ad03b3d..0558a8873f680e8fb2a27cc833c49c5ba658e1dd 100644
index fdcd9d133199a6cd6ba9bea9606a02c03ad03b3d..e3ba7de0ed63abc451d0f404b86ab690ff9f7440 100644
--- a/src/browser/ColorContrastCache.ts
+++ b/src/browser/ColorContrastCache.ts
@@ -7,11 +7,17 @@ import { IColorContrastCache } from './Types';
@@ -7,11 +7,16 @@ import { IColorContrastCache } from './Types';
import { IColor } from '../common/Types';
import { TwoKeyMap } from '../common/MultiKeyMap';
@@ -11,37 +11,40 @@ index fdcd9d133199a6cd6ba9bea9606a02c03ad03b3d..0558a8873f680e8fb2a27cc833c49c5b
export class ColorContrastCache implements IColorContrastCache {
private _color: TwoKeyMap</* bg */number, /* fg */number, IColor | null> = new TwoKeyMap();
private _css: TwoKeyMap</* bg */number, /* fg */number, string | null> = new TwoKeyMap();
+ private _seen: TwoKeyMap</* bg */number, /* fg */number, boolean> = new TwoKeyMap();
+ private _entryCount = 0;
public setCss(bg: number, fg: number, value: string | null): void {
+ if (this._css.get(bg, fg) === undefined) {
+ this._admitNewEntry();
+ }
+ this._admitPair(bg, fg);
this._css.set(bg, fg, value);
}
@@ -20,6 +26,9 @@ export class ColorContrastCache implements IColorContrastCache {
@@ -20,6 +25,7 @@ export class ColorContrastCache implements IColorContrastCache {
}
public setColor(bg: number, fg: number, value: IColor | null): void {
+ if (this._color.get(bg, fg) === undefined) {
+ this._admitNewEntry();
+ }
+ this._admitPair(bg, fg);
this._color.set(bg, fg, value);
}
@@ -30,5 +39,14 @@ export class ColorContrastCache implements IColorContrastCache {
@@ -30,5 +36,20 @@ export class ColorContrastCache implements IColorContrastCache {
public clear(): void {
this._color.clear();
this._css.clear();
+ this._seen.clear();
+ this._entryCount = 0;
+ }
+
+ private _admitNewEntry(): void {
+ private _admitPair(bg: number, fg: number): void {
+ // setColor and setCss both admit, so _seen keeps a pair to one slot.
+ if (this._seen.get(bg, fg) !== undefined) {
+ return;
+ }
+ // Color pairs outlive atlas pages, including cached misses and DOM-rendered colors.
+ if (this._entryCount >= CONTRAST_CACHE_MAX_ENTRIES) {
+ this.clear();
+ }
+ this._seen.set(bg, fg, true);
+ this._entryCount++;
}
}
@@ -48,6 +48,20 @@ describe('vendored xterm contrast cache', () => {
expect(cache.getCss(2048, 1)).toBe('#eeeeee')
})
it('counts a background/foreground pair once across both setters', () => {
const cache = new ColorContrastCache()
for (let index = 0; index < 4096; index++) {
cache.setColor(index, 0, null)
cache.setCss(index, 0, '#ffffff')
}
expect(cache.getColor(0, 0)).toBeNull()
expect(cache.getCss(0, 0)).toBe('#ffffff')
cache.setCss(4096, 0, '#eeeeee')
expect(cache.getColor(0, 0)).toBeUndefined()
expect(cache.getCss(0, 0)).toBeUndefined()
expect(cache.getCss(4096, 0)).toBe('#eeeeee')
})
it('resets capacity after a theme clear and preserves independent terminal caches', () => {
const cache = new ColorContrastCache()
const sibling = new ColorContrastCache()
File diff suppressed because one or more lines are too long
@@ -1,8 +1,8 @@
diff --git a/src/browser/ColorContrastCache.ts b/src/browser/ColorContrastCache.ts
index fdcd9d133199a6cd6ba9bea9606a02c03ad03b3d..0558a8873f680e8fb2a27cc833c49c5ba658e1dd 100644
index fdcd9d133199a6cd6ba9bea9606a02c03ad03b3d..e3ba7de0ed63abc451d0f404b86ab690ff9f7440 100644
--- a/src/browser/ColorContrastCache.ts
+++ b/src/browser/ColorContrastCache.ts
@@ -7,11 +7,17 @@ import { IColorContrastCache } from './Types';
@@ -7,11 +7,16 @@ import { IColorContrastCache } from './Types';
import { IColor } from '../common/Types';
import { TwoKeyMap } from '../common/MultiKeyMap';
@@ -11,37 +11,40 @@ index fdcd9d133199a6cd6ba9bea9606a02c03ad03b3d..0558a8873f680e8fb2a27cc833c49c5b
export class ColorContrastCache implements IColorContrastCache {
private _color: TwoKeyMap</* bg */number, /* fg */number, IColor | null> = new TwoKeyMap();
private _css: TwoKeyMap</* bg */number, /* fg */number, string | null> = new TwoKeyMap();
+ private _seen: TwoKeyMap</* bg */number, /* fg */number, boolean> = new TwoKeyMap();
+ private _entryCount = 0;
public setCss(bg: number, fg: number, value: string | null): void {
+ if (this._css.get(bg, fg) === undefined) {
+ this._admitNewEntry();
+ }
+ this._admitPair(bg, fg);
this._css.set(bg, fg, value);
}
@@ -20,6 +26,9 @@ export class ColorContrastCache implements IColorContrastCache {
@@ -20,6 +25,7 @@ export class ColorContrastCache implements IColorContrastCache {
}
public setColor(bg: number, fg: number, value: IColor | null): void {
+ if (this._color.get(bg, fg) === undefined) {
+ this._admitNewEntry();
+ }
+ this._admitPair(bg, fg);
this._color.set(bg, fg, value);
}
@@ -30,5 +39,14 @@ export class ColorContrastCache implements IColorContrastCache {
@@ -30,5 +36,20 @@ export class ColorContrastCache implements IColorContrastCache {
public clear(): void {
this._color.clear();
this._css.clear();
+ this._seen.clear();
+ this._entryCount = 0;
+ }
+
+ private _admitNewEntry(): void {
+ private _admitPair(bg: number, fg: number): void {
+ // setColor and setCss both admit, so _seen keeps a pair to one slot.
+ if (this._seen.get(bg, fg) !== undefined) {
+ return;
+ }
+ // Color pairs outlive atlas pages, including cached misses and DOM-rendered colors.
+ if (this._entryCount >= CONTRAST_CACHE_MAX_ENTRIES) {
+ this.clear();
+ }
+ this._seen.set(bg, fg, true);
+ this._entryCount++;
}
}
+9 -9
View File
@@ -8,7 +8,7 @@ overrides:
xcode>uuid: 11.1.1
patchedDependencies:
'@xterm/xterm@6.1.0-beta.303': 3a6c0d12de82b2cb60b3bb93dd7f03cf25672986bce77aa3aefac986e4135163
'@xterm/xterm@6.1.0-beta.303': 8e3f250e8d66b10cbaefef476ee7519c1cd8ec1c732553657188b2a4a285f1bc
expo-notifications@55.0.27: ce20843a3daad4185d7e8571788fa323ba4d11984936188790858650a61749c0
react-native-webview@13.16.2: de6761dfa76a5491a23e49f1262566a8831cab26736a336fdffc5d4e7d05ff27
react-native@0.83.10: 44876634a8efbb0f2c3f66cd4332be170ec821d1cbfc0264ac80680983e8513d
@@ -28,13 +28,13 @@ importers:
version: 2.2.0(react-native@0.83.10(patch_hash=44876634a8efbb0f2c3f66cd4332be170ec821d1cbfc0264ac80680983e8513d)(@babel/core@7.29.7)(@react-native/metro-config@0.85.2(@babel/core@7.29.7))(@types/react@19.2.14)(react@19.2.8))
'@xterm/addon-unicode11':
specifier: 0.10.0-beta.300
version: 0.10.0-beta.300(@xterm/xterm@6.1.0-beta.303(patch_hash=3a6c0d12de82b2cb60b3bb93dd7f03cf25672986bce77aa3aefac986e4135163))
version: 0.10.0-beta.300(@xterm/xterm@6.1.0-beta.303(patch_hash=8e3f250e8d66b10cbaefef476ee7519c1cd8ec1c732553657188b2a4a285f1bc))
'@xterm/addon-webgl':
specifier: 0.20.0-beta.299
version: 0.20.0-beta.299(@xterm/xterm@6.1.0-beta.303(patch_hash=3a6c0d12de82b2cb60b3bb93dd7f03cf25672986bce77aa3aefac986e4135163))
version: 0.20.0-beta.299(@xterm/xterm@6.1.0-beta.303(patch_hash=8e3f250e8d66b10cbaefef476ee7519c1cd8ec1c732553657188b2a4a285f1bc))
'@xterm/xterm':
specifier: 6.1.0-beta.303
version: 6.1.0-beta.303(patch_hash=3a6c0d12de82b2cb60b3bb93dd7f03cf25672986bce77aa3aefac986e4135163)
version: 6.1.0-beta.303(patch_hash=8e3f250e8d66b10cbaefef476ee7519c1cd8ec1c732553657188b2a4a285f1bc)
buffer:
specifier: ^6.0.3
version: 6.0.3
@@ -10514,15 +10514,15 @@ snapshots:
'@xmldom/xmldom@0.9.12': {}
'@xterm/addon-unicode11@0.10.0-beta.300(@xterm/xterm@6.1.0-beta.303(patch_hash=3a6c0d12de82b2cb60b3bb93dd7f03cf25672986bce77aa3aefac986e4135163))':
'@xterm/addon-unicode11@0.10.0-beta.300(@xterm/xterm@6.1.0-beta.303(patch_hash=8e3f250e8d66b10cbaefef476ee7519c1cd8ec1c732553657188b2a4a285f1bc))':
dependencies:
'@xterm/xterm': 6.1.0-beta.303(patch_hash=3a6c0d12de82b2cb60b3bb93dd7f03cf25672986bce77aa3aefac986e4135163)
'@xterm/xterm': 6.1.0-beta.303(patch_hash=8e3f250e8d66b10cbaefef476ee7519c1cd8ec1c732553657188b2a4a285f1bc)
'@xterm/addon-webgl@0.20.0-beta.299(@xterm/xterm@6.1.0-beta.303(patch_hash=3a6c0d12de82b2cb60b3bb93dd7f03cf25672986bce77aa3aefac986e4135163))':
'@xterm/addon-webgl@0.20.0-beta.299(@xterm/xterm@6.1.0-beta.303(patch_hash=8e3f250e8d66b10cbaefef476ee7519c1cd8ec1c732553657188b2a4a285f1bc))':
dependencies:
'@xterm/xterm': 6.1.0-beta.303(patch_hash=3a6c0d12de82b2cb60b3bb93dd7f03cf25672986bce77aa3aefac986e4135163)
'@xterm/xterm': 6.1.0-beta.303(patch_hash=8e3f250e8d66b10cbaefef476ee7519c1cd8ec1c732553657188b2a4a285f1bc)
'@xterm/xterm@6.1.0-beta.303(patch_hash=3a6c0d12de82b2cb60b3bb93dd7f03cf25672986bce77aa3aefac986e4135163)': {}
'@xterm/xterm@6.1.0-beta.303(patch_hash=8e3f250e8d66b10cbaefef476ee7519c1cd8ec1c732553657188b2a4a285f1bc)': {}
abab@2.0.6: {}
+27 -27
View File
@@ -115,7 +115,7 @@ patchedDependencies:
'@xterm/addon-search@0.17.0-beta.300': eee5338dd2621ece46e79c61ec06766cd7fadaf79ffdb24e2a8ab68e97ef31f0
'@xterm/addon-serialize@0.15.0-beta.300': 851eac3d75e6d8c013b9f4c053e61d824b23965cb19ecc28e335e05059f3a294
'@xterm/addon-webgl@0.20.0-beta.299': 94687e89a0115e6e6aa102837f986debdc029c091527ee5eb4a4e17ceaf9473e
'@xterm/xterm@6.1.0-beta.303': 6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96
'@xterm/xterm@6.1.0-beta.303': f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e
lint-staged@16.4.0: 7333b3837f80a7fbd045964db6d76ba4fc118e49134bdbabb00585b6b7b60673
node-pty@1.1.0: 346cb29d33dd6eeb14910ff411c7584b0b2ff9a4b271c4b6d23c3b48e6548f74
@@ -143,7 +143,7 @@ importers:
version: 0.0.26
'@xterm/addon-serialize':
specifier: 0.15.0-beta.300
version: 0.15.0-beta.300(patch_hash=851eac3d75e6d8c013b9f4c053e61d824b23965cb19ecc28e335e05059f3a294)(@xterm/xterm@6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96))
version: 0.15.0-beta.300(patch_hash=851eac3d75e6d8c013b9f4c053e61d824b23965cb19ecc28e335e05059f3a294)(@xterm/xterm@6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))
'@xterm/headless':
specifier: 6.1.0-beta.302
version: 6.1.0-beta.302
@@ -324,28 +324,28 @@ importers:
version: 5.2.0(rolldown-vite@7.3.1(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(@types/node@25.9.5)(esbuild@0.25.12)(jiti@2.7.0)(yaml@2.8.4))
'@xterm/addon-fit':
specifier: 0.12.0-beta.300
version: 0.12.0-beta.300(@xterm/xterm@6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96))
version: 0.12.0-beta.300(@xterm/xterm@6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))
'@xterm/addon-image':
specifier: 0.10.0-beta.300
version: 0.10.0-beta.300(patch_hash=5fc280019957573eefe8daa2969534d6090ddb29c6b5842b8f22e99dc1ce3146)(@xterm/xterm@6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96))
version: 0.10.0-beta.300(patch_hash=5fc280019957573eefe8daa2969534d6090ddb29c6b5842b8f22e99dc1ce3146)(@xterm/xterm@6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))
'@xterm/addon-ligatures':
specifier: 0.11.0-beta.300
version: 0.11.0-beta.300(patch_hash=47405b9994b5acf1b4e90b49250358c1ca03649854d59560e7732b72fe336920)(@xterm/xterm@6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96))
version: 0.11.0-beta.300(patch_hash=47405b9994b5acf1b4e90b49250358c1ca03649854d59560e7732b72fe336920)(@xterm/xterm@6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))
'@xterm/addon-search':
specifier: 0.17.0-beta.300
version: 0.17.0-beta.300(patch_hash=eee5338dd2621ece46e79c61ec06766cd7fadaf79ffdb24e2a8ab68e97ef31f0)(@xterm/xterm@6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96))
version: 0.17.0-beta.300(patch_hash=eee5338dd2621ece46e79c61ec06766cd7fadaf79ffdb24e2a8ab68e97ef31f0)(@xterm/xterm@6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))
'@xterm/addon-unicode11':
specifier: 0.10.0-beta.300
version: 0.10.0-beta.300(@xterm/xterm@6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96))
version: 0.10.0-beta.300(@xterm/xterm@6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))
'@xterm/addon-web-links':
specifier: 0.13.0-beta.300
version: 0.13.0-beta.300(@xterm/xterm@6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96))
version: 0.13.0-beta.300(@xterm/xterm@6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))
'@xterm/addon-webgl':
specifier: 0.20.0-beta.299
version: 0.20.0-beta.299(patch_hash=94687e89a0115e6e6aa102837f986debdc029c091527ee5eb4a4e17ceaf9473e)(@xterm/xterm@6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96))
version: 0.20.0-beta.299(patch_hash=94687e89a0115e6e6aa102837f986debdc029c091527ee5eb4a4e17ceaf9473e)(@xterm/xterm@6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))
'@xterm/xterm':
specifier: 6.1.0-beta.303
version: 6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96)
version: 6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e)
class-variance-authority:
specifier: ^0.7.1
version: 0.7.1
@@ -10483,43 +10483,43 @@ snapshots:
'@xmldom/xmldom@0.8.15': {}
'@xterm/addon-fit@0.12.0-beta.300(@xterm/xterm@6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96))':
'@xterm/addon-fit@0.12.0-beta.300(@xterm/xterm@6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))':
dependencies:
'@xterm/xterm': 6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96)
'@xterm/xterm': 6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e)
'@xterm/addon-image@0.10.0-beta.300(patch_hash=5fc280019957573eefe8daa2969534d6090ddb29c6b5842b8f22e99dc1ce3146)(@xterm/xterm@6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96))':
'@xterm/addon-image@0.10.0-beta.300(patch_hash=5fc280019957573eefe8daa2969534d6090ddb29c6b5842b8f22e99dc1ce3146)(@xterm/xterm@6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))':
dependencies:
'@xterm/xterm': 6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96)
'@xterm/xterm': 6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e)
'@xterm/addon-ligatures@0.11.0-beta.300(patch_hash=47405b9994b5acf1b4e90b49250358c1ca03649854d59560e7732b72fe336920)(@xterm/xterm@6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96))':
'@xterm/addon-ligatures@0.11.0-beta.300(patch_hash=47405b9994b5acf1b4e90b49250358c1ca03649854d59560e7732b72fe336920)(@xterm/xterm@6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))':
dependencies:
'@xterm/xterm': 6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96)
'@xterm/xterm': 6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e)
lru-cache: 11.5.1
opentype.js: 2.0.0
'@xterm/addon-search@0.17.0-beta.300(patch_hash=eee5338dd2621ece46e79c61ec06766cd7fadaf79ffdb24e2a8ab68e97ef31f0)(@xterm/xterm@6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96))':
'@xterm/addon-search@0.17.0-beta.300(patch_hash=eee5338dd2621ece46e79c61ec06766cd7fadaf79ffdb24e2a8ab68e97ef31f0)(@xterm/xterm@6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))':
dependencies:
'@xterm/xterm': 6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96)
'@xterm/xterm': 6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e)
'@xterm/addon-serialize@0.15.0-beta.300(patch_hash=851eac3d75e6d8c013b9f4c053e61d824b23965cb19ecc28e335e05059f3a294)(@xterm/xterm@6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96))':
'@xterm/addon-serialize@0.15.0-beta.300(patch_hash=851eac3d75e6d8c013b9f4c053e61d824b23965cb19ecc28e335e05059f3a294)(@xterm/xterm@6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))':
dependencies:
'@xterm/xterm': 6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96)
'@xterm/xterm': 6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e)
'@xterm/addon-unicode11@0.10.0-beta.300(@xterm/xterm@6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96))':
'@xterm/addon-unicode11@0.10.0-beta.300(@xterm/xterm@6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))':
dependencies:
'@xterm/xterm': 6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96)
'@xterm/xterm': 6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e)
'@xterm/addon-web-links@0.13.0-beta.300(@xterm/xterm@6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96))':
'@xterm/addon-web-links@0.13.0-beta.300(@xterm/xterm@6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))':
dependencies:
'@xterm/xterm': 6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96)
'@xterm/xterm': 6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e)
'@xterm/addon-webgl@0.20.0-beta.299(patch_hash=94687e89a0115e6e6aa102837f986debdc029c091527ee5eb4a4e17ceaf9473e)(@xterm/xterm@6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96))':
'@xterm/addon-webgl@0.20.0-beta.299(patch_hash=94687e89a0115e6e6aa102837f986debdc029c091527ee5eb4a4e17ceaf9473e)(@xterm/xterm@6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))':
dependencies:
'@xterm/xterm': 6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96)
'@xterm/xterm': 6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e)
'@xterm/headless@6.1.0-beta.302': {}
'@xterm/xterm@6.1.0-beta.303(patch_hash=6601602d8b599cdffec11956acdc7e70a8297422d70ebdbce35c653899d93a96)': {}
'@xterm/xterm@6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e)': {}
abbrev@4.0.0: {}