refactor(terminal): drop the contrast-cache _seen map

The admission set was a third bounded map inside a patch whose purpose is
capping memory. The color and CSS maps only ever clear together, so either
one already holding the pair proves it was counted.
This commit is contained in:
Neil
2026-09-19 15:08:24 -07:00
parent c12caec0e4
commit 009e86addc
6 changed files with 94 additions and 111 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..e3ba7de0ed63abc451d0f404b86ab690ff9f7440 100644
index fdcd9d133199a6cd6ba9bea9606a02c03ad03b3d..ae8e06e77ba077aa5a47f0217dedaaaec0962a2f 100644
--- a/src/browser/ColorContrastCache.ts
+++ b/src/browser/ColorContrastCache.ts
@@ -7,11 +7,16 @@ import { IColorContrastCache } from './Types';
@@ -7,11 +7,15 @@ import { IColorContrastCache } from './Types';
import { IColor } from '../common/Types';
import { TwoKeyMap } from '../common/MultiKeyMap';
@@ -11,7 +11,6 @@ index fdcd9d133199a6cd6ba9bea9606a02c03ad03b3d..e3ba7de0ed63abc451d0f404b86ab690
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 {
@@ -19,7 +18,7 @@ index fdcd9d133199a6cd6ba9bea9606a02c03ad03b3d..e3ba7de0ed63abc451d0f404b86ab690
this._css.set(bg, fg, value);
}
@@ -20,6 +25,7 @@ export class ColorContrastCache implements IColorContrastCache {
@@ -20,6 +24,7 @@ export class ColorContrastCache implements IColorContrastCache {
}
public setColor(bg: number, fg: number, value: IColor | null): void {
@@ -27,24 +26,23 @@ index fdcd9d133199a6cd6ba9bea9606a02c03ad03b3d..e3ba7de0ed63abc451d0f404b86ab690
this._color.set(bg, fg, value);
}
@@ -30,5 +36,20 @@ export class ColorContrastCache implements IColorContrastCache {
@@ -30,5 +35,19 @@ export class ColorContrastCache implements IColorContrastCache {
public clear(): void {
this._color.clear();
this._css.clear();
+ this._seen.clear();
+ this._entryCount = 0;
+ }
+
+ 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) {
+ // Both setters admit, and the two maps only ever clear together, so either one
+ // already holding the pair means it was counted.
+ if (this._color.get(bg, fg) !== undefined || this._css.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++;
}
}
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..e3ba7de0ed63abc451d0f404b86ab690ff9f7440 100644
index fdcd9d133199a6cd6ba9bea9606a02c03ad03b3d..ae8e06e77ba077aa5a47f0217dedaaaec0962a2f 100644
--- a/src/browser/ColorContrastCache.ts
+++ b/src/browser/ColorContrastCache.ts
@@ -7,11 +7,16 @@ import { IColorContrastCache } from './Types';
@@ -7,11 +7,15 @@ import { IColorContrastCache } from './Types';
import { IColor } from '../common/Types';
import { TwoKeyMap } from '../common/MultiKeyMap';
@@ -11,7 +11,6 @@ index fdcd9d133199a6cd6ba9bea9606a02c03ad03b3d..e3ba7de0ed63abc451d0f404b86ab690
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 {
@@ -19,7 +18,7 @@ index fdcd9d133199a6cd6ba9bea9606a02c03ad03b3d..e3ba7de0ed63abc451d0f404b86ab690
this._css.set(bg, fg, value);
}
@@ -20,6 +25,7 @@ export class ColorContrastCache implements IColorContrastCache {
@@ -20,6 +24,7 @@ export class ColorContrastCache implements IColorContrastCache {
}
public setColor(bg: number, fg: number, value: IColor | null): void {
@@ -27,24 +26,23 @@ index fdcd9d133199a6cd6ba9bea9606a02c03ad03b3d..e3ba7de0ed63abc451d0f404b86ab690
this._color.set(bg, fg, value);
}
@@ -30,5 +36,20 @@ export class ColorContrastCache implements IColorContrastCache {
@@ -30,5 +35,19 @@ export class ColorContrastCache implements IColorContrastCache {
public clear(): void {
this._color.clear();
this._css.clear();
+ this._seen.clear();
+ this._entryCount = 0;
+ }
+
+ 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) {
+ // Both setters admit, and the two maps only ever clear together, so either one
+ // already holding the pair means it was counted.
+ if (this._color.get(bg, fg) !== undefined || this._css.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': 8e3f250e8d66b10cbaefef476ee7519c1cd8ec1c732553657188b2a4a285f1bc
'@xterm/xterm@6.1.0-beta.303': 45b11f5ce9acc8f6e71c5f0184822217c518a5de58793b5f1900227ce29e8405
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=8e3f250e8d66b10cbaefef476ee7519c1cd8ec1c732553657188b2a4a285f1bc))
version: 0.10.0-beta.300(@xterm/xterm@6.1.0-beta.303(patch_hash=45b11f5ce9acc8f6e71c5f0184822217c518a5de58793b5f1900227ce29e8405))
'@xterm/addon-webgl':
specifier: 0.20.0-beta.299
version: 0.20.0-beta.299(@xterm/xterm@6.1.0-beta.303(patch_hash=8e3f250e8d66b10cbaefef476ee7519c1cd8ec1c732553657188b2a4a285f1bc))
version: 0.20.0-beta.299(@xterm/xterm@6.1.0-beta.303(patch_hash=45b11f5ce9acc8f6e71c5f0184822217c518a5de58793b5f1900227ce29e8405))
'@xterm/xterm':
specifier: 6.1.0-beta.303
version: 6.1.0-beta.303(patch_hash=8e3f250e8d66b10cbaefef476ee7519c1cd8ec1c732553657188b2a4a285f1bc)
version: 6.1.0-beta.303(patch_hash=45b11f5ce9acc8f6e71c5f0184822217c518a5de58793b5f1900227ce29e8405)
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=8e3f250e8d66b10cbaefef476ee7519c1cd8ec1c732553657188b2a4a285f1bc))':
'@xterm/addon-unicode11@0.10.0-beta.300(@xterm/xterm@6.1.0-beta.303(patch_hash=45b11f5ce9acc8f6e71c5f0184822217c518a5de58793b5f1900227ce29e8405))':
dependencies:
'@xterm/xterm': 6.1.0-beta.303(patch_hash=8e3f250e8d66b10cbaefef476ee7519c1cd8ec1c732553657188b2a4a285f1bc)
'@xterm/xterm': 6.1.0-beta.303(patch_hash=45b11f5ce9acc8f6e71c5f0184822217c518a5de58793b5f1900227ce29e8405)
'@xterm/addon-webgl@0.20.0-beta.299(@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=45b11f5ce9acc8f6e71c5f0184822217c518a5de58793b5f1900227ce29e8405))':
dependencies:
'@xterm/xterm': 6.1.0-beta.303(patch_hash=8e3f250e8d66b10cbaefef476ee7519c1cd8ec1c732553657188b2a4a285f1bc)
'@xterm/xterm': 6.1.0-beta.303(patch_hash=45b11f5ce9acc8f6e71c5f0184822217c518a5de58793b5f1900227ce29e8405)
'@xterm/xterm@6.1.0-beta.303(patch_hash=8e3f250e8d66b10cbaefef476ee7519c1cd8ec1c732553657188b2a4a285f1bc)': {}
'@xterm/xterm@6.1.0-beta.303(patch_hash=45b11f5ce9acc8f6e71c5f0184822217c518a5de58793b5f1900227ce29e8405)': {}
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': f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e
'@xterm/xterm@6.1.0-beta.303': fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741
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=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))
version: 0.15.0-beta.300(patch_hash=851eac3d75e6d8c013b9f4c053e61d824b23965cb19ecc28e335e05059f3a294)(@xterm/xterm@6.1.0-beta.303(patch_hash=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741))
'@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=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))
version: 0.12.0-beta.300(@xterm/xterm@6.1.0-beta.303(patch_hash=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741))
'@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=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))
version: 0.10.0-beta.300(patch_hash=5fc280019957573eefe8daa2969534d6090ddb29c6b5842b8f22e99dc1ce3146)(@xterm/xterm@6.1.0-beta.303(patch_hash=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741))
'@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=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))
version: 0.11.0-beta.300(patch_hash=47405b9994b5acf1b4e90b49250358c1ca03649854d59560e7732b72fe336920)(@xterm/xterm@6.1.0-beta.303(patch_hash=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741))
'@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=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))
version: 0.17.0-beta.300(patch_hash=eee5338dd2621ece46e79c61ec06766cd7fadaf79ffdb24e2a8ab68e97ef31f0)(@xterm/xterm@6.1.0-beta.303(patch_hash=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741))
'@xterm/addon-unicode11':
specifier: 0.10.0-beta.300
version: 0.10.0-beta.300(@xterm/xterm@6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))
version: 0.10.0-beta.300(@xterm/xterm@6.1.0-beta.303(patch_hash=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741))
'@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=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))
version: 0.13.0-beta.300(@xterm/xterm@6.1.0-beta.303(patch_hash=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741))
'@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=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))
version: 0.20.0-beta.299(patch_hash=94687e89a0115e6e6aa102837f986debdc029c091527ee5eb4a4e17ceaf9473e)(@xterm/xterm@6.1.0-beta.303(patch_hash=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741))
'@xterm/xterm':
specifier: 6.1.0-beta.303
version: 6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e)
version: 6.1.0-beta.303(patch_hash=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741)
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=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))':
'@xterm/addon-fit@0.12.0-beta.300(@xterm/xterm@6.1.0-beta.303(patch_hash=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741))':
dependencies:
'@xterm/xterm': 6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e)
'@xterm/xterm': 6.1.0-beta.303(patch_hash=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741)
'@xterm/addon-image@0.10.0-beta.300(patch_hash=5fc280019957573eefe8daa2969534d6090ddb29c6b5842b8f22e99dc1ce3146)(@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=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741))':
dependencies:
'@xterm/xterm': 6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e)
'@xterm/xterm': 6.1.0-beta.303(patch_hash=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741)
'@xterm/addon-ligatures@0.11.0-beta.300(patch_hash=47405b9994b5acf1b4e90b49250358c1ca03649854d59560e7732b72fe336920)(@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=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741))':
dependencies:
'@xterm/xterm': 6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e)
'@xterm/xterm': 6.1.0-beta.303(patch_hash=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741)
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=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e))':
'@xterm/addon-search@0.17.0-beta.300(patch_hash=eee5338dd2621ece46e79c61ec06766cd7fadaf79ffdb24e2a8ab68e97ef31f0)(@xterm/xterm@6.1.0-beta.303(patch_hash=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741))':
dependencies:
'@xterm/xterm': 6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e)
'@xterm/xterm': 6.1.0-beta.303(patch_hash=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741)
'@xterm/addon-serialize@0.15.0-beta.300(patch_hash=851eac3d75e6d8c013b9f4c053e61d824b23965cb19ecc28e335e05059f3a294)(@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=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741))':
dependencies:
'@xterm/xterm': 6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e)
'@xterm/xterm': 6.1.0-beta.303(patch_hash=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741)
'@xterm/addon-unicode11@0.10.0-beta.300(@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=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741))':
dependencies:
'@xterm/xterm': 6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e)
'@xterm/xterm': 6.1.0-beta.303(patch_hash=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741)
'@xterm/addon-web-links@0.13.0-beta.300(@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=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741))':
dependencies:
'@xterm/xterm': 6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e)
'@xterm/xterm': 6.1.0-beta.303(patch_hash=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741)
'@xterm/addon-webgl@0.20.0-beta.299(patch_hash=94687e89a0115e6e6aa102837f986debdc029c091527ee5eb4a4e17ceaf9473e)(@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=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741))':
dependencies:
'@xterm/xterm': 6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e)
'@xterm/xterm': 6.1.0-beta.303(patch_hash=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741)
'@xterm/headless@6.1.0-beta.302': {}
'@xterm/xterm@6.1.0-beta.303(patch_hash=f3605e8214243b0c8b8a9eb356a82df12b294ad416efebafd267477d512b0b1e)': {}
'@xterm/xterm@6.1.0-beta.303(patch_hash=fdca0d1b959fbcd4c099f2d1974b491da3ef891eb0db612bff806844802a3741)': {}
abbrev@4.0.0: {}