diff options
| author | Tianren Dong <tianrendong.dtr@gmail.com> | 2026-05-15 02:42:38 -0400 |
|---|---|---|
| committer | Tianren Dong <tianrendong.dtr@gmail.com> | 2026-05-15 02:42:38 -0400 |
| commit | 0ce964f978a613e6dbe624a09210fd71b420546e (patch) | |
| tree | 8bd1be3fa134f447003af355dc2a101bae84f807 /extensions/chrome-profile-bridge/index.ts | |
| parent | 2f0384423d36b38b6f9552a78ca3d8d3fec1e75d (diff) | |
Clear pi-chrome singleton on shutdown
Diffstat (limited to 'extensions/chrome-profile-bridge/index.ts')
| -rw-r--r-- | extensions/chrome-profile-bridge/index.ts | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/extensions/chrome-profile-bridge/index.ts b/extensions/chrome-profile-bridge/index.ts index 5c72da6..f96bb12 100644 --- a/extensions/chrome-profile-bridge/index.ts +++ b/extensions/chrome-profile-bridge/index.ts @@ -419,8 +419,9 @@ function StringEnum<T extends readonly [string, ...string[]]>(values: T) { } export default function (pi: ExtensionAPI): void { + const instanceToken = Symbol("pi-chrome-instance"); const globalState = globalThis as typeof globalThis & { - [PI_CHROME_GLOBAL_KEY]?: { version: string; root: string }; + [PI_CHROME_GLOBAL_KEY]?: { version: string; root: string; token: symbol }; }; const alreadyLoaded = globalState[PI_CHROME_GLOBAL_KEY]; if (alreadyLoaded) { @@ -429,7 +430,7 @@ export default function (pi: ExtensionAPI): void { ); return; } - globalState[PI_CHROME_GLOBAL_KEY] = { version: PI_CHROME_VERSION, root: extensionRoot() }; + globalState[PI_CHROME_GLOBAL_KEY] = { version: PI_CHROME_VERSION, root: extensionRoot(), token: instanceToken }; const bridge = new ChromeProfileBridge(DEFAULT_HOST, DEFAULT_PORT); let backgroundDefault = false; @@ -490,6 +491,9 @@ export default function (pi: ExtensionAPI): void { pi.on("session_shutdown", () => { bridge.stop(); + if (globalState[PI_CHROME_GLOBAL_KEY]?.token === instanceToken) { + delete globalState[PI_CHROME_GLOBAL_KEY]; + } }); pi.on("before_agent_start", (event) => { |
