From 654934f5210b7519e57ef2741f05ea963a543bec Mon Sep 17 00:00:00 2001 From: Thomas Kosiewski Date: Wed, 15 Oct 2025 16:55:16 +0200 Subject: [PATCH] add symbol dispose polyfill Change-Id: If26a02daa322502bc9df644db5add43ae9617fab Signed-off-by: Thomas Kosiewski --- bun.lock | 5 +++++ jest.config.js | 4 +++- package.json | 1 + src/main.ts | 1 + tests/setup.ts | 11 +++++++++++ 5 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 tests/setup.ts diff --git a/bun.lock b/bun.lock index 8161b7412..0f8213cbd 100644 --- a/bun.lock +++ b/bun.lock @@ -13,6 +13,7 @@ "cmdk": "^1.0.0", "crc-32": "^1.2.2", "diff": "^8.0.2", + "disposablestack": "^1.1.7", "jsonc-parser": "^3.3.1", "lru-cache": "^11.2.2", "markdown-it": "^14.1.0", @@ -1051,6 +1052,8 @@ "dir-glob": ["dir-glob@3.0.1", "", { "dependencies": { "path-type": "^4.0.0" } }, "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA=="], + "disposablestack": ["disposablestack@1.1.7", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.0.3", "get-intrinsic": "^1.2.6", "globalthis": "^1.0.4", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "internal-slot": "^1.0.7", "suppressed-error": "^1.0.3" } }, "sha512-UmyM57A8fTz5Hn4pYO/q2YdQ7fApPmxT3T5eA3Igr4UnUZ/HY6zEWSUVR7QT6kiM4udOyljC8Ag2jn7DnaSUqA=="], + "dmg-builder": ["dmg-builder@24.13.3", "", { "dependencies": { "app-builder-lib": "24.13.3", "builder-util": "24.13.1", "builder-util-runtime": "9.2.4", "fs-extra": "^10.1.0", "iconv-lite": "^0.6.2", "js-yaml": "^4.1.0" }, "optionalDependencies": { "dmg-license": "^1.0.11" } }, "sha512-rcJUkMfnJpfCboZoOOPf4L29TRtEieHNOeAbYPWPxlaBw/Z1RKrRA86dOI9rwaI4tQSc/RD82zTNHprfUHXsoQ=="], "dmg-license": ["dmg-license@1.0.11", "", { "dependencies": { "@types/plist": "^3.0.1", "@types/verror": "^1.10.3", "ajv": "^6.10.0", "crc": "^3.8.0", "iconv-corefoundation": "^1.1.7", "plist": "^3.0.4", "smart-buffer": "^4.0.2", "verror": "^1.10.0" }, "os": "darwin", "bin": { "dmg-license": "bin/dmg-license.js" } }, "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q=="], @@ -2075,6 +2078,8 @@ "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], + "suppressed-error": ["suppressed-error@1.0.3", "", { "dependencies": { "define-data-property": "^1.1.1", "define-properties": "^1.2.1", "es-abstract": "^1.22.3", "es-errors": "^1.1.0", "function-bind": "^1.1.2", "globalthis": "^1.0.3", "has-property-descriptors": "^1.0.1", "set-function-name": "^2.0.1" } }, "sha512-6+ZiCVUmDLFRyYRswTrDTYWaM/IT01W/cqQBLnnyg8T0njVrWj3tP+EXFevXk6qK61yDXnmZsOFVzFfYoUy/KA=="], + "svg-parser": ["svg-parser@2.0.4", "", {}, "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ=="], "synckit": ["synckit@0.11.11", "", { "dependencies": { "@pkgr/core": "^0.2.9" } }, "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw=="], diff --git a/jest.config.js b/jest.config.js index 3a1661415..bf369c4ed 100644 --- a/jest.config.js +++ b/jest.config.js @@ -8,7 +8,7 @@ module.exports = { "!src/preload.ts", "!src/main.ts", // Exclude main Electron file from coverage ], - // setupFilesAfterEnv: ["/test/setup.ts"], // Uncomment when setup.ts exists + setupFilesAfterEnv: ["/tests/setup.ts"], moduleNameMapper: { "^@/(.*)$": "/src/$1", }, @@ -17,6 +17,8 @@ module.exports = { "ts-jest", { tsconfig: { + target: "ES2020", + lib: ["ES2020", "DOM"], esModuleInterop: true, allowSyntheticDefaultImports: true, }, diff --git a/package.json b/package.json index 99f3a10b6..b68af1364 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "cmdk": "^1.0.0", "crc-32": "^1.2.2", "diff": "^8.0.2", + "disposablestack": "^1.1.7", "jsonc-parser": "^3.3.1", "lru-cache": "^11.2.2", "markdown-it": "^14.1.0", diff --git a/src/main.ts b/src/main.ts index a3c40dfee..e05666fbe 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,5 +1,6 @@ // Enable source map support for better error stack traces in production import "source-map-support/register"; +import "disposablestack/auto"; import type { MenuItemConstructorOptions } from "electron"; import { app, BrowserWindow, ipcMain as electronIpcMain, Menu, shell, dialog } from "electron"; diff --git a/tests/setup.ts b/tests/setup.ts new file mode 100644 index 000000000..daf20d3bf --- /dev/null +++ b/tests/setup.ts @@ -0,0 +1,11 @@ +/** + * Jest setup file to ensure Symbol.dispose is available in test environment. + * Required for explicit resource management (using declarations) to work. + */ + +import assert from "assert"; + +require("disposablestack/auto"); + +assert.equal(typeof Symbol.dispose, "symbol"); +assert.equal(typeof Symbol.asyncDispose, "symbol");