diff --git a/.eslintrc.json b/.eslintrc.json index 43d0d3ed1b..1babeb3118 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -55,7 +55,7 @@ "ignoreCase": true } ], - "import/no-named-as-default": "error", + // "import/no-named-as-default": "error", "n/no-process-exit": "off" }, "overrides": [ @@ -73,6 +73,11 @@ "plugin:@typescript-eslint/recommended", "plugin:import/typescript" ], + "settings": { + "import/resolver": { + "typescript": true + } + }, "rules": { // There is no "recommended" ruleset for tsdoc yet. "tsdoc/syntax": "warn", @@ -95,7 +100,9 @@ "vars": "all" } ], - "@typescript-eslint/only-throw-error": "error" + "@typescript-eslint/only-throw-error": "error", + "import/default": "off", + "import/no-named-as-default-member": "off" } }, { @@ -111,7 +118,7 @@ ], "rules": { "global-require": "off", - "import/no-dynamic-require": "off", + // "import/no-dynamic-require": "off", "n/no-extraneous-import": "off", "n/no-unpublished-import": "off", "n/no-unpublished-require": "off", diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3e0dc69fd1..1f2ed4c46a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,12 +27,6 @@ jobs: with: node-version-file: .nvmrc - # TODO(Forge 8): remove this once we can upgrade to `@electron/rebuild` v4 - - name: Set up Python 3.11 (with distutils) - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 - with: - python-version: 3.11 - - name: Install dependencies run: yarn install --immutable @@ -85,12 +79,6 @@ jobs: with: node-version-file: .nvmrc - # TODO(Forge 8): remove this once we can upgrade to `@electron/rebuild` v4 - - name: Set up Python 3.11 (with distutils) - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 - with: - python-version: 3.11 - - name: Use D:\\ drive for Windows if: runner.os == 'Windows' shell: bash @@ -168,12 +156,6 @@ jobs: with: node-version-file: .nvmrc - # TODO(Forge 8): remove this once we can upgrade to `@electron/rebuild` v4 - - name: Set up Python 3.11 (with distutils) - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 - with: - python-version: 3.11 - - name: Use D:\\ drive for Windows if: runner.os == 'Windows' shell: bash diff --git a/.markdownlintignore b/.markdownlintignore index c6639bd9f5..bf9e768489 100644 --- a/.markdownlintignore +++ b/.markdownlintignore @@ -1,2 +1,2 @@ **/node_modules/** -CHANGELOG.md +CHANGELOG.md \ No newline at end of file diff --git a/.nvmrc b/.nvmrc index 2bd5a0a98a..f1c8f6b0d0 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22 +22.18 diff --git a/package.json b/package.json index a3e3feba22..a2fdf6f721 100644 --- a/package.json +++ b/package.json @@ -3,8 +3,9 @@ "version": "0.0.0-development", "private": true, "license": "MIT", + "type": "module", "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "scripts": { "clean": "node -e \"fs.rmSync('dist', { recursive: true, force: true })\" && lerna exec -- \"node -e \\\"fs.rmSync('dist', { recursive: true, force: true })\\\" && node -e \\\"fs.rmSync('tsconfig.tsbuildinfo', { recursive: true, force: true })\\\"\"", @@ -31,10 +32,6 @@ "@aws-sdk/client-s3": "^3.654.0", "@aws-sdk/lib-storage": "^3.654.0", "@aws-sdk/types": "^3.654.0", - "@electron/get": "^3.0.0", - "@electron/osx-sign": "^1.0.5", - "@electron/packager": "^18.3.5", - "@electron/rebuild": "^3.7.0", "@google-cloud/storage": "^7.5.0", "@inquirer/prompts": "^6.0.1", "@listr2/prompt-adapter-inquirer": "^2.0.22", @@ -57,17 +54,13 @@ "find-up": "^5.0.0", "form-data": "^4.0.0", "fs-extra": "^10.0.0", - "got": "^11.8.5", + "got": "^14.0.0", "html-webpack-plugin": "^5.5.3", - "interpret": "^3.1.1", "jiti": "^2.4.2", "listr2": "^7.0.2", - "lodash": "^4.17.20", "log-symbols": "^4.0.0", "mime-types": "^2.1.25", - "node-fetch": "^2.6.7", "parse-author": "^2.0.0", - "rechoir": "^0.8.0", "semver": "^7.2.1", "source-map-support": "^0.5.13", "tsx": "^4.21.0", @@ -82,9 +75,11 @@ "xterm-addon-search": "^0.8.0" }, "devDependencies": { - "@electron/fuses": "^1.0.0", + "@electron/fuses": "^2.0.0", "@electron/lint-roller": "^3.1.3", - "@types/cross-spawn": "^6.0.1", + "@tsconfig/node22": "^22.0.5", + "@types/cross-spawn": "^6.0.6", + "@types/cross-zip": "^4.0.2", "@types/debug": "^4.1.12", "@types/express": "^4.17.9", "@types/express-ws": "^3.0.0", @@ -92,12 +87,10 @@ "@types/interpret": "^1.1.1", "@types/keyv": "^3.1.4", "@types/listr": "^0.14.2", - "@types/lodash": "^4.14.166", + "@types/lodash-es": "^4.17.12", "@types/mime-types": "^2.1.0", "@types/minimist": "^1.2.0", - "@types/node": "^18.0.3", - "@types/node-fetch": "^2.5.5", - "@types/rechoir": "^0.6.1", + "@types/node": "^22.10.7", "@types/semver": "^7.3.4", "@types/which": "^2.0.0", "@typescript-eslint/eslint-plugin": "^8.0.0", @@ -107,6 +100,7 @@ "electron-installer-common": "^0.10.2", "eslint": "^8.56.0", "eslint-config-prettier": "^10.0.1", + "eslint-import-resolver-typescript": "^4.4.4", "eslint-plugin-import": "^2.31.0", "eslint-plugin-n": "^17.15.1", "eslint-plugin-promise": "^7.2.1", @@ -115,17 +109,17 @@ "husky": "^7.0.1", "lerna": "^9.0.0", "lint-staged": "^12.1.7", + "lodash-es": "^4.17.21", "markdownlint-cli2": "^0.19.1", "minimist": "^1.2.6", "msw": "^2.7.0", "prettier": "^3.6.2", "ref-napi": "^3.0.3", "typedoc": "0.25.13", - "typescript": "~5.4.5", + "typescript": "5.9.3", "verdaccio": "^6.2.4", "vitest": "^4.0.14", - "xvfb-maybe": "^0.2.1", - "yaml-hook": "^1.0.0" + "xvfb-maybe": "^0.2.1" }, "optionalDependencies": { "@malept/electron-installer-flatpak": "^0.11.4", @@ -138,9 +132,6 @@ "electron-winstaller": "^5.3.0", "electron-wix-msi": "^5.1.3" }, - "peerDependencies": { - "@electron/fuses": "^1.0.0" - }, "lint-staged": { "*.{html,json,md,yml}": "prettier --write --experimental-cli", "*.{js,ts, cjs, mjs, cts, mts}": [ diff --git a/packages/api/cli/package.json b/packages/api/cli/package.json index c4770cc625..d9530cdda2 100644 --- a/packages/api/cli/package.json +++ b/packages/api/cli/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/cli", "version": "8.0.0-alpha.4", + "type": "module", "description": "A complete tool for building modern Electron applications", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -18,7 +19,7 @@ "@electron-forge/core": "workspace:*", "@electron-forge/core-utils": "workspace:*", "@electron-forge/shared-types": "workspace:*", - "@electron/get": "^3.0.0", + "@electron/get": "^4.0.2", "@inquirer/prompts": "^6.0.1", "@listr2/prompt-adapter-inquirer": "^2.0.22", "chalk": "^4.0.0", @@ -30,7 +31,7 @@ "semver": "^7.2.1" }, "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "funding": [ { diff --git a/packages/api/cli/spec/cli.slow.spec.ts b/packages/api/cli/spec/cli.slow.spec.ts index f922e2fef8..0496bd5f11 100644 --- a/packages/api/cli/spec/cli.slow.spec.ts +++ b/packages/api/cli/spec/cli.slow.spec.ts @@ -6,7 +6,7 @@ import { describe, expect, it } from 'vitest'; function runForgeCLI(...extraArgs: string[]): Promise { const args = [ 'tsx', - path.resolve(__dirname, '../src/electron-forge.ts'), + path.resolve(import.meta.dirname, '../src/electron-forge.ts'), ...extraArgs, ]; return spawn('npx', args); diff --git a/packages/api/cli/src/electron-forge-import.ts b/packages/api/cli/src/electron-forge-import.ts index fbde84eedf..0380167518 100644 --- a/packages/api/cli/src/electron-forge-import.ts +++ b/packages/api/cli/src/electron-forge-import.ts @@ -1,10 +1,10 @@ import { api } from '@electron-forge/core'; import { program } from 'commander'; -import './util/terminate'; -import packageJSON from '../package.json'; +import './util/terminate.js'; +import packageJSON from '../package.json' with { type: 'json' }; -import { resolveWorkingDir } from './util/resolve-working-dir'; +import { resolveWorkingDir } from './util/resolve-working-dir.js'; program .version(packageJSON.version, '-V, --version', 'Output the current version.') diff --git a/packages/api/cli/src/electron-forge-init.ts b/packages/api/cli/src/electron-forge-init.ts index a3dadb6e27..2811436eeb 100644 --- a/packages/api/cli/src/electron-forge-init.ts +++ b/packages/api/cli/src/electron-forge-init.ts @@ -7,10 +7,10 @@ import chalk from 'chalk'; import { program } from 'commander'; import { Listr } from 'listr2'; -import './util/terminate'; -import packageJSON from '../package.json'; +import './util/terminate.js'; +import packageJSON from '../package.json' with { type: 'json' }; -import { resolveWorkingDir } from './util/resolve-working-dir'; +import { resolveWorkingDir } from './util/resolve-working-dir.js'; // eslint-disable-next-line n/no-extraneous-import -- we get this from `@inquirer/prompts` import type { Prompt } from '@inquirer/type'; diff --git a/packages/api/cli/src/electron-forge-make.ts b/packages/api/cli/src/electron-forge-make.ts index 2da4ae0bc3..41449ffe55 100644 --- a/packages/api/cli/src/electron-forge-make.ts +++ b/packages/api/cli/src/electron-forge-make.ts @@ -3,10 +3,10 @@ import { api, MakeOptions } from '@electron-forge/core'; import chalk from 'chalk'; import { program } from 'commander'; -import './util/terminate'; -import packageJSON from '../package.json'; +import './util/terminate.js'; +import packageJSON from '../package.json' with { type: 'json' }; -import { resolveWorkingDir } from './util/resolve-working-dir'; +import { resolveWorkingDir } from './util/resolve-working-dir.js'; export async function getMakeOptions(): Promise { let workingDir: string; diff --git a/packages/api/cli/src/electron-forge-package.ts b/packages/api/cli/src/electron-forge-package.ts index 8e6e273566..5e28d8b0f2 100644 --- a/packages/api/cli/src/electron-forge-package.ts +++ b/packages/api/cli/src/electron-forge-package.ts @@ -2,10 +2,10 @@ import { initializeProxy } from '@electron/get'; import { api, PackageOptions } from '@electron-forge/core'; import { program } from 'commander'; -import './util/terminate'; -import packageJSON from '../package.json'; +import './util/terminate.js'; +import packageJSON from '../package.json' with { type: 'json' }; -import { resolveWorkingDir } from './util/resolve-working-dir'; +import { resolveWorkingDir } from './util/resolve-working-dir.js'; program .version(packageJSON.version, '-V, --version', 'Output the current version') diff --git a/packages/api/cli/src/electron-forge-publish.ts b/packages/api/cli/src/electron-forge-publish.ts index e331c7becd..d5018ecfe1 100644 --- a/packages/api/cli/src/electron-forge-publish.ts +++ b/packages/api/cli/src/electron-forge-publish.ts @@ -3,11 +3,11 @@ import { api, PublishOptions } from '@electron-forge/core'; import chalk from 'chalk'; import { program } from 'commander'; -import './util/terminate'; -import packageJSON from '../package.json'; +import './util/terminate.js'; +import packageJSON from '../package.json' with { type: 'json' }; -import { getMakeOptions } from './electron-forge-make'; -import { resolveWorkingDir } from './util/resolve-working-dir'; +import { getMakeOptions } from './electron-forge-make.js'; +import { resolveWorkingDir } from './util/resolve-working-dir.js'; program .version(packageJSON.version, '-V, --version', 'Output the current version.') diff --git a/packages/api/cli/src/electron-forge-start.ts b/packages/api/cli/src/electron-forge-start.ts index 1af1cb3e71..fbecc1b4c8 100644 --- a/packages/api/cli/src/electron-forge-start.ts +++ b/packages/api/cli/src/electron-forge-start.ts @@ -2,10 +2,10 @@ import { api, StartOptions } from '@electron-forge/core'; import { ElectronProcess } from '@electron-forge/shared-types'; import { Option, program } from 'commander'; -import './util/terminate'; -import packageJSON from '../package.json'; +import './util/terminate.js'; +import packageJSON from '../package.json' with { type: 'json' }; -import { resolveWorkingDir } from './util/resolve-working-dir'; +import { resolveWorkingDir } from './util/resolve-working-dir.js'; (async () => { let commandArgs = process.argv; diff --git a/packages/api/cli/src/electron-forge.ts b/packages/api/cli/src/electron-forge.ts index 89a0f1d9e1..792788d49f 100755 --- a/packages/api/cli/src/electron-forge.ts +++ b/packages/api/cli/src/electron-forge.ts @@ -6,10 +6,10 @@ import { program } from 'commander'; import logSymbols from 'log-symbols'; import semver from 'semver'; -import packageJSON from '../package.json'; -import './util/terminate'; +import packageJSON from '../package.json' with { type: 'json' }; +import './util/terminate.js'; -import { checkSystem, SystemCheckContext } from './util/check-system'; +import { checkSystem, SystemCheckContext } from './util/check-system.js'; if (!semver.satisfies(process.versions.node, packageJSON.engines.node)) { console.error( @@ -19,7 +19,8 @@ if (!semver.satisfies(process.versions.node, packageJSON.engines.node)) { process.exit(1); } -/* eslint-disable-next-line import/order -- Listr2 import contains JS syntax that fails as early as Node 14 */ +// Listr2 might be unsupported in certain versions, so import it after the Node version check. +// eslint-disable-next-line import/order import { Listr } from 'listr2'; program diff --git a/packages/api/core/README.md b/packages/api/core/README.md index c93e5a8c3d..8bff6ec21a 100644 --- a/packages/api/core/README.md +++ b/packages/api/core/README.md @@ -9,7 +9,7 @@ API as a number of simple JS functions. import { api } from '@electron-forge/core'; // Package the current directory as an Electron app -api.package(__dirname); +api.package(import.meta.dirname); ``` The named export `api` has it's methods documented over at [ForgeAPI](https://js.electronforge.io/classes/_electron_forge_core.ForgeAPI.html). diff --git a/packages/api/core/helper/dynamic-import.d.ts b/packages/api/core/helper/dynamic-import.d.ts deleted file mode 100644 index 4d25e1299a..0000000000 --- a/packages/api/core/helper/dynamic-import.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare function dynamicImport(path: string): Promise; -/** Like {@link dynamicImport()}, except it tries out {@link require()} first. */ -export declare function dynamicImportMaybe(path: string): Promise; diff --git a/packages/api/core/helper/dynamic-import.js b/packages/api/core/helper/dynamic-import.js deleted file mode 100644 index fd4fadfb1f..0000000000 --- a/packages/api/core/helper/dynamic-import.js +++ /dev/null @@ -1,23 +0,0 @@ -const url = require('url'); -const fs = require('fs'); - -exports.dynamicImport = async function dynamicImport(path) { - try { - return await import(fs.existsSync(path) ? url.pathToFileURL(path) : path); - } catch (error) { - return Promise.reject(error); - } -}; - -exports.dynamicImportMaybe = async function dynamicImportMaybe(path) { - try { - return require(path); - } catch (e1) { - try { - return await exports.dynamicImport(path); - } catch (e2) { - e1.message = '\n1. ' + e1.message + '\n2. ' + e2.message; - throw e1; - } - } -}; diff --git a/packages/api/core/package.json b/packages/api/core/package.json index 71fe1bbcef..162fd40ee2 100644 --- a/packages/api/core/package.json +++ b/packages/api/core/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/core", "version": "8.0.0-alpha.4", + "type": "module", "description": "A complete tool for building modern Electron applications", "repository": "https://github.com/electron/forge", "main": "dist/api/index.js", @@ -17,12 +18,11 @@ "@electron-forge/maker-squirrel": "workspace:*", "@electron-forge/maker-wix": "workspace:*", "@electron-forge/maker-zip": "workspace:*", - "@electron-forge/template-fixture": "link:./spec/fixture/electron-forge-template-fixture", + "@electron-forge/template-fixture": "portal:./spec/fixture/electron-forge-template-fixture", "@electron-forge/test-utils": "workspace:*", "@types/interpret": "^1.1.1", "@types/progress": "^2.0.5", - "@types/rechoir": "^0.6.1", - "electron-forge-template-fixture-two": "link:./spec/fixture/electron-forge-template-fixture", + "electron-forge-template-fixture-two": "portal:./spec/fixture/electron-forge-template-fixture", "electron-installer-common": "^0.10.2", "vitest": "^4.0.14", "yaml-hook": "^1.0.0" @@ -39,9 +39,9 @@ "@electron-forge/template-webpack": "workspace:*", "@electron-forge/template-webpack-typescript": "workspace:*", "@electron-forge/tracer": "workspace:*", - "@electron/get": "^3.0.0", - "@electron/packager": "^18.3.5", - "@electron/rebuild": "^3.7.0", + "@electron/get": "^4.0.2", + "@electron/packager": "^19.0.1", + "@electron/rebuild": "^4.0.1", "@malept/cross-spawn-promise": "^2.0.0", "@vscode/sudo-prompt": "^9.3.1", "chalk": "^4.0.0", @@ -50,20 +50,17 @@ "filenamify": "^4.1.0", "find-up": "^5.0.0", "fs-extra": "^10.0.0", - "got": "^11.8.5", - "interpret": "^3.1.1", + "got": "^14.0.0", "jiti": "^2.4.2", "listr2": "^7.0.2", - "lodash": "^4.17.20", + "lodash-es": "^4.17.21", "log-symbols": "^4.0.0", - "node-fetch": "^2.6.7", - "rechoir": "^0.8.0", "semver": "^7.2.1", "source-map-support": "^0.5.13", "username": "^5.1.0" }, "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "funding": [ { diff --git a/packages/api/core/spec/fast/init-scripts/init-git.spec.ts b/packages/api/core/spec/fast/init-scripts/init-git.spec.ts index aefae37aad..373c192833 100644 --- a/packages/api/core/spec/fast/init-scripts/init-git.spec.ts +++ b/packages/api/core/spec/fast/init-scripts/init-git.spec.ts @@ -5,7 +5,7 @@ import path from 'node:path'; import { beforeEach, describe, expect, it } from 'vitest'; -import { initGit } from '../../../src/api/init-scripts/init-git'; +import { initGit } from '../../../src/api/init-scripts/init-git.js'; let dir: string; let dirID = Date.now(); diff --git a/packages/api/core/spec/fast/init-scripts/init-npm.spec.ts b/packages/api/core/spec/fast/init-scripts/init-npm.spec.ts index 09aa5772f4..04fa5f1c8a 100644 --- a/packages/api/core/spec/fast/init-scripts/init-npm.spec.ts +++ b/packages/api/core/spec/fast/init-scripts/init-npm.spec.ts @@ -2,12 +2,16 @@ import { PACKAGE_MANAGERS } from '@electron-forge/core-utils'; import { ForgeListrTask } from '@electron-forge/shared-types'; import { beforeEach, describe, expect, it, vi } from 'vitest'; -import { deps, devDeps, initNPM } from '../../../src/api/init-scripts/init-npm'; +import { + deps, + devDeps, + initNPM, +} from '../../../src/api/init-scripts/init-npm.js'; import { DepType, DepVersionRestriction, installDependencies, -} from '../../../src/util/install-dependencies'; +} from '../../../src/util/install-dependencies.js'; vi.mock('../../../src/util/install-dependencies', async (importOriginal) => ({ ...(await importOriginal()), diff --git a/packages/api/core/spec/fast/make.spec.ts b/packages/api/core/spec/fast/make.spec.ts index a3934737b2..519f4e695b 100644 --- a/packages/api/core/spec/fast/make.spec.ts +++ b/packages/api/core/spec/fast/make.spec.ts @@ -13,7 +13,7 @@ vi.mock(import('@electron-forge/core-utils'), async (importOriginal) => { }); describe('make', () => { - const fixtureDir = path.resolve(__dirname, '../fixture'); + const fixtureDir = path.resolve(import.meta.dirname, '../fixture'); it.todo('should call "package"'); diff --git a/packages/api/core/spec/fast/publish.spec.ts b/packages/api/core/spec/fast/publish.spec.ts index 860cccd13d..d5c714efa7 100644 --- a/packages/api/core/spec/fast/publish.spec.ts +++ b/packages/api/core/spec/fast/publish.spec.ts @@ -10,8 +10,8 @@ import { afterAll, beforeAll, describe, expect, it, vi } from 'vitest'; import { listrMake } from '../../src/api/make'; import publish from '../../src/api/publish'; -import findConfig from '../../src/util/forge-config'; -import importSearch from '../../src/util/import-search'; +import findConfig from '../../src/util/forge-config.js'; +import importSearch from '../../src/util/import-search.js'; vi.mock(import('../../src/api/make'), async (importOriginal) => { const mod = await importOriginal(); @@ -48,7 +48,7 @@ vi.mock(import('../../src/util/import-search'), async (importOriginal) => { describe('publish', () => { it('calls "make"', async () => { await publish({ - dir: __dirname, + dir: import.meta.dirname, interactive: false, }); expect(vi.mocked(listrMake)).toHaveBeenCalledOnce(); @@ -80,7 +80,7 @@ describe('publish', () => { }); await publish({ - dir: __dirname, + dir: import.meta.dirname, interactive: false, }); @@ -110,7 +110,7 @@ describe('publish', () => { ); await publish({ - dir: __dirname, + dir: import.meta.dirname, interactive: false, publishTargets: [new MockPublisher()], }); @@ -135,7 +135,7 @@ describe('publish', () => { vi.mocked(importSearch).mockResolvedValue(MockPublisher); await publish({ - dir: __dirname, + dir: import.meta.dirname, interactive: false, }); @@ -173,7 +173,7 @@ describe('publish', () => { it('dryRun creates hash JSON files', async () => { await publish({ - dir: __dirname, + dir: import.meta.dirname, outDir: tmpDir, interactive: false, dryRun: true, @@ -204,7 +204,7 @@ describe('publish', () => { MockPublisher.prototype.__isElectronForgePublisher = true; await publish({ - dir: __dirname, + dir: import.meta.dirname, outDir: tmpDir, interactive: false, dryRunResume: true, diff --git a/packages/api/core/spec/fast/start.spec.ts b/packages/api/core/spec/fast/start.spec.ts index 50286067b9..2096eb8947 100644 --- a/packages/api/core/spec/fast/start.spec.ts +++ b/packages/api/core/spec/fast/start.spec.ts @@ -4,9 +4,9 @@ import { ElectronProcess } from '@electron-forge/shared-types'; import { describe, expect, it, vi } from 'vitest'; import start from '../../src/api/start'; -import findConfig from '../../src/util/forge-config'; -import { readMutatedPackageJson } from '../../src/util/read-package-json'; -import resolveDir from '../../src/util/resolve-dir'; +import findConfig from '../../src/util/forge-config.js'; +import { readMutatedPackageJson } from '../../src/util/read-package-json.js'; +import resolveDir from '../../src/util/resolve-dir.js'; vi.mock(import('node:child_process'), async (importOriginal) => { const mod = await importOriginal(); @@ -73,7 +73,7 @@ vi.mock(import('../../src/util/hook'), async (importOriginal) => { describe('start', () => { it('spawns electron in the correct dir', async () => { await start({ - dir: __dirname, + dir: import.meta.dirname, interactive: false, }); expect(vi.mocked(spawn)).toHaveBeenCalledOnce(); @@ -98,7 +98,7 @@ describe('start', () => { } as any); await start({ - dir: __dirname, + dir: import.meta.dirname, interactive: false, }); @@ -107,7 +107,7 @@ describe('start', () => { it("should pass electron '.' as the app path if not specified", async () => { await start({ - dir: __dirname, + dir: import.meta.dirname, interactive: false, }); expect(vi.mocked(spawn)).toHaveBeenCalledOnce(); @@ -118,7 +118,7 @@ describe('start', () => { it('should pass electron the app path if specified', async () => { await start({ - dir: __dirname, + dir: import.meta.dirname, interactive: false, appPath: './path/to/app.js', }); @@ -133,7 +133,7 @@ describe('start', () => { it('should enable electron logging if enableLogging=true', async () => { await start({ - dir: __dirname, + dir: import.meta.dirname, interactive: false, enableLogging: true, }); @@ -146,7 +146,7 @@ describe('start', () => { it('should enable RUN_AS_NODE if runAsNode=true', async () => { await start({ - dir: __dirname, + dir: import.meta.dirname, interactive: false, runAsNode: true, }); @@ -159,7 +159,7 @@ describe('start', () => { it('should disable RUN_AS_NODE if runAsNode=false', async () => { await start({ - dir: __dirname, + dir: import.meta.dirname, interactive: false, runAsNode: false, }); @@ -173,7 +173,7 @@ describe('start', () => { const args = ['magic_arg', 123, 'thingy']; await start({ args, - dir: __dirname, + dir: import.meta.dirname, interactive: false, }); expect(vi.mocked(spawn)).toHaveBeenCalledOnce(); @@ -184,7 +184,7 @@ describe('start', () => { const args = ['magic_arg', 123, 'thingy']; await start({ args, - dir: __dirname, + dir: import.meta.dirname, interactive: false, inspect: true, }); @@ -200,7 +200,7 @@ describe('start', () => { const args = ['magic_arg', 123, 'thingy']; await start({ args, - dir: __dirname, + dir: import.meta.dirname, interactive: false, inspectBrk: true, }); @@ -217,7 +217,7 @@ describe('start', () => { vi.mocked(spawn).mockResolvedValueOnce(child); await expect( start({ - dir: __dirname, + dir: import.meta.dirname, interactive: false, }), ).resolves.toEqual(child); @@ -227,7 +227,7 @@ describe('start', () => { vi.mocked(resolveDir).mockResolvedValueOnce(null); await expect( start({ - dir: __dirname, + dir: import.meta.dirname, interactive: false, }), ).rejects.toThrowError('Failed to locate startable Electron application'); @@ -237,7 +237,7 @@ describe('start', () => { vi.mocked(readMutatedPackageJson).mockResolvedValueOnce({}); await expect( start({ - dir: __dirname, + dir: import.meta.dirname, interactive: false, }), ).rejects.toThrowError("Please set your application's 'version' in"); diff --git a/packages/api/core/spec/fast/util/electron-executable.spec.ts b/packages/api/core/spec/fast/util/electron-executable.spec.ts index 8cc01070b1..7ad046a7a6 100644 --- a/packages/api/core/spec/fast/util/electron-executable.spec.ts +++ b/packages/api/core/spec/fast/util/electron-executable.spec.ts @@ -5,7 +5,7 @@ import { describe, expect, it } from 'vitest'; import locateElectronExecutable from '../../../src/util/electron-executable'; const fixtureDir = path.resolve( - __dirname, + import.meta.dirname, '..', '..', 'fixture', diff --git a/packages/api/core/spec/fast/util/forge-config.spec.ts b/packages/api/core/spec/fast/util/forge-config.spec.ts index 7573abf6fb..d0d06a8ebd 100644 --- a/packages/api/core/spec/fast/util/forge-config.spec.ts +++ b/packages/api/core/spec/fast/util/forge-config.spec.ts @@ -7,7 +7,7 @@ import findConfig, { forgeConfigIsValidFilePath, registerForgeConfigForDirectory, unregisterForgeConfigForDirectory, -} from '../../../src/util/forge-config'; +} from '../../../src/util/forge-config.js'; const DEFAULTS = { packagerConfig: {}, @@ -20,7 +20,7 @@ const DEFAULTS = { describe('findConfig', () => { it('falls back to default if no config exists', async () => { const fixturePath = path.resolve( - __dirname, + import.meta.dirname, '../../fixture/no_forge_config', ); const config = await findConfig(fixturePath); @@ -31,7 +31,10 @@ describe('findConfig', () => { }); it('sets a pluginInterface property', async () => { - const fixturePath = path.resolve(__dirname, '../../fixture/dummy_app'); + const fixturePath = path.resolve( + import.meta.dirname, + '../../fixture/dummy_app', + ); const config = await findConfig(fixturePath); expect(config).toEqual( expect.objectContaining({ pluginInterface: expect.objectContaining({}) }), @@ -41,7 +44,7 @@ describe('findConfig', () => { it('should resolve undefined from fromBuildIdentifier if no value is provided', async () => { type ResolveUndefConfig = ResolvedForgeConfig & { topLevelUndef?: string }; const conf = (await findConfig( - path.resolve(__dirname, '../../fixture/dummy_js_conf'), + path.resolve(import.meta.dirname, '../../fixture/dummy_js_conf'), )) as ResolveUndefConfig; expect(conf.topLevelUndef).toEqual(undefined); }); @@ -55,7 +58,7 @@ describe('findConfig', () => { }; }; const conf = (await findConfig( - path.resolve(__dirname, '../../fixture/dummy_js_conf'), + path.resolve(import.meta.dirname, '../../fixture/dummy_js_conf'), )) as NestedConfig; expect(Array.isArray(conf.sub.prop.inArray)).toEqual(true); }); @@ -63,7 +66,7 @@ describe('findConfig', () => { it('should leave regexps intact', async () => { type RegExpConfig = ResolvedForgeConfig & { regexp: RegExp }; const conf = (await findConfig( - path.resolve(__dirname, '../../fixture/dummy_js_conf'), + path.resolve(import.meta.dirname, '../../fixture/dummy_js_conf'), )) as RegExpConfig; expect(conf.regexp).toBeInstanceOf(RegExp); expect(conf.regexp.test('foo')).toEqual(true); @@ -73,7 +76,7 @@ describe('findConfig', () => { describe('from package.json', () => { it('throws if the "config.forge" property is not an object or requirable path', async () => { const fixturePath = path.resolve( - __dirname, + import.meta.dirname, '../../fixture/bad_forge_config', ); const err = @@ -86,7 +89,7 @@ describe('findConfig', () => { .spyOn(console, 'error') .mockImplementation(() => undefined); const fixturePath = path.resolve( - __dirname, + import.meta.dirname, '../../fixture/bad_external_forge_config', ); const err = /Failed to parse/; @@ -95,7 +98,10 @@ describe('findConfig', () => { }); it('should resolve the "config.forge" object', async () => { - const fixturePath = path.resolve(__dirname, '../../fixture/dummy_app'); + const fixturePath = path.resolve( + import.meta.dirname, + '../../fixture/dummy_app', + ); const config = await findConfig(fixturePath); expect(config).toEqual({ ...DEFAULTS, @@ -111,7 +117,7 @@ describe('findConfig', () => { describe('from forge.config.js', () => { it('resolves when "config.forge" points to a JS file', async () => { const fixturePath = path.resolve( - __dirname, + import.meta.dirname, '../../fixture/dummy_js_conf', ); const config = await findConfig(fixturePath); @@ -128,7 +134,7 @@ describe('findConfig', () => { it('falls back to forge.config.js if "config.forge" does not exist', async () => { const fixturePath = path.resolve( - __dirname, + import.meta.dirname, '../../fixture/dummy_default_js_conf', ); const conf = await findConfig(fixturePath); @@ -137,7 +143,7 @@ describe('findConfig', () => { it('maintains functions from the JS export', async () => { const fixturePath = path.resolve( - __dirname, + import.meta.dirname, '../../fixture/dummy_js_conf', ); const conf = await findConfig(fixturePath); @@ -149,7 +155,7 @@ describe('findConfig', () => { it('should support async configs', async () => { const fixturePath = path.resolve( - __dirname, + import.meta.dirname, '../../fixture/async_forge_config', ); const config = await findConfig(fixturePath); @@ -171,7 +177,10 @@ describe('findConfig', () => { defaultResolved: boolean; }; const conf = (await findConfig( - path.resolve(__dirname, '../../fixture/dummy_default_esm_conf'), + path.resolve( + import.meta.dirname, + '../../fixture/dummy_default_esm_conf', + ), )) as DefaultResolvedConfig; expect(conf.buildIdentifier).toEqual('esm'); expect(conf.defaultResolved).toEqual(true); @@ -181,7 +190,10 @@ describe('findConfig', () => { describe('proxied objects', () => { it('allows access to built-ins', async () => { // Why: This needs to get refactored anyway. - const fixture = path.resolve(__dirname, '../../fixture/dummy_js_conf'); + const fixture = path.resolve( + import.meta.dirname, + '../../fixture/dummy_js_conf', + ); // eslint-disable-next-line @typescript-eslint/no-explicit-any const conf: any = await findConfig(fixture); expect(conf.packagerConfig.baz.hasOwnProperty).toBeTypeOf('function'); @@ -195,7 +207,7 @@ describe('findConfig', () => { // Why: This needs to get refactored anyway. // eslint-disable-next-line @typescript-eslint/no-explicit-any const conf: any = await findConfig( - path.resolve(__dirname, '../../fixture/dummy_js_conf'), + path.resolve(import.meta.dirname, '../../fixture/dummy_js_conf'), ); expect(conf.packagerConfig.baz.hasOwnProperty).toBeTypeOf('function'); expect(() => { @@ -229,7 +241,7 @@ describe('findConfig', () => { }; }; const conf = (await findConfig( - path.resolve(__dirname, '../../fixture/dummy_js_conf'), + path.resolve(import.meta.dirname, '../../fixture/dummy_js_conf'), )) as MappedConfig; expect(conf.s3.secretAccessKey).toBe(undefined); @@ -245,7 +257,10 @@ describe('findConfig', () => { describe('virtual config', () => { it('should resolve to the virtual config if present', async () => { - const fixture = path.resolve(__dirname, '../../fixture/no_forge_config'); + const fixture = path.resolve( + import.meta.dirname, + '../../fixture/no_forge_config', + ); try { registerForgeConfigForDirectory(fixture, { outDir: 'magic' }); const config = await findConfig(fixture); @@ -260,7 +275,10 @@ describe('findConfig', () => { }); it('should prioritize virtual config over package.json', async () => { - const fixturePath = path.resolve(__dirname, '../../fixture/dummy_app'); + const fixturePath = path.resolve( + import.meta.dirname, + '../../fixture/dummy_app', + ); try { registerForgeConfigForDirectory(fixturePath, { outDir: 'magic' }); const config = await findConfig(fixturePath); @@ -276,7 +294,7 @@ describe('findConfig', () => { it('should prioritize virtual config over forge.config.js', async () => { const fixturePath = path.resolve( - __dirname, + import.meta.dirname, '../../fixture/async_forge_config', ); try { @@ -296,7 +314,7 @@ describe('findConfig', () => { describe('TypeScript', () => { it('should resolve forge.config.ts', async () => { const fixturePath = path.resolve( - __dirname, + import.meta.dirname, '../../fixture/dummy_default_ts_conf', ); const conf = await findConfig(fixturePath); @@ -305,7 +323,7 @@ describe('findConfig', () => { it('should resolve forge.config.cts', async () => { const fixturePath = path.resolve( - __dirname, + import.meta.dirname, '../../fixture/dummy_default_cts_conf', ); const conf = await findConfig(fixturePath); @@ -314,12 +332,58 @@ describe('findConfig', () => { it('should resolve forge.config.mts', async () => { const fixturePath = path.resolve( - __dirname, + import.meta.dirname, '../../fixture/dummy_default_mts_conf', ); const conf = await findConfig(fixturePath); expect(conf.buildIdentifier).toEqual('typescript-esm'); }); + + it('should resolve forge.config.mts (async)', async () => { + const fixturePath = path.resolve( + import.meta.dirname, + '../../fixture/async_mts_forge_config', + ); + const conf = await findConfig(fixturePath); + expect(conf.buildIdentifier).toEqual('async-typescript-esm'); + }); + }); + + describe('ESM and CJS module formats', () => { + it('should resolve explicit .mjs config files', async () => { + type MjsConfig = ResolvedForgeConfig & { explicitMjs: boolean }; + const fixturePath = path.resolve( + import.meta.dirname, + '../../fixture/dummy_default_mjs_conf', + ); + const conf = (await findConfig(fixturePath)) as MjsConfig; + expect(conf.buildIdentifier).toEqual('explicit-esm'); + expect(conf.explicitMjs).toEqual(true); + }); + + it('should resolve .cjs config in ESM package (type: module)', async () => { + type CjsInEsmConfig = ResolvedForgeConfig & { cjsInEsmPackage: boolean }; + const fixturePath = path.resolve( + import.meta.dirname, + '../../fixture/dummy_cjs_in_esm_conf', + ); + const conf = (await findConfig(fixturePath)) as CjsInEsmConfig; + expect(conf.buildIdentifier).toEqual('cjs-in-esm-package'); + expect(conf.cjsInEsmPackage).toEqual(true); + }); + + it('should support async ESM configs (.mjs)', async () => { + type AsyncEsmConfig = ResolvedForgeConfig & { + packagerConfig: { asyncEsm: boolean }; + }; + const fixturePath = path.resolve( + import.meta.dirname, + '../../fixture/async_esm_forge_config', + ); + const conf = (await findConfig(fixturePath)) as AsyncEsmConfig; + expect(conf.buildIdentifier).toEqual('async-esm'); + expect(conf.packagerConfig.asyncEsm).toEqual(true); + }); }); }); @@ -336,7 +400,7 @@ it('should resolve values fromBuildIdentifier', async () => { }; }; const conf = (await findConfig( - path.resolve(__dirname, '../../fixture/dummy_js_conf'), + path.resolve(import.meta.dirname, '../../fixture/dummy_js_conf'), )) as ResolveBIConfig; expect(conf.topLevelProp).toEqual('foo'); expect(conf.sub).toEqual({ @@ -351,15 +415,21 @@ it('should resolve values fromBuildIdentifier', async () => { describe('forgeConfigIsValidFilePath', () => { it('succeeds for a file extension-less path', async () => { - const fixturePath = path.resolve(__dirname, '../../fixture/dummy_js_conf/'); - await expect( - forgeConfigIsValidFilePath(fixturePath, 'forge.different.config'), + const fixturePath = path.resolve( + import.meta.dirname, + '../../fixture/dummy_js_conf/', + ); + expect( + forgeConfigIsValidFilePath(fixturePath, 'forge.different.config.cjs'), ).toEqual(true); }); it('fails when a file is nonexistent', async () => { - const fixturePath = path.resolve(__dirname, '../../fixture/dummy_js_conf/'); - await expect( + const fixturePath = path.resolve( + import.meta.dirname, + '../../fixture/dummy_js_conf/', + ); + expect( forgeConfigIsValidFilePath(fixturePath, 'forge.nonexistent.config'), ).toEqual(false); }); diff --git a/packages/api/core/spec/fast/util/hook.spec.ts b/packages/api/core/spec/fast/util/hook.spec.ts index 8fc4248dad..eb1b4ea512 100644 --- a/packages/api/core/spec/fast/util/hook.spec.ts +++ b/packages/api/core/spec/fast/util/hook.spec.ts @@ -1,7 +1,7 @@ import { ForgeHookFn, ResolvedForgeConfig } from '@electron-forge/shared-types'; import { describe, expect, it, vi } from 'vitest'; -import { runHook, runMutatingHook } from '../../../src/util/hook'; +import { runHook, runMutatingHook } from '../../../src/util/hook.js'; const fakeConfig = { pluginInterface: { diff --git a/packages/api/core/spec/fast/util/import-search.spec.ts b/packages/api/core/spec/fast/util/import-search.spec.ts index f7fb93f094..92c24e56ce 100644 --- a/packages/api/core/spec/fast/util/import-search.spec.ts +++ b/packages/api/core/spec/fast/util/import-search.spec.ts @@ -1,18 +1,18 @@ import { describe, expect, it } from 'vitest'; -import findConfig from '../../../src/util/forge-config'; -import importSearch from '../../../src/util/import-search'; +import findConfig from '../../../src/util/forge-config.js'; +import importSearch from '../../../src/util/import-search.js'; describe('import-search', () => { it('should resolve null if no file exists', async () => { - const resolved = await importSearch(__dirname, [ + const resolved = await importSearch(import.meta.dirname, [ '../../../src/util/wizard-secrets', ]); expect(resolved).toEqual(null); }); it('should resolve a file if it exists', async () => { - const resolved = await importSearch(__dirname, [ + const resolved = await importSearch(import.meta.dirname, [ '../../../src/util/forge-config', ]); expect(resolved).toEqual(findConfig); @@ -20,7 +20,9 @@ describe('import-search', () => { it('should throw if file exists but fails to load', async () => { await expect( - importSearch(__dirname, ['../../fixture/require-search/throw-error']), + importSearch(import.meta.dirname, [ + '../../fixture/require-search/throw-error', + ]), ).rejects.toThrowError('test'); }); }); diff --git a/packages/api/core/spec/fast/util/install-dependencies.spec.ts b/packages/api/core/spec/fast/util/install-dependencies.spec.ts index 27cfe8f1e0..a147a5aa78 100644 --- a/packages/api/core/spec/fast/util/install-dependencies.spec.ts +++ b/packages/api/core/spec/fast/util/install-dependencies.spec.ts @@ -8,7 +8,7 @@ import { DepType, DepVersionRestriction, installDependencies, -} from '../../../src/util/install-dependencies'; +} from '../../../src/util/install-dependencies.js'; vi.mock(import('@electron-forge/core-utils'), async (importOriginal) => { const mod = await importOriginal(); diff --git a/packages/api/core/spec/fast/util/out-dir.spec.ts b/packages/api/core/spec/fast/util/out-dir.spec.ts index 39cbf96bb8..eadff35d6a 100644 --- a/packages/api/core/spec/fast/util/out-dir.spec.ts +++ b/packages/api/core/spec/fast/util/out-dir.spec.ts @@ -5,7 +5,7 @@ import { describe, expect, it } from 'vitest'; import getCurrentOutDir from '../../../src/util/out-dir'; -const DIR = __dirname; +const DIR = import.meta.dirname; describe('getCurrentOutDir', () => { it('resolves to the default out directory when nothing extra is declared', () => { diff --git a/packages/api/core/spec/fast/util/read-package-json.spec.ts b/packages/api/core/spec/fast/util/read-package-json.spec.ts index e599c81bfa..ad4726e217 100644 --- a/packages/api/core/spec/fast/util/read-package-json.spec.ts +++ b/packages/api/core/spec/fast/util/read-package-json.spec.ts @@ -7,12 +7,13 @@ import packageJSON from '../../../package.json'; import { readMutatedPackageJson, readRawPackageJson, -} from '../../../src/util/read-package-json'; +} from '../../../src/util/read-package-json.js'; describe('readRawPackageJson', () => { it('should find a package.json file from the given directory', async () => { - const raw = await readRawPackageJson(path.resolve(__dirname, '../../../')); - // eslint-disable-next-line @typescript-eslint/no-require-imports + const raw = await readRawPackageJson( + path.resolve(import.meta.dirname, '../../../'), + ); expect(raw).toEqual(packageJSON); }); }); @@ -20,23 +21,29 @@ describe('readRawPackageJson', () => { describe('readMutatedPackageJson', () => { it('should find a package.json file from the given directory', async () => { expect( - await readMutatedPackageJson(path.resolve(__dirname, '../../../'), { - pluginInterface: { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - triggerMutatingHook: (_hookName: string, pj: any) => - Promise.resolve(pj), - }, - } as unknown as ResolvedForgeConfig), + await readMutatedPackageJson( + path.resolve(import.meta.dirname, '../../../'), + { + pluginInterface: { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + triggerMutatingHook: (_hookName: string, pj: any) => + Promise.resolve(pj), + }, + } as unknown as ResolvedForgeConfig, + ), ).toEqual(packageJSON); }); it('should allow mutations from hooks', async () => { expect( - await readMutatedPackageJson(path.resolve(__dirname, '../../../'), { - pluginInterface: { - triggerMutatingHook: () => Promise.resolve('test_mutation'), - }, - } as unknown as ResolvedForgeConfig), + await readMutatedPackageJson( + path.resolve(import.meta.dirname, '../../../'), + { + pluginInterface: { + triggerMutatingHook: () => Promise.resolve('test_mutation'), + }, + } as unknown as ResolvedForgeConfig, + ), ).toEqual('test_mutation'); }); }); diff --git a/packages/api/core/spec/fast/util/resolve-dir.spec.ts b/packages/api/core/spec/fast/util/resolve-dir.spec.ts index 71911597db..41d9eb34eb 100644 --- a/packages/api/core/spec/fast/util/resolve-dir.spec.ts +++ b/packages/api/core/spec/fast/util/resolve-dir.spec.ts @@ -5,8 +5,8 @@ import { describe, expect, it } from 'vitest'; import { registerForgeConfigForDirectory, unregisterForgeConfigForDirectory, -} from '../../../src/util/forge-config'; -import resolveDir from '../../../src/util/resolve-dir'; +} from '../../../src/util/forge-config.js'; +import resolveDir from '../../../src/util/resolve-dir.js'; describe('resolve-dir', () => { it('should return null if a valid dir can not be found', async () => { @@ -15,7 +15,7 @@ describe('resolve-dir', () => { it('should return a directory if a forge config is found, but no package.json.forge.config', async () => { const dir = path.resolve( - __dirname, + import.meta.dirname, '../../fixture/forge-config-no-package-json-config/', ); const resolved = await resolveDir(dir); @@ -24,12 +24,17 @@ describe('resolve-dir', () => { }); it('should return a directory if it finds a node module', async () => { - const dir = path.resolve(__dirname, '../../fixture/dummy_app/foo'); + const dir = path.resolve( + import.meta.dirname, + '../../fixture/dummy_app/foo', + ); const resolved = await resolveDir(dir); expect(resolved).not.toBeNull(); expect( - await resolveDir(path.resolve(__dirname, '../../fixture/dummy_app/foo')), - ).toEqual(path.resolve(__dirname, '../../fixture/dummy_app')); + await resolveDir( + path.resolve(import.meta.dirname, '../../fixture/dummy_app/foo'), + ), + ).toEqual(path.resolve(import.meta.dirname, '../../fixture/dummy_app')); }); it('should return a directory if it finds a virtual config', async () => { @@ -37,8 +42,8 @@ describe('resolve-dir', () => { registerForgeConfigForDirectory('/foo/var/virtual', {}); expect(await resolveDir('/foo/var/virtual')).not.toEqual(null); expect( - await resolveDir(path.resolve(__dirname, '/foo/var/virtual')), - ).toEqual(path.resolve(__dirname, '/foo/var/virtual')); + await resolveDir(path.resolve(import.meta.dirname, '/foo/var/virtual')), + ).toEqual(path.resolve(import.meta.dirname, '/foo/var/virtual')); } finally { unregisterForgeConfigForDirectory('/foo/var/virtual'); } diff --git a/packages/api/core/spec/fixture/async_esm_forge_config/forge.config.mjs b/packages/api/core/spec/fixture/async_esm_forge_config/forge.config.mjs new file mode 100644 index 0000000000..cdbbbc5663 --- /dev/null +++ b/packages/api/core/spec/fixture/async_esm_forge_config/forge.config.mjs @@ -0,0 +1,13 @@ +export default async function () { + return { + buildIdentifier: 'async-esm', + packagerConfig: { asyncEsm: true }, + rebuildConfig: {}, + makers: [ + { + name: '@electron-forge/maker-zip', + platforms: ['darwin'], + }, + ], + }; +} diff --git a/packages/api/core/spec/fixture/async_esm_forge_config/package.json b/packages/api/core/spec/fixture/async_esm_forge_config/package.json new file mode 100644 index 0000000000..43099fecc4 --- /dev/null +++ b/packages/api/core/spec/fixture/async_esm_forge_config/package.json @@ -0,0 +1,7 @@ +{ + "name": "async-esm-test", + "version": "1.0.0", + "devDependencies": { + "electron": "99.99.99" + } +} diff --git a/packages/api/core/spec/fixture/async_forge_config/forge.config.js b/packages/api/core/spec/fixture/async_forge_config/forge.config.cjs similarity index 100% rename from packages/api/core/spec/fixture/async_forge_config/forge.config.js rename to packages/api/core/spec/fixture/async_forge_config/forge.config.cjs diff --git a/packages/api/core/spec/fixture/async_mts_forge_config/forge.config.mts b/packages/api/core/spec/fixture/async_mts_forge_config/forge.config.mts new file mode 100644 index 0000000000..f7183b5cd6 --- /dev/null +++ b/packages/api/core/spec/fixture/async_mts_forge_config/forge.config.mts @@ -0,0 +1,15 @@ +import type { ForgeConfig } from '@electron-forge/shared-types'; + +export default async function (): Promise { + return { + buildIdentifier: 'async-typescript-esm', + rebuildConfig: {}, + makers: [ + { + name: '@electron-forge/maker-zip', + platforms: ['darwin'], + config: {}, + }, + ], + }; +} diff --git a/packages/api/core/spec/fixture/async_mts_forge_config/package.json b/packages/api/core/spec/fixture/async_mts_forge_config/package.json new file mode 100644 index 0000000000..057e6b390a --- /dev/null +++ b/packages/api/core/spec/fixture/async_mts_forge_config/package.json @@ -0,0 +1,8 @@ +{ + "name": "async-mts-test", + "version": "1.0.0", + "type": "module", + "devDependencies": { + "electron": "99.99.99" + } +} diff --git a/packages/api/core/spec/fixture/custom_init/index.js b/packages/api/core/spec/fixture/custom_init/index.cjs similarity index 100% rename from packages/api/core/spec/fixture/custom_init/index.js rename to packages/api/core/spec/fixture/custom_init/index.cjs diff --git a/packages/api/core/spec/fixture/custom_init/package.json b/packages/api/core/spec/fixture/custom_init/package.json index 6c00e3a5ac..93fca28d68 100644 --- a/packages/api/core/spec/fixture/custom_init/package.json +++ b/packages/api/core/spec/fixture/custom_init/package.json @@ -2,11 +2,15 @@ "name": "electron-forge-template-dummy", "version": "1.0.0", "description": "", - "main": "index.js", + "main": "index.cjs", "scripts": { "start": "electron-forge start" }, "keywords": [], "author": "", - "license": "MIT" + "license": "MIT", + "dependencies": { + "@electron-forge/template-base": "100.0.0", + "fs-extra": "11.3.2" + } } diff --git a/packages/api/core/spec/fixture/dummy_cjs_in_esm_conf/forge.config.cjs b/packages/api/core/spec/fixture/dummy_cjs_in_esm_conf/forge.config.cjs new file mode 100644 index 0000000000..a84330fd2d --- /dev/null +++ b/packages/api/core/spec/fixture/dummy_cjs_in_esm_conf/forge.config.cjs @@ -0,0 +1,4 @@ +module.exports = { + buildIdentifier: 'cjs-in-esm-package', + cjsInEsmPackage: true, +}; diff --git a/packages/api/core/spec/fixture/dummy_cjs_in_esm_conf/package.json b/packages/api/core/spec/fixture/dummy_cjs_in_esm_conf/package.json new file mode 100644 index 0000000000..316463eeff --- /dev/null +++ b/packages/api/core/spec/fixture/dummy_cjs_in_esm_conf/package.json @@ -0,0 +1,17 @@ +{ + "name": "dummy-cjs-in-esm-conf", + "productName": "", + "version": "1.0.0", + "description": "", + "main": "src/index.js", + "type": "module", + "scripts": { + "start": "electron-forge start" + }, + "keywords": [], + "author": "", + "license": "MIT", + "devDependencies": { + "electron": "99.99.99" + } +} diff --git a/packages/api/core/spec/fixture/dummy_default_js_conf/forge.config.js b/packages/api/core/spec/fixture/dummy_default_js_conf/forge.config.cjs similarity index 100% rename from packages/api/core/spec/fixture/dummy_default_js_conf/forge.config.js rename to packages/api/core/spec/fixture/dummy_default_js_conf/forge.config.cjs diff --git a/packages/api/core/spec/fixture/dummy_default_mjs_conf/forge.config.mjs b/packages/api/core/spec/fixture/dummy_default_mjs_conf/forge.config.mjs new file mode 100644 index 0000000000..01cc38ad69 --- /dev/null +++ b/packages/api/core/spec/fixture/dummy_default_mjs_conf/forge.config.mjs @@ -0,0 +1,4 @@ +export default { + buildIdentifier: 'explicit-esm', + explicitMjs: true, +}; diff --git a/packages/api/core/spec/fixture/dummy_default_mjs_conf/package.json b/packages/api/core/spec/fixture/dummy_default_mjs_conf/package.json new file mode 100644 index 0000000000..bdb7228ab3 --- /dev/null +++ b/packages/api/core/spec/fixture/dummy_default_mjs_conf/package.json @@ -0,0 +1,16 @@ +{ + "name": "dummy-mjs-conf", + "productName": "", + "version": "1.0.0", + "description": "", + "main": "src/index.js", + "scripts": { + "start": "electron-forge start" + }, + "keywords": [], + "author": "", + "license": "MIT", + "devDependencies": { + "electron": "99.99.99" + } +} diff --git a/packages/api/core/spec/fixture/dummy_js_conf/foo.js b/packages/api/core/spec/fixture/dummy_js_conf/foo.cjs similarity index 100% rename from packages/api/core/spec/fixture/dummy_js_conf/foo.js rename to packages/api/core/spec/fixture/dummy_js_conf/foo.cjs diff --git a/packages/api/core/spec/fixture/dummy_js_conf/forge.different.config.js b/packages/api/core/spec/fixture/dummy_js_conf/forge.different.config.cjs similarity index 92% rename from packages/api/core/spec/fixture/dummy_js_conf/forge.different.config.js rename to packages/api/core/spec/fixture/dummy_js_conf/forge.different.config.cjs index 1f07ef7998..766b6889ed 100644 --- a/packages/api/core/spec/fixture/dummy_js_conf/forge.different.config.js +++ b/packages/api/core/spec/fixture/dummy_js_conf/forge.different.config.cjs @@ -1,5 +1,6 @@ const { utils: { fromBuildIdentifier }, + // eslint-disable-next-line n/no-unpublished-require } = require('@electron-forge/core'); module.exports = { diff --git a/packages/api/core/spec/fixture/dummy_js_conf/package.json b/packages/api/core/spec/fixture/dummy_js_conf/package.json index 65fa32fe5e..6b3bb44f81 100644 --- a/packages/api/core/spec/fixture/dummy_js_conf/package.json +++ b/packages/api/core/spec/fixture/dummy_js_conf/package.json @@ -3,6 +3,7 @@ "productName": "", "version": "1.0.0", "description": "", + "private": true, "main": "src/index.js", "scripts": { "start": "electron-forge start" @@ -11,9 +12,10 @@ "author": "", "license": "MIT", "config": { - "forge": "./forge.different.config.js" + "forge": "./forge.different.config.cjs" }, "devDependencies": { - "electron": "99.99.99" + "electron": "99.99.99", + "@electron-forge/core": "9.9.9" } } diff --git a/packages/api/core/spec/fixture/electron-forge-template-fixture/index.js b/packages/api/core/spec/fixture/electron-forge-template-fixture/index.cjs similarity index 100% rename from packages/api/core/spec/fixture/electron-forge-template-fixture/index.js rename to packages/api/core/spec/fixture/electron-forge-template-fixture/index.cjs diff --git a/packages/api/core/spec/fixture/electron-forge-template-fixture/package.json b/packages/api/core/spec/fixture/electron-forge-template-fixture/package.json index fcc3dc7f88..18a947b1d9 100644 --- a/packages/api/core/spec/fixture/electron-forge-template-fixture/package.json +++ b/packages/api/core/spec/fixture/electron-forge-template-fixture/package.json @@ -1,5 +1,5 @@ { - "main": "index.js", + "main": "index.cjs", "type": "commonjs", "version": "13.3.7" } diff --git a/packages/api/core/spec/fixture/forge-config-no-package-json-config/forge.config.js b/packages/api/core/spec/fixture/forge-config-no-package-json-config/forge.config.cjs similarity index 100% rename from packages/api/core/spec/fixture/forge-config-no-package-json-config/forge.config.js rename to packages/api/core/spec/fixture/forge-config-no-package-json-config/forge.config.cjs diff --git a/packages/api/core/spec/fixture/template-nonmatching-forge-version/index.js b/packages/api/core/spec/fixture/template-nonmatching-forge-version/index.js deleted file mode 100644 index 59c9e24240..0000000000 --- a/packages/api/core/spec/fixture/template-nonmatching-forge-version/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = { requiredForgeVersion: '6.0.0-beta.0' }; diff --git a/packages/api/core/spec/fixture/template-stale-forge-version/index.cjs b/packages/api/core/spec/fixture/template-stale-forge-version/index.cjs new file mode 100644 index 0000000000..a604edb6f4 --- /dev/null +++ b/packages/api/core/spec/fixture/template-stale-forge-version/index.cjs @@ -0,0 +1,3 @@ +module.exports = { + requiredForgeVersion: '^6.0.0', +}; diff --git a/packages/api/core/spec/fixture/template-stale-forge-version/package-lock.json b/packages/api/core/spec/fixture/template-stale-forge-version/package-lock.json new file mode 100644 index 0000000000..c401a3837a --- /dev/null +++ b/packages/api/core/spec/fixture/template-stale-forge-version/package-lock.json @@ -0,0 +1,5 @@ +{ + "name": "electron-forge-template-dummy", + "version": "1.0.0", + "lockfileVersion": 1 +} diff --git a/packages/api/core/spec/fixture/template-stale-forge-version/package.json b/packages/api/core/spec/fixture/template-stale-forge-version/package.json new file mode 100644 index 0000000000..93fca28d68 --- /dev/null +++ b/packages/api/core/spec/fixture/template-stale-forge-version/package.json @@ -0,0 +1,16 @@ +{ + "name": "electron-forge-template-dummy", + "version": "1.0.0", + "description": "", + "main": "index.cjs", + "scripts": { + "start": "electron-forge start" + }, + "keywords": [], + "author": "", + "license": "MIT", + "dependencies": { + "@electron-forge/template-base": "100.0.0", + "fs-extra": "11.3.2" + } +} diff --git a/packages/api/core/spec/slow/init.slow.verdaccio.spec.ts b/packages/api/core/spec/slow/init.slow.verdaccio.spec.ts index 0c3e963283..10be5f1b75 100644 --- a/packages/api/core/spec/slow/init.slow.verdaccio.spec.ts +++ b/packages/api/core/spec/slow/init.slow.verdaccio.spec.ts @@ -112,7 +112,7 @@ describe('init', () => { it('adds all files correctly', async () => { await api.init({ dir, - template: path.resolve(__dirname, '../fixture/custom_init'), + template: path.resolve(import.meta.dirname, '../fixture/custom_init'), }); // folder exists @@ -148,7 +148,7 @@ describe('init', () => { api.init({ dir, template: path.resolve( - __dirname, + import.meta.dirname, '../fixture/template-sans-forge-version', ), }), @@ -162,8 +162,8 @@ describe('init', () => { api.init({ dir, template: path.resolve( - __dirname, - '../fixture/template-nonmatching-forge-version', + import.meta.dirname, + '../fixture/template-stale-forge-version', ), }), ).rejects.toThrow( diff --git a/packages/api/core/spec/slow/install-dependencies.slow.spec.ts b/packages/api/core/spec/slow/install-dependencies.slow.spec.ts index 0c518c53c9..d8dc27671a 100644 --- a/packages/api/core/spec/slow/install-dependencies.slow.spec.ts +++ b/packages/api/core/spec/slow/install-dependencies.slow.spec.ts @@ -5,7 +5,7 @@ import path from 'node:path'; import { PACKAGE_MANAGERS } from '@electron-forge/core-utils'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; -import { installDependencies } from '../../src/util/install-dependencies'; +import { installDependencies } from '../../src/util/install-dependencies.js'; describe.runIf(!(process.platform === 'linux' && process.env.CI))( 'install-dependencies', diff --git a/packages/api/core/spec/slow/make.slow.spec.ts b/packages/api/core/spec/slow/make.slow.spec.ts index 5b24f077ac..23c9ad91f2 100644 --- a/packages/api/core/spec/slow/make.slow.spec.ts +++ b/packages/api/core/spec/slow/make.slow.spec.ts @@ -12,7 +12,7 @@ import { afterEach, beforeAll, describe, expect, it } from 'vitest'; import { api } from '../../src/api/index'; describe('Make', () => { - const dir = path.resolve(__dirname, '..', 'fixture', 'api-tester'); + const dir = path.resolve(import.meta.dirname, '..', 'fixture', 'api-tester'); let outDir: string; let makeDir: string; let devCert: string; @@ -24,7 +24,12 @@ describe('Make', () => { if (process.platform === 'win32') { await fs.promises.copyFile( - path.join(__dirname, '..', 'fixture', 'bogus-private-key.pvk'), + path.join( + import.meta.dirname, + '..', + 'fixture', + 'bogus-private-key.pvk', + ), path.join(outDir, 'default.pvk'), ); devCert = await createDefaultCertificate('CN=Test Author', { @@ -62,13 +67,17 @@ describe('Make', () => { }); it('throws an error when given an unrecognized platform', async () => { + // @ts-expect-error - we're testing an unrecognized platform await expect(api.make({ dir, platform: 'dos' })).rejects.toThrow( /invalid platform/, ); }); it("throws an error when the specified maker doesn't implement isSupportedOnCurrentPlatform()", async () => { - const makerPath = path.resolve(__dirname, '../fixture/maker-incompatible'); + const makerPath = path.resolve( + import.meta.dirname, + '../fixture/maker-incompatible', + ); await expect( api.make({ dir, @@ -88,7 +97,10 @@ describe('Make', () => { dir, overrideTargets: [ { - name: path.resolve(__dirname, '../fixture/maker-wrong-platform'), + name: path.resolve( + import.meta.dirname, + '../fixture/maker-wrong-platform', + ), } as IForgeResolvableMaker, ], platform: 'linux', diff --git a/packages/api/core/spec/slow/package.slow.spec.ts b/packages/api/core/spec/slow/package.slow.spec.ts index 48b7bfbe8b..9cf87dd77d 100644 --- a/packages/api/core/spec/slow/package.slow.spec.ts +++ b/packages/api/core/spec/slow/package.slow.spec.ts @@ -12,7 +12,7 @@ import { api } from '../../src/api/index'; import { readRawPackageJson } from '../../src/util/read-package-json'; describe('Package', () => { - const dir = path.resolve(__dirname, '..', 'fixture', 'api-tester'); + const dir = path.resolve(import.meta.dirname, '..', 'fixture', 'api-tester'); let outDir: string; beforeEach(async () => { outDir = await ensureTestDirIsNonexistent(); diff --git a/packages/api/core/src/api/import.ts b/packages/api/core/src/api/import.ts index 8367131bb3..58f9960706 100644 --- a/packages/api/core/src/api/import.ts +++ b/packages/api/core/src/api/import.ts @@ -15,17 +15,17 @@ import chalk from 'chalk'; import debug from 'debug'; import fs from 'fs-extra'; import { Listr } from 'listr2'; -import { merge } from 'lodash'; +import { merge } from 'lodash-es'; import { DepType, DepVersionRestriction, installDependencies, -} from '../util/install-dependencies'; -import { readRawPackageJson } from '../util/read-package-json'; +} from '../util/install-dependencies.js'; +import { readRawPackageJson } from '../util/read-package-json.js'; -import { initGit } from './init-scripts/init-git'; -import { deps, devDeps, exactDevDeps } from './init-scripts/init-npm'; +import { initGit } from './init-scripts/init-git.js'; +import { deps, devDeps, exactDevDeps } from './init-scripts/init-npm.js'; const d = debug('electron-forge:import'); diff --git a/packages/api/core/src/api/index.ts b/packages/api/core/src/api/index.ts index 5a358595ac..68299e7525 100644 --- a/packages/api/core/src/api/index.ts +++ b/packages/api/core/src/api/index.ts @@ -1,14 +1,13 @@ import { ElectronProcess, ForgeMakeResult } from '@electron-forge/shared-types'; -// eslint-disable-next-line n/no-missing-import -import ForgeUtils from '../util'; +import ForgeUtils from '../util/index.js'; -import _import, { ImportOptions } from './import'; -import init, { InitOptions } from './init'; -import make, { MakeOptions } from './make'; -import _package, { PackageOptions } from './package'; -import publish, { PublishOptions } from './publish'; -import start, { StartOptions } from './start'; +import _import, { ImportOptions } from './import.js'; +import init, { InitOptions } from './init.js'; +import make, { MakeOptions } from './make.js'; +import _package, { PackageOptions } from './package.js'; +import publish, { PublishOptions } from './publish.js'; +import start, { StartOptions } from './start.js'; export class ForgeAPI { /** diff --git a/packages/api/core/src/api/init-scripts/find-template.ts b/packages/api/core/src/api/init-scripts/find-template.ts index f4bcd15db1..7fae645bc1 100644 --- a/packages/api/core/src/api/init-scripts/find-template.ts +++ b/packages/api/core/src/api/init-scripts/find-template.ts @@ -1,7 +1,10 @@ +import path from 'node:path'; +import { pathToFileURL } from 'node:url'; + import { ForgeTemplate } from '@electron-forge/shared-types'; import debug from 'debug'; -import { PossibleModule } from '../../util/import-search'; +import { PossibleModule } from '../../util/import-search.js'; const d = debug('electron-forge:init:find-template'); @@ -16,16 +19,25 @@ export const findTemplate = async ( ): Promise => { let foundTemplate: Omit | null = null; - const resolveTemplateTypes = [ - `electron-forge-template-${template}`, - `@electron-forge/template-${template}`, - template, - ] as const; + // Convert absolute paths to file URLs for cross-platform compatibility. + // import.meta.resolve() doesn't recognize Windows-style paths like "D:\..." + // and needs them as file URLs (e.g., "file:///D:/..."). + // When a path is absolute, we skip the prefixed package name lookups. + const isAbsolutePath = path.isAbsolute(template); + const templatePath = isAbsolutePath ? pathToFileURL(template).href : template; + + const resolveTemplateTypes = isAbsolutePath + ? [templatePath] + : ([ + `electron-forge-template-${template}`, + `@electron-forge/template-${template}`, + template, + ] as const); for (const moduleName of resolveTemplateTypes) { try { d(`Trying template: ${moduleName}`); foundTemplate = { - path: require.resolve(moduleName), + path: import.meta.resolve(moduleName), name: moduleName, }; break; diff --git a/packages/api/core/src/api/init-scripts/init-link.ts b/packages/api/core/src/api/init-scripts/init-link.ts index 140685d9ce..f0afbae594 100644 --- a/packages/api/core/src/api/init-scripts/init-link.ts +++ b/packages/api/core/src/api/init-scripts/init-link.ts @@ -6,7 +6,7 @@ import { PMDetails, spawnPackageManager } from '@electron-forge/core-utils'; import { ForgeListrTask } from '@electron-forge/shared-types'; import debug from 'debug'; -import { readRawPackageJson } from '../../util/read-package-json'; +import { readRawPackageJson } from '../../util/read-package-json.js'; const d = debug('electron-forge:init:link'); @@ -28,7 +28,7 @@ export async function initLink( d('Linking forge dependencies'); const packageJson = await readRawPackageJson(dir); const forgeRoot = path.resolve( - __dirname, + import.meta.dirname, '..', '..', '..', diff --git a/packages/api/core/src/api/init-scripts/init-npm.ts b/packages/api/core/src/api/init-scripts/init-npm.ts index 442304d97b..595d2e3f0c 100644 --- a/packages/api/core/src/api/init-scripts/init-npm.ts +++ b/packages/api/core/src/api/init-scripts/init-npm.ts @@ -10,11 +10,11 @@ import { DepType, DepVersionRestriction, installDependencies, -} from '../../util/install-dependencies'; +} from '../../util/install-dependencies.js'; const d = debug('electron-forge:init:npm'); const corePackage = fs.readJsonSync( - path.resolve(__dirname, '../../../package.json'), + path.resolve(import.meta.dirname, '../../../package.json'), ); export function siblingDep(name: string): string { @@ -23,7 +23,7 @@ export function siblingDep(name: string): string { export const deps = ['electron-squirrel-startup']; export const devDeps = [ - '@electron/fuses@^1.0.0', + '@electron/fuses@^2.0.0', siblingDep('cli'), siblingDep('maker-squirrel'), siblingDep('maker-zip'), diff --git a/packages/api/core/src/api/init.ts b/packages/api/core/src/api/init.ts index c2c726565b..e0c01e565d 100644 --- a/packages/api/core/src/api/init.ts +++ b/packages/api/core/src/api/init.ts @@ -12,14 +12,14 @@ import { DepType, DepVersionRestriction, installDependencies, -} from '../util/install-dependencies'; -import { readRawPackageJson } from '../util/read-package-json'; +} from '../util/install-dependencies.js'; +import { readRawPackageJson } from '../util/read-package-json.js'; -import { findTemplate } from './init-scripts/find-template'; -import { initDirectory } from './init-scripts/init-directory'; -import { initGit } from './init-scripts/init-git'; -import { initLink } from './init-scripts/init-link'; -import { initNPM } from './init-scripts/init-npm'; +import { findTemplate } from './init-scripts/find-template.js'; +import { initDirectory } from './init-scripts/init-directory.js'; +import { initGit } from './init-scripts/init-git.js'; +import { initLink } from './init-scripts/init-link.js'; +import { initNPM } from './init-scripts/init-npm.js'; const d = debug('electron-forge:init'); @@ -72,7 +72,7 @@ async function validateTemplate( } const forgeVersion = ( - await readRawPackageJson(path.join(__dirname, '..', '..')) + await readRawPackageJson(path.join(import.meta.dirname, '..', '..')) ).version; if (!semver.satisfies(forgeVersion, templateModule.requiredForgeVersion)) { throw new Error( diff --git a/packages/api/core/src/api/make.ts b/packages/api/core/src/api/make.ts index f9f17bb623..9e20404df5 100644 --- a/packages/api/core/src/api/make.ts +++ b/packages/api/core/src/api/make.ts @@ -20,15 +20,15 @@ import fs from 'fs-extra'; import { Listr, PRESET_TIMER } from 'listr2'; import logSymbols from 'log-symbols'; -import getForgeConfig from '../util/forge-config'; -import { getHookListrTasks, runMutatingHook } from '../util/hook'; -import importSearch from '../util/import-search'; -import getCurrentOutDir from '../util/out-dir'; -import parseArchs from '../util/parse-archs'; -import { readMutatedPackageJson } from '../util/read-package-json'; -import resolveDir from '../util/resolve-dir'; - -import { listrPackage } from './package'; +import getForgeConfig from '../util/forge-config.js'; +import { getHookListrTasks, runMutatingHook } from '../util/hook.js'; +import importSearch from '../util/import-search.js'; +import getCurrentOutDir from '../util/out-dir.js'; +import parseArchs from '../util/parse-archs.js'; +import { readMutatedPackageJson } from '../util/read-package-json.js'; +import resolveDir from '../util/resolve-dir.js'; + +import { listrPackage } from './package.js'; type MakerImpl = { // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/api/core/src/api/package.ts b/packages/api/core/src/api/package.ts index 0dd30927c1..5f2db0bc06 100644 --- a/packages/api/core/src/api/package.ts +++ b/packages/api/core/src/api/package.ts @@ -1,12 +1,11 @@ import path from 'node:path'; -import { promisify } from 'node:util'; import { getHostArch } from '@electron/get'; import { FinalizePackageTargetsHookFunction, - HookFunction, - Options, packager, + HookFunction as PackagerHookFunction, + Options as PackagerOptions, TargetDefinition, } from '@electron/packager'; import { @@ -28,20 +27,32 @@ import glob from 'fast-glob'; import fs from 'fs-extra'; import { Listr, PRESET_TIMER } from 'listr2'; -import getForgeConfig from '../util/forge-config'; -import { getHookListrTasks, runHook } from '../util/hook'; -import importSearch from '../util/import-search'; -import { warn } from '../util/messages'; -import getCurrentOutDir from '../util/out-dir'; -import { readMutatedPackageJson } from '../util/read-package-json'; -import resolveDir from '../util/resolve-dir'; +import getForgeConfig from '../util/forge-config.js'; +import { getHookListrTasks, runHook } from '../util/hook.js'; +import importSearch from '../util/import-search.js'; +import { warn } from '../util/messages.js'; +import getCurrentOutDir from '../util/out-dir.js'; +import { readMutatedPackageJson } from '../util/read-package-json.js'; +import resolveDir from '../util/resolve-dir.js'; const d = debug('electron-forge:packager'); +export function serialHooks any>( + hooks: T[] = [], +): [T] { + return [ + async function (opts: Parameters[0]): Promise { + for (const hook of hooks) { + await hook(opts); + } + } as T, + ]; +} + /** * Resolves hooks if they are a path to a file (instead of a `Function`). */ -async function resolveHooks( +async function resolveHooks( hooks: (string | F)[] | undefined, dir: string, ) { @@ -58,74 +69,6 @@ async function resolveHooks( return []; } -type DoneFunction = (err?: Error) => void; -type PromisifiedHookFunction = ( - buildPath: string, - electronVersion: string, - platform: string, - arch: string, -) => Promise; -type PromisifiedFinalizePackageTargetsHookFunction = ( - targets: TargetDefinition[], -) => Promise; - -/** - * @deprecated Only use until \@electron/packager publishes a new major version with promise based hooks - */ -function hidePromiseFromPromisify

( - fn: (...args: P) => Promise, -): (...args: P) => void { - return (...args: P) => { - void fn(...args); - }; -} - -/** - * Runs given hooks sequentially by mapping them to promises and iterating - * through while awaiting - */ -function sequentialHooks(hooks: HookFunction[]): PromisifiedHookFunction[] { - return [ - hidePromiseFromPromisify( - async ( - buildPath: string, - electronVersion: string, - platform: string, - arch: string, - done: DoneFunction, - ) => { - for (const hook of hooks) { - try { - await promisify(hook)(buildPath, electronVersion, platform, arch); - } catch (err) { - d('hook failed:', hook.toString(), err); - return done(err as Error); - } - } - done(); - }, - ), - ] as PromisifiedHookFunction[]; -} -function sequentialFinalizePackageTargetsHooks( - hooks: FinalizePackageTargetsHookFunction[], -): PromisifiedFinalizePackageTargetsHookFunction[] { - return [ - hidePromiseFromPromisify( - async (targets: TargetDefinition[], done: DoneFunction) => { - for (const hook of hooks) { - try { - await promisify(hook)(targets); - } catch (err) { - return done(err as Error); - } - } - done(); - }, - ), - ] as PromisifiedFinalizePackageTargetsHookFunction[]; -} - type PackageContext = { dir: string; forgeConfig: ResolvedForgeConfig; @@ -324,9 +267,8 @@ export const listrPackage = ( >(); const afterFinalizePackageTargetsHooks: FinalizePackageTargetsHookFunction[] = [ - (targets, done) => { + (targets) => { provideTargets(targets); - done(); }, ...(await resolveHooks( forgeConfig.packagerConfig.afterFinalizePackageTargets, @@ -338,96 +280,78 @@ export const listrPackage = ( !('prune' in forgeConfig.packagerConfig) || forgeConfig.packagerConfig.prune; - const afterCopyHooks: HookFunction[] = [ - hidePromiseFromPromisify( - async (buildPath, electronVersion, platform, arch, done) => { - signalDone(signalCopyDone, { platform, arch }); - done(); - }, - ), - hidePromiseFromPromisify( - async (buildPath, electronVersion, pPlatform, pArch, done) => { - const bins = await glob(path.join(buildPath, '**/.bin/**/*')); - for (const bin of bins) { - await fs.remove(bin); - } - done(); - }, - ), - hidePromiseFromPromisify( - async (buildPath, electronVersion, pPlatform, pArch, done) => { - await runHook( - forgeConfig, - 'packageAfterCopy', - buildPath, - electronVersion, - pPlatform, - pArch, - ); - done(); - }, - ), - hidePromiseFromPromisify( - async (buildPath, electronVersion, pPlatform, pArch, done) => { - const targetKey = getTargetKey({ - platform: pPlatform, - arch: pArch, - }); - await listrCompatibleRebuildHook( - buildPath, - electronVersion, - pPlatform, - pArch, - forgeConfig.rebuildConfig, - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - await rebuildTasks.get(targetKey)!.pop()!, - ); - signalRebuildDone.get(targetKey)?.pop()?.(); - done(); - }, - ), - hidePromiseFromPromisify( - async (buildPath, electronVersion, pPlatform, pArch, done) => { - const copiedPackageJSON = await readMutatedPackageJson( - buildPath, - forgeConfig, - ); - if ( - copiedPackageJSON.config && - copiedPackageJSON.config.forge - ) { - delete copiedPackageJSON.config.forge; - } - await fs.writeJson( - path.resolve(buildPath, 'package.json'), - copiedPackageJSON, - { spaces: 2 }, - ); - done(); - }, - ), + const afterCopyHooks: PackagerHookFunction[] = [ + async ({ platform, arch }) => { + signalDone(signalCopyDone, { platform, arch }); + }, + async ({ buildPath }) => { + const bins = await glob(path.join(buildPath, '**/.bin/**/*')); + for (const bin of bins) { + await fs.remove(bin); + } + }, + async ({ buildPath, electronVersion, platform, arch }) => { + await runHook( + forgeConfig, + 'packageAfterCopy', + buildPath, + electronVersion, + platform, + arch, + ); + }, + async ({ buildPath, electronVersion, platform, arch }) => { + const targetKey = getTargetKey({ + platform, + arch, + }); + await listrCompatibleRebuildHook( + buildPath, + electronVersion, + platform, + arch, + forgeConfig.rebuildConfig, + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + await rebuildTasks.get(targetKey)!.pop()!, + ); + signalRebuildDone.get(targetKey)?.pop()?.(); + }, + async ({ buildPath }) => { + const copiedPackageJSON = await readMutatedPackageJson( + buildPath, + forgeConfig, + ); + if ( + copiedPackageJSON.config && + copiedPackageJSON.config.forge + ) { + delete copiedPackageJSON.config.forge; + } + await fs.writeJson( + path.resolve(buildPath, 'package.json'), + copiedPackageJSON, + { spaces: 2 }, + ); + }, ...(await resolveHooks( forgeConfig.packagerConfig.afterCopy, ctx.dir, )), ]; - const afterCompleteHooks: HookFunction[] = [ - hidePromiseFromPromisify( - async (buildPath, electronVersion, pPlatform, pArch, done) => { - signalPackageDone - .get(getTargetKey({ platform: pPlatform, arch: pArch })) - ?.pop()?.(); - done(); - }, - ), + const afterCompleteHooks: PackagerHookFunction[] = [ + async ({ platform, arch }) => { + signalPackageDone + .get(getTargetKey({ platform, arch })) + ?.pop()?.(); + }, ...(await resolveHooks( forgeConfig.packagerConfig.afterComplete, ctx.dir, )), ]; - const afterPruneHooks = []; + const afterPruneHooks: PackagerHookFunction[] = []; if (pruneEnabled) { afterPruneHooks.push( @@ -439,36 +363,31 @@ export const listrPackage = ( } afterPruneHooks.push( - hidePromiseFromPromisify( - async (buildPath, electronVersion, pPlatform, pArch, done) => { - await runHook( - forgeConfig, - 'packageAfterPrune', - buildPath, - electronVersion, - pPlatform, - pArch, - ); - done(); - }, - ) as HookFunction, + async ({ buildPath, electronVersion, platform, arch }) => { + await runHook( + forgeConfig, + 'packageAfterPrune', + buildPath, + electronVersion, + platform, + arch, + ); + }, ); - const afterExtractHooks = [ - hidePromiseFromPromisify( - async (buildPath, electronVersion, pPlatform, pArch, done) => { - await runHook( - forgeConfig, - 'packageAfterExtract', - buildPath, - electronVersion, - pPlatform, - pArch, - ); - done(); - }, - ) as HookFunction, + const afterExtractHooks: PackagerHookFunction[] = [ + async ({ buildPath, electronVersion, platform, arch }) => { + await runHook( + forgeConfig, + 'packageAfterExtract', + buildPath, + electronVersion, + platform, + arch, + ); + }, ]; + afterExtractHooks.push( ...(await resolveHooks( forgeConfig.packagerConfig.afterExtract, @@ -476,25 +395,23 @@ export const listrPackage = ( )), ); - type PackagerArch = Exclude; - - const packageOpts: Options = { + const packageOpts: PackagerOptions = { asar: false, overwrite: true, ignore: [/^\/out\//g], quiet: true, ...forgeConfig.packagerConfig, dir: ctx.dir, - arch: arch as PackagerArch, + arch: arch, platform, - afterFinalizePackageTargets: - sequentialFinalizePackageTargetsHooks( - afterFinalizePackageTargetsHooks, - ), - afterComplete: sequentialHooks(afterCompleteHooks), - afterCopy: sequentialHooks(afterCopyHooks), - afterExtract: sequentialHooks(afterExtractHooks), - afterPrune: sequentialHooks(afterPruneHooks), + // TODO: Make these hooks serial again + afterFinalizePackageTargets: serialHooks( + afterFinalizePackageTargetsHooks, + ), + afterComplete: serialHooks(afterCompleteHooks), + afterCopy: serialHooks(afterCopyHooks), + afterExtract: serialHooks(afterExtractHooks), + afterPrune: serialHooks(afterPruneHooks), out: calculatedOutDir, electronVersion: await getElectronVersion(ctx.dir, packageJSON), }; diff --git a/packages/api/core/src/api/publish.ts b/packages/api/core/src/api/publish.ts index 30e621284d..31abf360e4 100644 --- a/packages/api/core/src/api/publish.ts +++ b/packages/api/core/src/api/publish.ts @@ -10,7 +10,6 @@ import { IForgePublisher, IForgeResolvablePublisher, ResolvedForgeConfig, - // ForgePlatform, } from '@electron-forge/shared-types'; import { autoTrace, delayTraceTillSignal } from '@electron-forge/tracer'; import chalk from 'chalk'; @@ -18,13 +17,13 @@ import debug from 'debug'; import fs from 'fs-extra'; import { Listr } from 'listr2'; -import getForgeConfig from '../util/forge-config'; -import importSearch from '../util/import-search'; -import getCurrentOutDir from '../util/out-dir'; -import PublishState from '../util/publish-state'; -import resolveDir from '../util/resolve-dir'; +import getForgeConfig from '../util/forge-config.js'; +import importSearch from '../util/import-search.js'; +import getCurrentOutDir from '../util/out-dir.js'; +import PublishState from '../util/publish-state.js'; +import resolveDir from '../util/resolve-dir.js'; -import { listrMake, MakeOptions } from './make'; +import { listrMake, MakeOptions } from './make.js'; const d = debug('electron-forge:publish'); diff --git a/packages/api/core/src/api/start.ts b/packages/api/core/src/api/start.ts index 2c20d8338d..2b7c5f29bd 100644 --- a/packages/api/core/src/api/start.ts +++ b/packages/api/core/src/api/start.ts @@ -19,11 +19,11 @@ import chalk from 'chalk'; import debug from 'debug'; import { Listr, PRESET_TIMER } from 'listr2'; -import locateElectronExecutable from '../util/electron-executable'; -import getForgeConfig from '../util/forge-config'; -import { getHookListrTasks, runHook } from '../util/hook'; -import { readMutatedPackageJson } from '../util/read-package-json'; -import resolveDir from '../util/resolve-dir'; +import locateElectronExecutable from '../util/electron-executable.js'; +import getForgeConfig from '../util/forge-config.js'; +import { getHookListrTasks, runHook } from '../util/hook.js'; +import { readMutatedPackageJson } from '../util/read-package-json.js'; +import resolveDir from '../util/resolve-dir.js'; const d = debug('electron-forge:start'); @@ -141,8 +141,8 @@ export default autoTrace( childTrace, forgeConfig, 'generateAssets', - platform, - arch, + platform as ForgePlatform, + arch as ForgeArch, ), ), 'run', diff --git a/packages/api/core/src/util/electron-executable.ts b/packages/api/core/src/util/electron-executable.ts index 50e75e1b06..fff5f640d0 100644 --- a/packages/api/core/src/util/electron-executable.ts +++ b/packages/api/core/src/util/electron-executable.ts @@ -5,6 +5,12 @@ import logSymbols from 'log-symbols'; type PackageJSON = Record; +/** + * Importing `electron` from within a Node.js environment (outside of Electron) returns + * the path to the Electron executable. + * + * In Electron Forge 8, we use ESM import to do so but need to use the `default` export for interop reasons. + */ export default async function locateElectronExecutable( dir: string, packageJSON: PackageJSON, @@ -14,20 +20,18 @@ export default async function locateElectronExecutable( packageJSON, ); - // eslint-disable-next-line @typescript-eslint/no-require-imports - let electronExecPath = require( - electronModulePath || path.resolve(dir, 'node_modules/electron'), - ); + const electronModuleEntryPoint = electronModulePath + ? path.join(electronModulePath, 'index.js') + : path.resolve(dir, 'node_modules/electron/index.js'); + const { default: electronExecPath } = await import(electronModuleEntryPoint); - if (typeof electronExecPath !== 'string') { + if (typeof electronExecPath === 'string') { + return electronExecPath; + } else { console.warn( logSymbols.warning, - 'Returned Electron executable path is not a string, defaulting to a hardcoded location. Value:', - electronExecPath, + `Returned Electron executable path (${electronExecPath}) is not a string. Defaulting to node_modules/electron.`, ); - // eslint-disable-next-line @typescript-eslint/no-require-imports - electronExecPath = require(path.resolve(dir, 'node_modules/electron')); + return await import(path.resolve(dir, 'node_modules/electron/index.js')); } - - return electronExecPath; } diff --git a/packages/api/core/src/util/forge-config.ts b/packages/api/core/src/util/forge-config.ts index 251160d063..b4af3d245e 100644 --- a/packages/api/core/src/util/forge-config.ts +++ b/packages/api/core/src/util/forge-config.ts @@ -4,12 +4,9 @@ import { ForgeConfig, ResolvedForgeConfig } from '@electron-forge/shared-types'; import fs from 'fs-extra'; import { createJiti } from 'jiti'; -// eslint-disable-next-line n/no-missing-import -import { dynamicImportMaybe } from '../../helper/dynamic-import.js'; - -import { runMutatingHook } from './hook'; -import PluginInterface from './plugin-interface'; -import { readRawPackageJson } from './read-package-json'; +import { runMutatingHook } from './hook.js'; +import PluginInterface from './plugin-interface.js'; +import { readRawPackageJson } from './read-package-json.js'; const underscoreCase = (str: string) => str @@ -168,15 +165,16 @@ export default async (dir: string): Promise => { try { let loadFn; if (['.cts', '.mts', '.ts'].includes(path.extname(forgeConfigPath))) { - const jiti = createJiti(__filename); + const jiti = createJiti(import.meta.filename); loadFn = jiti.import; - } else { - loadFn = dynamicImportMaybe; } // The loaded "config" could potentially be a static forge config, ESM module or async function - const loaded = (await loadFn(forgeConfigPath)) as MaybeESM< - ForgeConfig | AsyncForgeConfigGenerator - >; + let loaded: MaybeESM; + if (loadFn) { + loaded = await loadFn(forgeConfigPath); + } else { + loaded = await import(forgeConfigPath); + } const maybeForgeConfig = 'default' in loaded ? loaded.default : loaded; forgeConfig = typeof maybeForgeConfig === 'function' diff --git a/packages/api/core/src/util/import-search.ts b/packages/api/core/src/util/import-search.ts index ee8e975b3e..81ea594a36 100644 --- a/packages/api/core/src/util/import-search.ts +++ b/packages/api/core/src/util/import-search.ts @@ -2,32 +2,29 @@ import path from 'node:path'; import debug from 'debug'; -// eslint-disable-next-line n/no-missing-import -import { dynamicImportMaybe } from '../../helper/dynamic-import.js'; - const d = debug('electron-forge:import-search'); -// https://github.com/nodejs/node/blob/da0ede1ad55a502a25b4139f58aab3fb1ee3bf3f/lib/internal/modules/cjs/loader.js#L353-L359 -type RequireError = Error & { +/** + * @see https://github.com/nodejs/node/blob/4ea921bdbf94c11e86ef6b53aa7425c6df42876a/lib/internal/errors.js#L1611-L1617C1 + */ +type ResolutionError = Error & { code: string; - path: string; - requestPath: string | undefined; }; -export async function importSearchRaw( +async function importSearchRaw( relativeTo: string, paths: string[], ): Promise { // Attempt to locally short-circuit if we're running from a checkout of forge if ( - __dirname.includes('forge/packages/api/core/') && + import.meta.dirname.includes('forge/packages/api/core/') && paths.length === 1 && paths[0].startsWith('@electron-forge/') ) { const [moduleType, moduleName] = paths[0].split('/')[1].split('-'); try { const localPath = path.resolve( - __dirname, + import.meta.dirname, '..', '..', '..', @@ -36,7 +33,7 @@ export async function importSearchRaw( moduleName, ); d('testing local forge build', { moduleType, moduleName, localPath }); - return await dynamicImportMaybe(localPath); + return await import(localPath); } catch { // Ignore } @@ -52,15 +49,11 @@ export async function importSearchRaw( for (const testPath of testPaths) { try { d('testing', testPath); - return await dynamicImportMaybe(testPath); + return await import(testPath); } catch (err) { if (err instanceof Error) { - const requireErr = err as RequireError; - // Ignore require-related errors - if ( - requireErr.code !== 'MODULE_NOT_FOUND' || - ![undefined, testPath].includes(requireErr.requestPath) - ) { + const resolutionError = err as ResolutionError; + if (resolutionError.code !== 'ERR_MODULE_NOT_FOUND') { throw err; } } diff --git a/packages/api/core/src/util/index.ts b/packages/api/core/src/util/index.ts index f1d6c9e79c..fc11e9e01c 100644 --- a/packages/api/core/src/util/index.ts +++ b/packages/api/core/src/util/index.ts @@ -9,7 +9,7 @@ import { fromBuildIdentifier, registerForgeConfigForDirectory, unregisterForgeConfigForDirectory, -} from './forge-config'; +} from './forge-config.js'; import type { ForgeConfig } from '@electron-forge/shared-types'; diff --git a/packages/api/core/src/util/plugin-interface.ts b/packages/api/core/src/util/plugin-interface.ts index d56cbf647b..77fc425ef5 100644 --- a/packages/api/core/src/util/plugin-interface.ts +++ b/packages/api/core/src/util/plugin-interface.ts @@ -14,10 +14,9 @@ import { autoTrace } from '@electron-forge/tracer'; import chalk from 'chalk'; import debug from 'debug'; -// eslint-disable-next-line n/no-missing-import -import { StartOptions } from '../api'; +import { StartOptions } from '../api/start.js'; -import importSearch from './import-search'; +import importSearch from './import-search.js'; const d = debug('electron-forge:plugins'); diff --git a/packages/api/core/src/util/read-package-json.ts b/packages/api/core/src/util/read-package-json.ts index 21f646991d..ad3dbfc470 100644 --- a/packages/api/core/src/util/read-package-json.ts +++ b/packages/api/core/src/util/read-package-json.ts @@ -3,7 +3,7 @@ import path from 'node:path'; import { ResolvedForgeConfig } from '@electron-forge/shared-types'; import fs from 'fs-extra'; -import { runMutatingHook } from './hook'; +import { runMutatingHook } from './hook.js'; // eslint-disable-next-line @typescript-eslint/no-explicit-any export const readRawPackageJson = async (dir: string): Promise => diff --git a/packages/api/core/src/util/resolve-dir.ts b/packages/api/core/src/util/resolve-dir.ts index 69a8880408..7c3524a7a9 100644 --- a/packages/api/core/src/util/resolve-dir.ts +++ b/packages/api/core/src/util/resolve-dir.ts @@ -4,8 +4,8 @@ import { getElectronVersion } from '@electron-forge/core-utils'; import debug from 'debug'; import fs from 'fs-extra'; -import { registeredForgeConfigs } from './forge-config'; -import { readRawPackageJson } from './read-package-json'; +import { registeredForgeConfigs } from './forge-config.js'; +import { readRawPackageJson } from './read-package-json.js'; const d = debug('electron-forge:project-resolver'); diff --git a/packages/external/create-electron-app/package.json b/packages/external/create-electron-app/package.json index 0f39b25eb7..cc743ae0b1 100644 --- a/packages/external/create-electron-app/package.json +++ b/packages/external/create-electron-app/package.json @@ -1,6 +1,7 @@ { "name": "create-electron-app", "version": "8.0.0-alpha.4", + "type": "module", "description": "Create Electron App", "repository": "https://github.com/electron/forge", "main": "dist/index.js", diff --git a/packages/maker/appx/package.json b/packages/maker/appx/package.json index f9bd0c6c97..1f4324e779 100644 --- a/packages/maker/appx/package.json +++ b/packages/maker/appx/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/maker-appx", "version": "8.0.0-alpha.4", + "type": "module", "description": "AppX maker for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -11,7 +12,7 @@ "vitest": "^4.0.14" }, "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/core-utils": "workspace:*", diff --git a/packages/maker/appx/spec/MakerAppX.spec.ts b/packages/maker/appx/spec/MakerAppX.spec.ts index 2455e7add7..d3f1c63749 100644 --- a/packages/maker/appx/spec/MakerAppX.spec.ts +++ b/packages/maker/appx/spec/MakerAppX.spec.ts @@ -25,7 +25,7 @@ describe.runIf(process.platform === 'win32')('MakerAppX', function () { def('should create a .pfx file', async () => { await fs.copyFile( path.join( - __dirname, + import.meta.dirname, '../../../api/core/spec/fixture', 'bogus-private-key.pvk', ), diff --git a/packages/maker/appx/src/MakerAppX.ts b/packages/maker/appx/src/MakerAppX.ts index e7092a81e2..a2af12562a 100644 --- a/packages/maker/appx/src/MakerAppX.ts +++ b/packages/maker/appx/src/MakerAppX.ts @@ -3,15 +3,17 @@ import path from 'node:path'; import { getNameFromAuthor } from '@electron-forge/core-utils'; import { MakerBase, MakerOptions } from '@electron-forge/maker-base'; import { ForgePlatform } from '@electron-forge/shared-types'; -import resolveCommand from 'cross-spawn/lib/util/resolveCommand'; +// eslint-disable-next-line n/no-missing-import +import resolveCommand from 'cross-spawn/lib/util/resolveCommand.js'; import windowsStore from 'electron-windows-store'; import { isValidPublisherName, makeCert, -} from 'electron-windows-store/lib/sign'; + // eslint-disable-next-line n/no-missing-import +} from 'electron-windows-store/lib/sign.js'; import fs from 'fs-extra'; -import { MakerAppXConfig } from './Config'; +import { MakerAppXConfig } from './Config.js'; // NB: This is not a typo, we require AppXs to be built on 64-bit // but if we're running in a 32-bit node.js process, we're going to diff --git a/packages/maker/base/package.json b/packages/maker/base/package.json index ac51ce3e01..3ab4398b99 100644 --- a/packages/maker/base/package.json +++ b/packages/maker/base/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/maker-base", "version": "8.0.0-alpha.4", + "type": "module", "description": "Base maker for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -11,7 +12,7 @@ "vitest": "^4.0.14" }, "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/shared-types": "workspace:*", diff --git a/packages/maker/deb/package.json b/packages/maker/deb/package.json index 78321e40c5..970b1022a1 100644 --- a/packages/maker/deb/package.json +++ b/packages/maker/deb/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/maker-deb", "version": "8.0.0-alpha.4", + "type": "module", "description": "Deb maker for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -12,7 +13,7 @@ "vitest": "^4.0.14" }, "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/maker-base": "workspace:*", diff --git a/packages/maker/deb/spec/MakerDeb.spec.ts b/packages/maker/deb/spec/MakerDeb.spec.ts index 42ea232761..2fa0594a59 100644 --- a/packages/maker/deb/spec/MakerDeb.spec.ts +++ b/packages/maker/deb/spec/MakerDeb.spec.ts @@ -2,27 +2,24 @@ import path from 'node:path'; import { MakerOptions } from '@electron-forge/maker-base'; import { ForgeArch } from '@electron-forge/shared-types'; +// @ts-expect-error - this package has no types +import installer from 'electron-installer-debian'; import { describe, expect, it, vi } from 'vitest'; import { debianArch, MakerDeb } from '../src/MakerDeb'; -// eslint-disable-next-line @typescript-eslint/no-require-imports -const installer = require('electron-installer-debian'); - type MakeFunction = (opts: Partial) => Promise; const dir = '/my/test/dir/out'; const makeDir = path.resolve('/foo/bar/make'); const appName = 'My Test App'; -const targetArch = process.arch; +const targetArch = process.arch as ForgeArch; const packageJSON = { version: '1.2.3' }; -vi.hoisted(async () => { - const { mockRequire } = await import('@electron-forge/test-utils'); - void mockRequire( - 'electron-installer-debian', - vi.fn().mockResolvedValue({ packagePaths: ['/foo/bar.deb'] }), - ); +vi.mock('electron-installer-debian', () => { + return { + default: vi.fn().mockResolvedValue({ packagePaths: ['/foo/bar.deb'] }), + }; }); describe('MakerDeb', () => { @@ -92,10 +89,6 @@ describe('debianArch', () => { expect(debianArch('x64')).toEqual('amd64'); }); - it('should convert arm to armel', () => { - expect(debianArch('arm')).toEqual('armel'); - }); - it('should convert armv7l to armhf', () => { expect(debianArch('armv7l')).toEqual('armhf'); }); diff --git a/packages/maker/deb/src/MakerDeb.ts b/packages/maker/deb/src/MakerDeb.ts index f34663fa2f..fd6ab0a142 100644 --- a/packages/maker/deb/src/MakerDeb.ts +++ b/packages/maker/deb/src/MakerDeb.ts @@ -3,7 +3,7 @@ import path from 'node:path'; import { MakerBase, MakerOptions } from '@electron-forge/maker-base'; import { ForgeArch, ForgePlatform } from '@electron-forge/shared-types'; -import { MakerDebConfig } from './Config'; +import { MakerDebConfig } from './Config.js'; export function debianArch(nodeArch: ForgeArch): string { switch (nodeArch) { @@ -13,8 +13,6 @@ export function debianArch(nodeArch: ForgeArch): string { return 'amd64'; case 'armv7l': return 'armhf'; - case 'arm': - return 'armel'; default: return nodeArch; } @@ -32,8 +30,8 @@ export default class MakerDeb extends MakerBase { } async make({ dir, makeDir, targetArch }: MakerOptions): Promise { - // eslint-disable-next-line n/no-missing-require - const installer = require('electron-installer-debian'); + // @ts-expect-error: this package has no types + const { default: installer } = await import('electron-installer-debian'); const outDir = path.resolve(makeDir, 'deb', targetArch); diff --git a/packages/maker/dmg/package.json b/packages/maker/dmg/package.json index a7a13eda8f..440de3b547 100644 --- a/packages/maker/dmg/package.json +++ b/packages/maker/dmg/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/maker-dmg", "version": "8.0.0-alpha.4", + "type": "module", "description": "DMG maker for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -12,7 +13,7 @@ "vitest": "^4.0.14" }, "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/maker-base": "workspace:*", diff --git a/packages/maker/dmg/spec/MakerDMG.spec.ts b/packages/maker/dmg/spec/MakerDMG.spec.ts index d0c89372ea..5c4bcec728 100644 --- a/packages/maker/dmg/spec/MakerDMG.spec.ts +++ b/packages/maker/dmg/spec/MakerDMG.spec.ts @@ -1,19 +1,17 @@ import { MakerOptions } from '@electron-forge/maker-base'; +import { ForgeArch } from '@electron-forge/shared-types'; +import { createDMG } from 'electron-installer-dmg'; import fs from 'fs-extra'; import { describe, expect, it, vi } from 'vitest'; import { MakerDMG } from '../src/MakerDMG'; -// eslint-disable-next-line @typescript-eslint/no-require-imports -const { createDMG } = require('electron-installer-dmg'); - type MakeFunction = (opts: Partial) => Promise; -vi.hoisted(async () => { - const { mockRequire } = await import('@electron-forge/test-utils'); - void mockRequire('electron-installer-dmg', { +vi.mock(import('electron-installer-dmg'), () => { + return { createDMG: vi.fn(), - }); + }; }); vi.mock(import('fs-extra'), async (importOriginal) => { @@ -31,7 +29,7 @@ describe('MakerDMG', () => { const dir = '/my/test/dir/out'; const makeDir = '/my/test/dir/make'; const appName = 'My Test App'; - const targetArch = process.arch; + const targetArch = process.arch as ForgeArch; const packageJSON = { version: '1.2.3' }; it('should pass through correct defaults', async () => { diff --git a/packages/maker/dmg/src/MakerDMG.ts b/packages/maker/dmg/src/MakerDMG.ts index eeb4d158ae..3c9c630fcd 100644 --- a/packages/maker/dmg/src/MakerDMG.ts +++ b/packages/maker/dmg/src/MakerDMG.ts @@ -4,7 +4,7 @@ import { MakerBase, MakerOptions } from '@electron-forge/maker-base'; import { ForgePlatform } from '@electron-forge/shared-types'; import fs from 'fs-extra'; -import { MakerDMGConfig } from './Config'; +import { MakerDMGConfig } from './Config.js'; import type { ElectronInstallerDMGOptions } from 'electron-installer-dmg'; @@ -24,7 +24,7 @@ export default class MakerDMG extends MakerBase { packageJSON, targetArch, }: MakerOptions): Promise { - const { createDMG } = require('electron-installer-dmg'); + const { createDMG } = await import('electron-installer-dmg'); const outPath = path.resolve(makeDir, `${this.config.name || appName}.dmg`); const forgeDefaultOutPath = path.resolve( diff --git a/packages/maker/flatpak/package.json b/packages/maker/flatpak/package.json index da2e6d225d..0f98f86f59 100644 --- a/packages/maker/flatpak/package.json +++ b/packages/maker/flatpak/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/maker-flatpak", "version": "8.0.0-alpha.4", + "type": "module", "description": "Flatpak maker for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -12,7 +13,7 @@ "vitest": "^4.0.14" }, "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/maker-base": "workspace:*", diff --git a/packages/maker/flatpak/spec/MakerFlatpak.spec.ts b/packages/maker/flatpak/spec/MakerFlatpak.spec.ts index 911864cefd..d1774b9b98 100644 --- a/packages/maker/flatpak/spec/MakerFlatpak.spec.ts +++ b/packages/maker/flatpak/spec/MakerFlatpak.spec.ts @@ -2,18 +2,18 @@ import path from 'node:path'; import { MakerOptions } from '@electron-forge/maker-base'; import { ForgeArch } from '@electron-forge/shared-types'; +// @ts-expect-error - this package has no types +import installer from '@malept/electron-installer-flatpak'; import { describe, expect, it, vi } from 'vitest'; import { flatpakArch, MakerFlatpak } from '../src/MakerFlatpak'; -// eslint-disable-next-line @typescript-eslint/no-require-imports -const installer = require('@malept/electron-installer-flatpak'); - type MakeFunction = (opts: Partial) => Promise; -vi.hoisted(async () => { - const { mockRequire } = await import('@electron-forge/test-utils'); - void mockRequire('@malept/electron-installer-flatpak', vi.fn()); +vi.mock('@malept/electron-installer-flatpak', () => { + return { + default: vi.fn().mockResolvedValue({ packagePaths: ['/foo/bar.flatpak'] }), + }; }); vi.mock(import('fs-extra'), async (importOriginal) => { @@ -31,7 +31,7 @@ describe('MakerFlatpak', () => { const dir = '/my/test/dir/out'; const makeDir = path.resolve('/make/dir'); const appName = 'My Test App'; - const targetArch = process.arch; + const targetArch = process.arch as ForgeArch; const packageJSON = { version: '1.2.3' }; it('should pass through correct defaults', async () => { diff --git a/packages/maker/flatpak/src/MakerFlatpak.ts b/packages/maker/flatpak/src/MakerFlatpak.ts index 86125af50d..08ffebd407 100644 --- a/packages/maker/flatpak/src/MakerFlatpak.ts +++ b/packages/maker/flatpak/src/MakerFlatpak.ts @@ -4,7 +4,7 @@ import { MakerBase, MakerOptions } from '@electron-forge/maker-base'; import { ForgeArch, ForgePlatform } from '@electron-forge/shared-types'; import fs from 'fs-extra'; -import { MakerFlatpakConfig } from './Config'; +import { MakerFlatpakConfig } from './Config.js'; export function flatpakArch(nodeArch: ForgeArch): string { switch (nodeArch) { @@ -34,8 +34,10 @@ export default class MakerFlatpak extends MakerBase { } async make({ dir, makeDir, targetArch }: MakerOptions): Promise { - // eslint-disable-next-line n/no-missing-require - const installer = require('@malept/electron-installer-flatpak'); + const { default: installer } = await import( + // @ts-expect-error - this package has no types + '@malept/electron-installer-flatpak' + ); const arch = flatpakArch(targetArch); const outDir = path.resolve(makeDir, 'flatpak', arch); diff --git a/packages/maker/msix/package.json b/packages/maker/msix/package.json index 3036615281..8c1ef86795 100644 --- a/packages/maker/msix/package.json +++ b/packages/maker/msix/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/maker-msix", "version": "8.0.0-alpha.4", + "type": "module", "description": "MSIX maker for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Jan Hannemann", @@ -11,7 +12,7 @@ "vitest": "^4.0.14" }, "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/core-utils": "workspace:*", diff --git a/packages/maker/msix/src/MakerMSIX.ts b/packages/maker/msix/src/MakerMSIX.ts index 70d2463767..42eb5a8372 100644 --- a/packages/maker/msix/src/MakerMSIX.ts +++ b/packages/maker/msix/src/MakerMSIX.ts @@ -7,8 +7,8 @@ import { ForgePlatform } from '@electron-forge/shared-types'; import { packageMSIX } from 'electron-windows-msix'; import fs from 'fs-extra'; -import { MakerMSIXConfig } from './Config'; -import { toMsixArch } from './util/arch'; +import { MakerMSIXConfig } from './Config.js'; +import { toMsixArch } from './util/arch.js'; /** * Creates an MSIX package for your Electron app. diff --git a/packages/maker/pkg/package.json b/packages/maker/pkg/package.json index 6025a3698f..75ab662179 100644 --- a/packages/maker/pkg/package.json +++ b/packages/maker/pkg/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/maker-pkg", "version": "8.0.0-alpha.4", + "type": "module", "description": "PKG maker for Electron Forge", "repository": "https://github.com/electron/forge", "license": "MIT", @@ -11,12 +12,12 @@ "vitest": "^4.0.14" }, "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/maker-base": "workspace:*", "@electron-forge/shared-types": "workspace:*", - "@electron/osx-sign": "^1.0.5" + "@electron/osx-sign": "^2.3.0" }, "publishConfig": { "access": "public" diff --git a/packages/maker/pkg/spec/MakerPKG.spec.ts b/packages/maker/pkg/spec/MakerPKG.spec.ts index 7960a9614a..942f0df17c 100644 --- a/packages/maker/pkg/spec/MakerPKG.spec.ts +++ b/packages/maker/pkg/spec/MakerPKG.spec.ts @@ -1,7 +1,8 @@ import path from 'node:path'; -import { flatAsync } from '@electron/osx-sign'; +import { flat } from '@electron/osx-sign'; import { MakerOptions } from '@electron-forge/maker-base'; +import { ForgeArch } from '@electron-forge/shared-types'; import { describe, expect, it, vi } from 'vitest'; import { MakerPKG } from '../src/MakerPKG'; @@ -12,7 +13,7 @@ vi.mock(import('@electron/osx-sign'), async (importOriginal) => { const mod = await importOriginal(); return { ...mod, - flatAsync: vi.fn(), + flat: vi.fn(), }; }); @@ -20,7 +21,7 @@ describe('MakerPKG', () => { const dir = '/my/test/dir/out'; const makeDir = '/my/test/dir/make'; const appName = 'My Test App'; - const targetArch = process.arch; + const targetArch = process.arch as ForgeArch; const packageJSON = { version: '1.2.3' }; it('should pass through correct defaults', async () => { @@ -35,9 +36,9 @@ describe('MakerPKG', () => { targetArch, targetPlatform: 'mas', }); - expect(vi.mocked(flatAsync)).toHaveBeenCalledOnce(); + expect(vi.mocked(flat)).toHaveBeenCalledOnce(); - expect(vi.mocked(flatAsync)).toHaveBeenCalledWith({ + expect(vi.mocked(flat)).toHaveBeenCalledWith({ app: path.resolve(`${dir}/My Test App.app`), pkg: expect.stringContaining(`My Test App-1.2.3-${targetArch}.pkg`), platform: 'mas', diff --git a/packages/maker/pkg/src/MakerPKG.ts b/packages/maker/pkg/src/MakerPKG.ts index 28615e77b9..01e2e651d0 100644 --- a/packages/maker/pkg/src/MakerPKG.ts +++ b/packages/maker/pkg/src/MakerPKG.ts @@ -1,10 +1,10 @@ import path from 'node:path'; -import { flatAsync } from '@electron/osx-sign'; +import { flat } from '@electron/osx-sign'; import { MakerBase, MakerOptions } from '@electron-forge/maker-base'; import { ForgePlatform } from '@electron-forge/shared-types'; -import { MakerPKGConfig } from './Config'; +import { MakerPKGConfig } from './Config.js'; export default class MakerPKG extends MakerBase { name = 'pkg'; @@ -41,7 +41,7 @@ export default class MakerPKG extends MakerBase { pkg: outPath, platform: targetPlatform, }; - await flatAsync(pkgConfig); + await flat(pkgConfig); return [outPath]; } @@ -49,7 +49,7 @@ export default class MakerPKG extends MakerBase { private isValidTargetPlatform( platform: string, ): platform is 'darwin' | 'mas' { - return this.defaultPlatforms.includes(platform); + return (this.defaultPlatforms as string[]).includes(platform); } } diff --git a/packages/maker/rpm/package.json b/packages/maker/rpm/package.json index f00a1f664c..4567018f8f 100644 --- a/packages/maker/rpm/package.json +++ b/packages/maker/rpm/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/maker-rpm", "version": "8.0.0-alpha.4", + "type": "module", "description": "Rpm maker for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -12,7 +13,7 @@ "vitest": "^4.0.14" }, "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/maker-base": "workspace:*", diff --git a/packages/maker/rpm/spec/MakerRpm.spec.ts b/packages/maker/rpm/spec/MakerRpm.spec.ts index 7ae51d364f..0a9c9e51b2 100644 --- a/packages/maker/rpm/spec/MakerRpm.spec.ts +++ b/packages/maker/rpm/spec/MakerRpm.spec.ts @@ -2,28 +2,25 @@ import path from 'node:path'; import { MakerOptions } from '@electron-forge/maker-base'; import { ForgeArch } from '@electron-forge/shared-types'; +// @ts-expect-error - this package has no types +import installer from 'electron-installer-redhat'; import { describe, expect, it, vi } from 'vitest'; import { MakerRpm, rpmArch } from '../src/MakerRpm'; -// eslint-disable-next-line @typescript-eslint/no-require-imports -const installer = require('electron-installer-redhat'); - type MakeFunction = (opts: Partial) => Promise; -vi.hoisted(async () => { - const { mockRequire } = await import('@electron-forge/test-utils'); - void mockRequire( - 'electron-installer-redhat', - vi.fn().mockResolvedValue({ packagePaths: ['/foo/bar.rpm'] }), - ); +vi.mock('electron-installer-redhat', () => { + return { + default: vi.fn().mockResolvedValue({ packagePaths: ['/foo/bar.rpm'] }), + }; }); describe('MakerRpm', () => { const dir = '/my/test/dir/out'; const makeDir = path.resolve('/make/dir'); const appName = 'My Test App'; - const targetArch = process.arch; + const targetArch = process.arch as ForgeArch; const packageJSON = { version: '1.2.3' }; it('should pass through correct defaults', async () => { @@ -92,10 +89,6 @@ describe('rpmArch', () => { expect(rpmArch('arm64')).toEqual('aarch64'); }); - it('should convert arm to armv6hl', () => { - expect(rpmArch('arm')).toEqual('armv6hl'); - }); - it('should convert armv7l to armv7hl', () => { expect(rpmArch('armv7l')).toEqual('armv7hl'); }); diff --git a/packages/maker/rpm/src/MakerRpm.ts b/packages/maker/rpm/src/MakerRpm.ts index eda59c6f78..7b86c727f9 100644 --- a/packages/maker/rpm/src/MakerRpm.ts +++ b/packages/maker/rpm/src/MakerRpm.ts @@ -3,7 +3,7 @@ import path from 'node:path'; import { MakerBase, MakerOptions } from '@electron-forge/maker-base'; import { ForgeArch, ForgePlatform } from '@electron-forge/shared-types'; -import { MakerRpmConfig } from './Config'; +import { MakerRpmConfig } from './Config.js'; function renameRpm(dest: string, _src: string): string { return path.join( @@ -22,8 +22,6 @@ export function rpmArch(nodeArch: ForgeArch): string { return 'aarch64'; case 'armv7l': return 'armv7hl'; - case 'arm': - return 'armv6hl'; default: return nodeArch; } @@ -41,8 +39,8 @@ export default class MakerRpm extends MakerBase { } async make({ dir, makeDir, targetArch }: MakerOptions): Promise { - // eslint-disable-next-line n/no-missing-require - const installer = require('electron-installer-redhat'); + // @ts-expect-error - this package has no types + const { default: installer } = await import('electron-installer-redhat'); const outDir = path.resolve(makeDir, 'rpm', targetArch); diff --git a/packages/maker/snap/package.json b/packages/maker/snap/package.json index bcf6682992..320a5c75d1 100644 --- a/packages/maker/snap/package.json +++ b/packages/maker/snap/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/maker-snap", "version": "8.0.0-alpha.4", + "type": "module", "description": "Snap maker for Electron Forge", "repository": "https://github.com/electron/forge", "license": "MIT", @@ -11,7 +12,7 @@ "vitest": "^4.0.14" }, "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/maker-base": "workspace:*", diff --git a/packages/maker/snap/spec/MakerSnap.spec.ts b/packages/maker/snap/spec/MakerSnap.spec.ts index 43b1fb2a88..ba46794bbe 100644 --- a/packages/maker/snap/spec/MakerSnap.spec.ts +++ b/packages/maker/snap/spec/MakerSnap.spec.ts @@ -1,16 +1,16 @@ import path from 'node:path'; import { MakerOptions } from '@electron-forge/maker-base'; +import { ForgeArch } from '@electron-forge/shared-types'; +import installer from 'electron-installer-snap'; import { describe, expect, it, vi } from 'vitest'; import { MakerSnap } from '../src/MakerSnap'; -// eslint-disable-next-line @typescript-eslint/no-require-imports -const installer = require('electron-installer-snap'); - -vi.hoisted(async () => { - const { mockRequire } = await import('@electron-forge/test-utils'); - void mockRequire('electron-installer-snap', vi.fn()); +vi.mock('electron-installer-snap', () => { + return { + default: vi.fn(), + }; }); type MakeFunction = (opts: Partial) => Promise; @@ -19,7 +19,7 @@ describe('MakerSnap', () => { const dir = '/my/test/dir/out/foo-linux-x64'; const makeDir = path.resolve('/make/dir'); const appName = 'My Test App'; - const targetArch = process.arch; + const targetArch = process.arch as ForgeArch; const packageJSON = { version: '1.2.3' }; it('should pass through correct defaults', async () => { diff --git a/packages/maker/snap/src/MakerSnap.ts b/packages/maker/snap/src/MakerSnap.ts index 3fe33bbe0c..54715cf793 100644 --- a/packages/maker/snap/src/MakerSnap.ts +++ b/packages/maker/snap/src/MakerSnap.ts @@ -3,7 +3,7 @@ import path from 'node:path'; import { MakerBase, MakerOptions } from '@electron-forge/maker-base'; import { ForgePlatform } from '@electron-forge/shared-types'; -import { MakerSnapConfig } from './Config'; +import { MakerSnapConfig } from './Config.js'; export default class MakerSnap extends MakerBase { name = 'snap'; @@ -17,7 +17,7 @@ export default class MakerSnap extends MakerBase { } async make({ dir, makeDir, targetArch }: MakerOptions): Promise { - const installer = require('electron-installer-snap'); + const { default: installer } = await import('electron-installer-snap'); const outPath = path.resolve(makeDir, 'snap', targetArch); diff --git a/packages/maker/squirrel/package.json b/packages/maker/squirrel/package.json index b198994e0b..658cfff8ae 100644 --- a/packages/maker/squirrel/package.json +++ b/packages/maker/squirrel/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/maker-squirrel", "version": "8.0.0-alpha.4", + "type": "module", "description": "Squirrel maker for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -8,7 +9,7 @@ "main": "dist/MakerSquirrel.js", "typings": "dist/MakerSquirrel.d.ts", "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/maker-base": "workspace:*", diff --git a/packages/maker/wix/package.json b/packages/maker/wix/package.json index 2fa5f72b4a..c822abd5c2 100644 --- a/packages/maker/wix/package.json +++ b/packages/maker/wix/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/maker-wix", "version": "8.0.0-alpha.4", + "type": "module", "description": "Wix maker for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -11,7 +12,7 @@ "vitest": "^4.0.14" }, "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/core-utils": "workspace:*", diff --git a/packages/maker/wix/src/Config.ts b/packages/maker/wix/src/Config.ts index e8b6183b4e..6e99c8e03d 100644 --- a/packages/maker/wix/src/Config.ts +++ b/packages/maker/wix/src/Config.ts @@ -1,4 +1,4 @@ -import { MSICreator, MSICreatorOptions } from 'electron-wix-msi/lib/creator'; +import { MSICreator, type MSICreatorOptions } from 'electron-wix-msi'; export type MakerWixConfig = Omit< MSICreatorOptions, diff --git a/packages/maker/wix/src/MakerWix.ts b/packages/maker/wix/src/MakerWix.ts index 39fcf07df3..3203023f86 100644 --- a/packages/maker/wix/src/MakerWix.ts +++ b/packages/maker/wix/src/MakerWix.ts @@ -1,14 +1,14 @@ import path from 'node:path'; import { getNameFromAuthor } from '@electron-forge/core-utils'; -import { MakerBase, MakerOptions } from '@electron-forge/maker-base'; +import { MakerBase, type MakerOptions } from '@electron-forge/maker-base'; import { ForgePlatform } from '@electron-forge/shared-types'; import chalk from 'chalk'; -import { MSICreator, MSICreatorOptions } from 'electron-wix-msi/lib/creator'; +import { MSICreator, type MSICreatorOptions } from 'electron-wix-msi'; import logSymbols from 'log-symbols'; import semver from 'semver'; -import { MakerWixConfig } from './Config'; +import { MakerWixConfig } from './Config.js'; function isValidWixArch(arch: string): arch is 'x64' | 'ia64' | 'x86' { return ['x64', 'ia64', 'x86'].includes(arch); diff --git a/packages/maker/zip/package.json b/packages/maker/zip/package.json index 619ee0dc06..17c757facd 100644 --- a/packages/maker/zip/package.json +++ b/packages/maker/zip/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/maker-zip", "version": "8.0.0-alpha.4", + "type": "module", "description": "ZIP maker for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -12,14 +13,14 @@ "vitest": "^4.0.14" }, "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/maker-base": "workspace:*", "@electron-forge/shared-types": "workspace:*", "cross-zip": "^4.0.0", "fs-extra": "^10.0.0", - "got": "^11.8.5" + "got": "^14.0.0" }, "publishConfig": { "access": "public" diff --git a/packages/maker/zip/spec/MakerZip.spec.ts b/packages/maker/zip/spec/MakerZip.spec.ts index 2573fc8d25..e340c59313 100644 --- a/packages/maker/zip/spec/MakerZip.spec.ts +++ b/packages/maker/zip/spec/MakerZip.spec.ts @@ -1,22 +1,24 @@ import os from 'node:os'; import path from 'node:path'; +import { ForgeArch } from '@electron-forge/shared-types'; +import { zip } from 'cross-zip'; import fs from 'fs-extra'; -import got from 'got'; +import { got } from 'got'; import { describe, expect, it, vi } from 'vitest'; import { MakerZIP } from '../src/MakerZIP'; -// eslint-disable-next-line @typescript-eslint/no-require-imports -const { zip } = require('cross-zip'); - -vi.hoisted(async () => { - const { mockRequire } = await import('@electron-forge/test-utils'); - void mockRequire('cross-zip', { - zip: vi.fn().mockImplementation((_zipDir, _zipPath, callback) => { +vi.mock(import('cross-zip'), async (importOriginal) => { + const mod = await importOriginal(); + return { + ...mod, + // We pass the cross-zip functions through util.promisify, so we need to implement + // a dummy callback call so that the promise resolves. + zip: vi.fn().mockImplementation((_in, _out, callback) => { callback(); }), - }); + }; }); vi.mock(import('fs-extra'), async (importOriginal) => { @@ -30,26 +32,31 @@ vi.mock(import('fs-extra'), async (importOriginal) => { }; }); +// @ts-expect-error - This mock works but vi.mock isn't happy. vi.mock(import('got'), async (importOriginal) => { const mod = await importOriginal(); return { ...mod, - default: { - ...mod, + got: { + ...mod.got, get: vi.fn(), }, }; }); describe('MakerZip', () => { - const dir = path.resolve(__dirname, 'fixture', 'fake-app'); - const darwinDir = path.resolve(__dirname, 'fixture', 'fake-darwin-app'); + const dir = path.resolve(import.meta.dirname, 'fixture', 'fake-app'); + const darwinDir = path.resolve( + import.meta.dirname, + 'fixture', + 'fake-darwin-app', + ); const makeDir = path.resolve(os.tmpdir(), 'forge-zip-test'); const appName = 'My Test App'; - const targetArch = process.arch; + const targetArch = process.arch as ForgeArch; const packageJSON = { version: '1.2.3' }; - it.each([['win32', 'linux']])( + it.each([['win32', 'linux'] as const])( `should generate a zip file for a %s app`, async (platform) => { const maker = new MakerZIP({}, []); @@ -74,7 +81,7 @@ describe('MakerZip', () => { }, ); - it.each([['darwin', 'mas']])( + it.each([['darwin', 'mas'] as const])( `should generate a zip file for a %s app`, async (platform) => { const maker = new MakerZIP( @@ -112,7 +119,7 @@ describe('MakerZip', () => { ); describe('macUpdateManifestBaseUrl', () => { - it.each([['win32', 'mas', 'linux']])( + it.each([['win32', 'mas', 'linux'] as const])( 'should not make a network request on $platform', async (platform) => { const maker = new MakerZIP( diff --git a/packages/maker/zip/src/MakerZIP.ts b/packages/maker/zip/src/MakerZIP.ts index 8d5da563a6..cbd3dc6003 100644 --- a/packages/maker/zip/src/MakerZIP.ts +++ b/packages/maker/zip/src/MakerZIP.ts @@ -3,10 +3,11 @@ import { promisify } from 'node:util'; import { MakerBase, MakerOptions } from '@electron-forge/maker-base'; import { ForgePlatform } from '@electron-forge/shared-types'; +import { zip } from 'cross-zip'; import fs from 'fs-extra'; -import got from 'got'; +import { got } from 'got'; -import { MakerZIPConfig } from './Config'; +import { MakerZIPConfig } from './Config.js'; type SquirrelMacRelease = { version: string; @@ -41,8 +42,6 @@ export default class MakerZIP extends MakerBase { targetArch, targetPlatform, }: MakerOptions): Promise { - const { zip } = require('cross-zip'); - const zipDir = ['darwin', 'mas'].includes(targetPlatform) ? path.resolve(dir, `${appName}.app`) : dir; diff --git a/packages/plugin/auto-unpack-natives/package.json b/packages/plugin/auto-unpack-natives/package.json index 3d6250ed2d..c851c20a55 100644 --- a/packages/plugin/auto-unpack-natives/package.json +++ b/packages/plugin/auto-unpack-natives/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/plugin-auto-unpack-natives", "version": "8.0.0-alpha.4", + "type": "module", "description": "Auto Unpack Natives plugin for Electron Forge, automatically adds native node modules to asar.unpacked", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -8,7 +9,7 @@ "main": "dist/AutoUnpackNativesPlugin.js", "typings": "dist/AutoUnpackNativesPlugin.d.ts", "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/plugin-base": "workspace:*", diff --git a/packages/plugin/auto-unpack-natives/src/AutoUnpackNativesPlugin.ts b/packages/plugin/auto-unpack-natives/src/AutoUnpackNativesPlugin.ts index aed54e54b5..acdcdbae2e 100644 --- a/packages/plugin/auto-unpack-natives/src/AutoUnpackNativesPlugin.ts +++ b/packages/plugin/auto-unpack-natives/src/AutoUnpackNativesPlugin.ts @@ -1,7 +1,7 @@ import { PluginBase } from '@electron-forge/plugin-base'; import { ForgeHookFn, ForgeHookMap } from '@electron-forge/shared-types'; -import { AutoUnpackNativesConfig } from './Config'; +import { AutoUnpackNativesConfig } from './Config.js'; export default class AutoUnpackNativesPlugin extends PluginBase { name = 'auto-unpack-natives'; diff --git a/packages/plugin/base/package.json b/packages/plugin/base/package.json index 9201cb35ac..787c4c95e6 100644 --- a/packages/plugin/base/package.json +++ b/packages/plugin/base/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/plugin-base", "version": "8.0.0-alpha.4", + "type": "module", "description": "Base plugin for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -8,7 +9,7 @@ "main": "dist/Plugin.js", "typings": "dist/Plugin.d.ts", "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/shared-types": "workspace:*" diff --git a/packages/plugin/fuses/package.json b/packages/plugin/fuses/package.json index fe05f6f5f7..adac8a2a92 100644 --- a/packages/plugin/fuses/package.json +++ b/packages/plugin/fuses/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/plugin-fuses", "version": "8.0.0-alpha.4", + "type": "module", "description": "A plugin for flipping Electron Fuses in Electron Forge", "repository": "https://github.com/electron/forge", "author": "Erik Moura ", @@ -14,15 +15,15 @@ ], "typings": "dist/FusesPlugin.d.ts", "devDependencies": { - "@electron/fuses": "^1.0.0", + "@electron/fuses": "^2.0.0", "@malept/cross-spawn-promise": "^2.0.0", "xvfb-maybe": "^0.2.1" }, "peerDependencies": { - "@electron/fuses": "^1.0.0" + "@electron/fuses": "^2.0.0" }, "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/plugin-base": "workspace:*", diff --git a/packages/plugin/fuses/spec/FusesPlugin.slow.verdaccio.spec.ts b/packages/plugin/fuses/spec/FusesPlugin.slow.verdaccio.spec.ts index 8ac310701a..83d3636d3b 100644 --- a/packages/plugin/fuses/spec/FusesPlugin.slow.verdaccio.spec.ts +++ b/packages/plugin/fuses/spec/FusesPlugin.slow.verdaccio.spec.ts @@ -8,7 +8,7 @@ import packageAPI from '../../../api/core/src/api/package'; import { getElectronExecutablePath } from '../src/util/getElectronExecutablePath'; describe('FusesPlugin', () => { - const appPath = path.join(__dirname, 'fixture'); + const appPath = path.join(import.meta.dirname, 'fixture'); const packageJSON = JSON.parse( fs.readFileSync(path.join(appPath, 'package.json'), { diff --git a/packages/plugin/fuses/spec/fixture/forge.config.ts b/packages/plugin/fuses/spec/fixture/forge.config.ts index 32861a9463..7bce7bc974 100644 --- a/packages/plugin/fuses/spec/fixture/forge.config.ts +++ b/packages/plugin/fuses/spec/fixture/forge.config.ts @@ -10,23 +10,11 @@ const forgeConfig: ForgeConfig = { packagerConfig: { afterComplete: [ // makes tests a bit simpler by having a single output directory in every platform/arch - async ( - packagedAppLocation, - _electronVersion, - _targetPlatform, - _targetArch, - done, - ) => { - const parentDir = path.resolve(packagedAppLocation, '..'); - await fsExtra.move( - packagedAppLocation, - path.join(parentDir, 'fuses-test-app'), - { - overwrite: true, - }, - ); - - done(); + async ({ buildPath }) => { + const parentDir = path.resolve(buildPath, '..'); + await fsExtra.move(buildPath, path.join(parentDir, 'fuses-test-app'), { + overwrite: true, + }); }, ], }, diff --git a/packages/plugin/fuses/spec/fixture/package.json b/packages/plugin/fuses/spec/fixture/package.json index 05695ccba5..5696d06f1c 100644 --- a/packages/plugin/fuses/spec/fixture/package.json +++ b/packages/plugin/fuses/spec/fixture/package.json @@ -1,9 +1,10 @@ { "name": "fuses-test-app", "version": "1.0.0", - "main": "./src/main.js", + "main": "./src/main.cjs", + "type": "commonjs", "dependencies": { - "@electron/fuses": "^1.6.1", + "@electron/fuses": "^2.0.0", "fs-extra": "^10.0.0" }, "devDependencies": { diff --git a/packages/plugin/fuses/spec/fixture/src/main.js b/packages/plugin/fuses/spec/fixture/src/main.cjs similarity index 77% rename from packages/plugin/fuses/spec/fixture/src/main.js rename to packages/plugin/fuses/spec/fixture/src/main.cjs index 3ef07df595..8dc0dac15e 100644 --- a/packages/plugin/fuses/spec/fixture/src/main.js +++ b/packages/plugin/fuses/spec/fixture/src/main.cjs @@ -1,3 +1,4 @@ +// eslint-disable-next-line const { app } = require('electron'); console.log('The Fuses plugin is working'); diff --git a/packages/plugin/fuses/src/FusesPlugin.ts b/packages/plugin/fuses/src/FusesPlugin.ts index 9244992e1b..cd4629e3ab 100644 --- a/packages/plugin/fuses/src/FusesPlugin.ts +++ b/packages/plugin/fuses/src/FusesPlugin.ts @@ -4,7 +4,7 @@ import { flipFuses, FuseConfig } from '@electron/fuses'; import { namedHookWithTaskFn, PluginBase } from '@electron-forge/plugin-base'; import { ForgeMultiHookMap, ForgePlatform } from '@electron-forge/shared-types'; -import { getElectronExecutablePath } from './util/getElectronExecutablePath'; +import { getElectronExecutablePath } from './util/getElectronExecutablePath.js'; export default class FusesPlugin extends PluginBase { name = 'fuses'; diff --git a/packages/plugin/local-electron/package.json b/packages/plugin/local-electron/package.json index f9d4f0113e..88a543706f 100644 --- a/packages/plugin/local-electron/package.json +++ b/packages/plugin/local-electron/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/plugin-local-electron", "version": "8.0.0-alpha.4", + "type": "module", "description": "Local Electron plugin for Electron Forge, let's you use a local build of Electron", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -8,7 +9,7 @@ "main": "dist/LocalElectronPlugin.js", "typings": "dist/LocalElectronPlugin.d.ts", "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/plugin-base": "workspace:*", diff --git a/packages/plugin/local-electron/src/LocalElectronPlugin.ts b/packages/plugin/local-electron/src/LocalElectronPlugin.ts index 5911a5e35a..51f2df588e 100644 --- a/packages/plugin/local-electron/src/LocalElectronPlugin.ts +++ b/packages/plugin/local-electron/src/LocalElectronPlugin.ts @@ -2,7 +2,7 @@ import { PluginBase } from '@electron-forge/plugin-base'; import { ForgeHookFn, ForgeHookMap } from '@electron-forge/shared-types'; import fs from 'fs-extra'; -import { LocalElectronPluginConfig } from './Config'; +import { LocalElectronPluginConfig } from './Config.js'; export default class LocalElectronPlugin extends PluginBase { name = 'local-electron'; diff --git a/packages/plugin/vite/forge-vite-env.d.ts b/packages/plugin/vite/forge-vite-env.d.ts index 59074dc18a..95cc56d9d7 100644 --- a/packages/plugin/vite/forge-vite-env.d.ts +++ b/packages/plugin/vite/forge-vite-env.d.ts @@ -1,5 +1,5 @@ export {}; // Make this a module -import type { VitePluginConfig } from './src/Config'; +import type { VitePluginConfig } from './src/Config.js'; declare global { // This allows TypeScript to pick up the magic constants that's auto-generated by Forge's Vite diff --git a/packages/plugin/vite/package.json b/packages/plugin/vite/package.json index ba436e26c4..7bc9deb1ca 100644 --- a/packages/plugin/vite/package.json +++ b/packages/plugin/vite/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/plugin-vite", "version": "8.0.0-alpha.4", + "type": "module", "description": "Vite plugin for Electron Forge, lets you use Vite directly in your tooling", "repository": { "type": "git", @@ -20,16 +21,16 @@ "listr2": "^7.0.2" }, "devDependencies": { - "@electron/packager": "^18.3.5", + "@electron/packager": "^19.0.1", "@malept/cross-spawn-promise": "^2.0.0", - "@types/node": "^18.0.3", - "vite": "^5.0.12", + "@types/node": "^22.10.7", + "vite": "^7.2.4", "vitest": "^4.0.14", "which": "^2.0.2", "xvfb-maybe": "^0.2.1" }, "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "publishConfig": { "access": "public" diff --git a/packages/plugin/vite/spec/ViteConfig.spec.ts b/packages/plugin/vite/spec/ViteConfig.spec.ts index 76069df91d..325b5b2b9c 100644 --- a/packages/plugin/vite/spec/ViteConfig.spec.ts +++ b/packages/plugin/vite/spec/ViteConfig.spec.ts @@ -8,7 +8,7 @@ import ViteConfigGenerator from '../src/ViteConfig'; import type { VitePluginConfig } from '../src/Config'; import type { Plugin } from 'vite'; -const configRoot = path.join(__dirname, 'fixtures/vite-configs'); +const configRoot = path.join(import.meta.dirname, 'fixtures/vite-configs'); describe('ViteConfigGenerator', () => { it('getBuildConfigs:main', async () => { diff --git a/packages/plugin/vite/spec/config/vite.base.config.spec.ts b/packages/plugin/vite/spec/config/vite.base.config.spec.ts index ba5d0c087c..436b9f86bd 100644 --- a/packages/plugin/vite/spec/config/vite.base.config.spec.ts +++ b/packages/plugin/vite/spec/config/vite.base.config.spec.ts @@ -11,7 +11,7 @@ import { import type { VitePluginConfig } from '../../src/Config'; -const configRoot = path.join(__dirname, 'fixtures/vite-configs'); +const configRoot = path.join(import.meta.dirname, 'fixtures/vite-configs'); const forgeConfig: VitePluginConfig = { build: [ { diff --git a/packages/plugin/vite/src/ViteConfig.ts b/packages/plugin/vite/src/ViteConfig.ts index 8673f7879a..5949deed13 100644 --- a/packages/plugin/vite/src/ViteConfig.ts +++ b/packages/plugin/vite/src/ViteConfig.ts @@ -1,15 +1,15 @@ import debug from 'debug'; import { loadConfigFromFile } from 'vite'; -import { getConfig as getMainViteConfig } from './config/vite.main.config'; -import { getConfig as getPreloadViteConfig } from './config/vite.preload.config'; -import { getConfig as getRendererViteConfig } from './config/vite.renderer.config'; +import { getConfig as getMainViteConfig } from './config/vite.main.config.js'; +import { getConfig as getPreloadViteConfig } from './config/vite.preload.config.js'; +import { getConfig as getRendererViteConfig } from './config/vite.renderer.config.js'; import type { VitePluginBuildConfig, VitePluginConfig, VitePluginRendererConfig, -} from './Config'; +} from './Config.js'; import type { ConfigEnv, UserConfig } from 'vite'; const d = debug('@electron-forge/plugin-vite:ViteConfig'); diff --git a/packages/plugin/vite/src/VitePlugin.ts b/packages/plugin/vite/src/VitePlugin.ts index 8b72f5f960..3c353a023b 100644 --- a/packages/plugin/vite/src/VitePlugin.ts +++ b/packages/plugin/vite/src/VitePlugin.ts @@ -1,6 +1,3 @@ -// TODO(erickzhao): Remove this when upgrading to Vite 6 and converting to ESM -process.env.VITE_CJS_IGNORE_WARNING = 'true'; - import path from 'node:path'; import { namedHookWithTaskFn, PluginBase } from '@electron-forge/plugin-base'; @@ -8,11 +5,11 @@ import chalk from 'chalk'; import debug from 'debug'; import fs from 'fs-extra'; import { Listr, PRESET_TIMER } from 'listr2'; -import { default as vite } from 'vite'; +import * as vite from 'vite'; -import ViteConfigGenerator from './ViteConfig'; +import ViteConfigGenerator from './ViteConfig.js'; -import type { VitePluginConfig } from './Config'; +import type { VitePluginConfig } from './Config.js'; import type { ForgeListrTask, ForgeMultiHookMap, diff --git a/packages/plugin/vite/src/config/vite.main.config.ts b/packages/plugin/vite/src/config/vite.main.config.ts index 04ad52527f..ab6d1bc2d1 100644 --- a/packages/plugin/vite/src/config/vite.main.config.ts +++ b/packages/plugin/vite/src/config/vite.main.config.ts @@ -5,7 +5,7 @@ import { getBuildConfig, getBuildDefine, pluginHotRestart, -} from './vite.base.config'; +} from './vite.base.config.js'; export function getConfig( forgeEnv: ConfigEnv<'build'>, diff --git a/packages/plugin/vite/src/config/vite.preload.config.ts b/packages/plugin/vite/src/config/vite.preload.config.ts index 6b81930e8b..e7c206d068 100644 --- a/packages/plugin/vite/src/config/vite.preload.config.ts +++ b/packages/plugin/vite/src/config/vite.preload.config.ts @@ -1,6 +1,10 @@ import { type ConfigEnv, mergeConfig, type UserConfig } from 'vite'; -import { external, getBuildConfig, pluginHotRestart } from './vite.base.config'; +import { + external, + getBuildConfig, + pluginHotRestart, +} from './vite.base.config.js'; export function getConfig( forgeEnv: ConfigEnv<'build'>, diff --git a/packages/plugin/vite/src/config/vite.renderer.config.ts b/packages/plugin/vite/src/config/vite.renderer.config.ts index 2a05cbc8a9..72f0e28154 100644 --- a/packages/plugin/vite/src/config/vite.renderer.config.ts +++ b/packages/plugin/vite/src/config/vite.renderer.config.ts @@ -1,6 +1,6 @@ import { type ConfigEnv, mergeConfig, type UserConfig } from 'vite'; -import { pluginExposeRenderer } from './vite.base.config'; +import { pluginExposeRenderer } from './vite.base.config.js'; // https://vitejs.dev/config export function getConfig( diff --git a/packages/plugin/webpack/package.json b/packages/plugin/webpack/package.json index 7de811bfdb..7700a5efc2 100644 --- a/packages/plugin/webpack/package.json +++ b/packages/plugin/webpack/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/plugin-webpack", "version": "8.0.0-alpha.4", + "type": "module", "description": "Webpack plugin for Electron Forge, lets you use Webpack directly in your tooling", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -8,15 +9,15 @@ "main": "dist/WebpackPlugin.js", "typings": "dist/WebpackPlugin.d.ts", "devDependencies": { - "@electron/packager": "^18.3.5", + "@electron/packager": "^19.0.1", "@malept/cross-spawn-promise": "^2.0.0", - "@types/node": "^18.0.3", + "@types/node": "^22.10.7", "vitest": "^4.0.14", "which": "^2.0.2", "xvfb-maybe": "^0.2.1" }, "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/core-utils": "workspace:*", diff --git a/packages/plugin/webpack/spec/AssetRelocatorPatch.slow.spec.ts b/packages/plugin/webpack/spec/AssetRelocatorPatch.slow.spec.ts index 57ffaeb574..e9854c9562 100644 --- a/packages/plugin/webpack/spec/AssetRelocatorPatch.slow.spec.ts +++ b/packages/plugin/webpack/spec/AssetRelocatorPatch.slow.spec.ts @@ -22,7 +22,7 @@ let servers: Closeable[] = []; const nativePathSuffix = 'build/Release/hello_world.node'; const fixtureSource = path.join( - __dirname, + import.meta.dirname, 'fixtures', 'apps', 'native-modules', @@ -123,6 +123,7 @@ const safeFirstRendererConfig = (renderer: WebpackPluginConfig['renderer']) => { return renderer; }; +// FIXME describe('AssetRelocatorPatch', () => { const rendererOut = path.join(appPath, '.webpack/renderer'); const mainOut = path.join(appPath, '.webpack/main'); diff --git a/packages/plugin/webpack/spec/WebpackConfig.spec.ts b/packages/plugin/webpack/spec/WebpackConfig.spec.ts index f15d7150d9..45ccb52bbe 100644 --- a/packages/plugin/webpack/spec/WebpackConfig.spec.ts +++ b/packages/plugin/webpack/spec/WebpackConfig.spec.ts @@ -346,7 +346,7 @@ describe('WebpackConfigGenerator', () => { it('generates a config from a requirable file', async () => { const config = { - mainConfig: 'mainConfig.js', + mainConfig: 'mainConfig.cjs', renderer: { entryPoints: [] as WebpackPluginEntryPoint[], }, @@ -359,7 +359,7 @@ describe('WebpackConfigGenerator', () => { it('generates a config from a requirable transpiled module file', async () => { const config = { - mainConfig: 'mainConfig.module.js', + mainConfig: 'mainConfig.module.cjs', renderer: { entryPoints: [] as WebpackPluginEntryPoint[], }, diff --git a/packages/plugin/webpack/spec/fixtures/apps/native-modules/webpack.main.config.js b/packages/plugin/webpack/spec/fixtures/apps/native-modules/webpack.main.config.js index dd0ed74cba..5c392a874c 100644 --- a/packages/plugin/webpack/spec/fixtures/apps/native-modules/webpack.main.config.js +++ b/packages/plugin/webpack/spec/fixtures/apps/native-modules/webpack.main.config.js @@ -1,5 +1,5 @@ module.exports = { - context: __dirname, + context: import.meta.dirname, entry: './src/index.js', performance: { hints: false, diff --git a/packages/plugin/webpack/spec/fixtures/apps/native-modules/webpack.renderer.config.js b/packages/plugin/webpack/spec/fixtures/apps/native-modules/webpack.renderer.config.js index 891dac3512..8942e56c40 100644 --- a/packages/plugin/webpack/spec/fixtures/apps/native-modules/webpack.renderer.config.js +++ b/packages/plugin/webpack/spec/fixtures/apps/native-modules/webpack.renderer.config.js @@ -1,7 +1,7 @@ const rules = require('./webpack.rules'); module.exports = { - context: __dirname, + context: import.meta.dirname, target: 'electron-renderer', performance: { hints: false, diff --git a/packages/plugin/webpack/spec/fixtures/main_config_external/mainConfig.js b/packages/plugin/webpack/spec/fixtures/main_config_external/mainConfig.cjs similarity index 100% rename from packages/plugin/webpack/spec/fixtures/main_config_external/mainConfig.js rename to packages/plugin/webpack/spec/fixtures/main_config_external/mainConfig.cjs diff --git a/packages/plugin/webpack/spec/fixtures/main_config_external/mainConfig.module.js b/packages/plugin/webpack/spec/fixtures/main_config_external/mainConfig.module.cjs similarity index 100% rename from packages/plugin/webpack/spec/fixtures/main_config_external/mainConfig.module.js rename to packages/plugin/webpack/spec/fixtures/main_config_external/mainConfig.module.cjs diff --git a/packages/plugin/webpack/src/Config.ts b/packages/plugin/webpack/src/Config.ts index 154d76d139..fbf5fa4be8 100644 --- a/packages/plugin/webpack/src/Config.ts +++ b/packages/plugin/webpack/src/Config.ts @@ -1,7 +1,7 @@ import { Configuration as RawWebpackConfiguration } from 'webpack'; import WebpackDevServer from 'webpack-dev-server'; -import { ConfigurationFactory as WebpackConfigurationFactory } from './WebpackConfig'; +import { ConfigurationFactory as WebpackConfigurationFactory } from './WebpackConfig.js'; export interface WebpackPluginEntryPointBase { /** diff --git a/packages/plugin/webpack/src/WebpackConfig.ts b/packages/plugin/webpack/src/WebpackConfig.ts index 6b6c7bfd84..d4ac7d5a6c 100644 --- a/packages/plugin/webpack/src/WebpackConfig.ts +++ b/packages/plugin/webpack/src/WebpackConfig.ts @@ -11,16 +11,16 @@ import { WebpackPluginEntryPointLocalWindow, WebpackPluginEntryPointPreloadOnly, WebpackPluginRendererConfig, -} from './Config'; -import AssetRelocatorPatch from './util/AssetRelocatorPatch'; -import processConfig from './util/processConfig'; +} from './Config.js'; +import AssetRelocatorPatch from './util/AssetRelocatorPatch.js'; +import processConfig from './util/processConfig.js'; import { isLocalOrNoWindowEntries, isLocalWindow, isNoWindow, isPreloadOnly, isPreloadOnlyEntries, -} from './util/rendererTypeUtils'; +} from './util/rendererTypeUtils.js'; type EntryType = string | string[] | Record; type WebpackMode = 'production' | 'development'; @@ -94,8 +94,7 @@ export default class WebpackConfigGenerator { let rawConfig = typeof config === 'string' - ? // eslint-disable-next-line @typescript-eslint/no-require-imports - (require(path.resolve(this.projectDir, config)) as MaybeESM< + ? ((await import(path.resolve(this.projectDir, config))) as MaybeESM< Configuration | ConfigurationFactory >) : config; diff --git a/packages/plugin/webpack/src/WebpackPlugin.ts b/packages/plugin/webpack/src/WebpackPlugin.ts index 90dfc7084c..82a64b7c0a 100644 --- a/packages/plugin/webpack/src/WebpackPlugin.ts +++ b/packages/plugin/webpack/src/WebpackPlugin.ts @@ -9,6 +9,7 @@ import { } from '@electron-forge/core-utils'; import { namedHookWithTaskFn, PluginBase } from '@electron-forge/plugin-base'; import { + ForgeArch, ForgeMultiHookMap, ListrTask, ResolvedForgeConfig, @@ -23,11 +24,11 @@ import webpack, { Configuration, Watching } from 'webpack'; import WebpackDevServer from 'webpack-dev-server'; import { merge } from 'webpack-merge'; -import { WebpackPluginConfig, WebpackPluginRendererConfig } from './Config'; -import ElectronForgeLoggingPlugin from './util/ElectronForgeLogging'; -import EntryPointPreloadPlugin from './util/EntryPointPreloadPlugin'; -import once from './util/once'; -import WebpackConfigGenerator from './WebpackConfig'; +import { WebpackPluginConfig, WebpackPluginRendererConfig } from './Config.js'; +import ElectronForgeLoggingPlugin from './util/ElectronForgeLogging.js'; +import EntryPointPreloadPlugin from './util/EntryPointPreloadPlugin.js'; +import once from './util/once.js'; +import WebpackConfigGenerator from './WebpackConfig.js'; const d = debug('electron-forge:plugin:webpack'); const DEFAULT_PORT = 3000; @@ -241,16 +242,19 @@ export default class WebpackPlugin extends PluginBase { await fs.remove(this.baseDir); // TODO: Figure out how to get matrix from packager - const arches: string[] = Array.from( - new Set( - arch - .split(',') - .reduce< - string[] - >((all, pArch) => (pArch === 'universal' ? all.concat(['arm64', 'x64']) : all.concat([pArch])), []), - ), + const archStrings = arch.split(','); + const archSet = new Set( + archStrings.reduce((acc, val) => { + if (val === 'universal') { + return acc.concat('arm64', 'x64'); + } else { + return acc.concat(val as ForgeArch); + } + }, []), ); + const arches = Array.from(archSet); + const firstArch = arches[0]; const otherArches = arches.slice(1); diff --git a/packages/plugin/webpack/src/util/EntryPointPreloadPlugin.ts b/packages/plugin/webpack/src/util/EntryPointPreloadPlugin.ts index 816c1f905c..f5e4cce02d 100644 --- a/packages/plugin/webpack/src/util/EntryPointPreloadPlugin.ts +++ b/packages/plugin/webpack/src/util/EntryPointPreloadPlugin.ts @@ -1,6 +1,6 @@ import { PluginBase } from '@electron-forge/plugin-base'; -import { EntryPointPluginConfig } from '../Config'; +import { EntryPointPluginConfig } from '../Config.js'; export default class EntryPointPreloadPlugin extends PluginBase { name = this.config.name; diff --git a/packages/plugin/webpack/src/util/processConfig.ts b/packages/plugin/webpack/src/util/processConfig.ts index 5567b660d6..19c98a4f70 100644 --- a/packages/plugin/webpack/src/util/processConfig.ts +++ b/packages/plugin/webpack/src/util/processConfig.ts @@ -1,6 +1,6 @@ import { Configuration } from 'webpack'; -import { ConfigurationFactory } from '../WebpackConfig'; +import { ConfigurationFactory } from '../WebpackConfig.js'; const trivialConfigurationFactory = (config: Configuration): ConfigurationFactory => diff --git a/packages/plugin/webpack/src/util/rendererTypeUtils.ts b/packages/plugin/webpack/src/util/rendererTypeUtils.ts index a78c3a4b4a..6cf7a31005 100644 --- a/packages/plugin/webpack/src/util/rendererTypeUtils.ts +++ b/packages/plugin/webpack/src/util/rendererTypeUtils.ts @@ -5,7 +5,7 @@ import { WebpackPluginEntryPointLocalWindow, WebpackPluginEntryPointNoWindow, WebpackPluginEntryPointPreloadOnly, -} from '../Config'; +} from '../Config.js'; /** * Reusable type predicate functions to narrow down the type of the WebpackPluginEntryPoint diff --git a/packages/publisher/base-static/package.json b/packages/publisher/base-static/package.json index 6b1245e094..612b992808 100644 --- a/packages/publisher/base-static/package.json +++ b/packages/publisher/base-static/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/publisher-static", "version": "8.0.0-alpha.4", + "type": "module", "description": "Base publisher for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -15,7 +16,7 @@ "vitest": "^4.0.14" }, "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "publishConfig": { "access": "public" diff --git a/packages/publisher/base-static/spec/StaticPublisher.spec.ts b/packages/publisher/base-static/spec/StaticPublisher.spec.ts index 576a19fda5..154b3248ee 100644 --- a/packages/publisher/base-static/spec/StaticPublisher.spec.ts +++ b/packages/publisher/base-static/spec/StaticPublisher.spec.ts @@ -19,7 +19,7 @@ describe('PublisherStatic', () => { platform: 'plat', arch: 'arch', keyPrefix: 'stuff', - path: __filename, + path: import.meta.filename, }), ).toEqual('stuff/plat/arch/StaticPublisher.spec.ts'); }); @@ -33,7 +33,7 @@ describe('PublisherStatic', () => { platform: 'plat', arch: 'arch', keyPrefix: 'stuff', - path: __filename, + path: import.meta.filename, }), ).toEqual('lololol'); }); diff --git a/packages/publisher/base/package.json b/packages/publisher/base/package.json index 2d7541724f..8cdd39721e 100644 --- a/packages/publisher/base/package.json +++ b/packages/publisher/base/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/publisher-base", "version": "8.0.0-alpha.4", + "type": "module", "description": "Base publisher for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -14,7 +15,7 @@ "vitest": "^4.0.14" }, "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "publishConfig": { "access": "public" diff --git a/packages/publisher/base/src/Publisher.ts b/packages/publisher/base/src/Publisher.ts index 512b3fb706..0afbda1f53 100644 --- a/packages/publisher/base/src/Publisher.ts +++ b/packages/publisher/base/src/Publisher.ts @@ -35,7 +35,7 @@ export default abstract class Publisher implements IForgePublisher { public defaultPlatforms?: ForgePlatform[]; /** @internal */ - __isElectronForgePublisher!: true; + readonly __isElectronForgePublisher!: true; /** * @param config - A configuration object for this publisher @@ -48,6 +48,7 @@ export default abstract class Publisher implements IForgePublisher { this.config = config; Object.defineProperty(this, '__isElectronForgePublisher', { value: true, + writable: false, enumerable: false, configurable: false, }); diff --git a/packages/publisher/bitbucket/package.json b/packages/publisher/bitbucket/package.json index 2017330396..a91b35e6cb 100644 --- a/packages/publisher/bitbucket/package.json +++ b/packages/publisher/bitbucket/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/publisher-bitbucket", "version": "8.0.0-alpha.4", + "type": "module", "description": "Bitbucket publisher for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Luke Batchelor", @@ -8,13 +9,12 @@ "main": "dist/PublisherBitbucket.js", "typings": "dist/PublisherBitbucket.d.ts", "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/publisher-base": "workspace:*", "form-data": "^4.0.0", - "fs-extra": "^10.0.0", - "node-fetch": "^2.6.7" + "fs-extra": "^10.0.0" }, "publishConfig": { "access": "public" diff --git a/packages/publisher/bitbucket/src/PublisherBitbucket.ts b/packages/publisher/bitbucket/src/PublisherBitbucket.ts index 0565706666..8badbcbb6b 100644 --- a/packages/publisher/bitbucket/src/PublisherBitbucket.ts +++ b/packages/publisher/bitbucket/src/PublisherBitbucket.ts @@ -6,9 +6,8 @@ import { } from '@electron-forge/publisher-base'; import FormData from 'form-data'; import fs from 'fs-extra'; -import fetch from 'node-fetch'; -import { PublisherBitbucketConfig } from './Config'; +import { PublisherBitbucketConfig } from './Config.js'; export default class PublisherBitbucket extends PublisherBase { name = 'bitbucket'; diff --git a/packages/publisher/electron-release-server/package.json b/packages/publisher/electron-release-server/package.json index 16983219ec..8367a95db7 100644 --- a/packages/publisher/electron-release-server/package.json +++ b/packages/publisher/electron-release-server/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/publisher-electron-release-server", "version": "8.0.0-alpha.4", + "type": "module", "description": "Electron release server publisher for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -12,15 +13,14 @@ "vitest": "^4.0.14" }, "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/publisher-base": "workspace:*", "@electron-forge/shared-types": "workspace:*", "debug": "^4.3.1", "form-data": "^4.0.0", - "fs-extra": "^10.0.0", - "node-fetch": "^2.6.7" + "fs-extra": "^10.0.0" }, "publishConfig": { "access": "public" diff --git a/packages/publisher/electron-release-server/src/PublisherERS.ts b/packages/publisher/electron-release-server/src/PublisherERS.ts index e681b11afd..7b1ce32920 100644 --- a/packages/publisher/electron-release-server/src/PublisherERS.ts +++ b/packages/publisher/electron-release-server/src/PublisherERS.ts @@ -8,9 +8,8 @@ import { ForgeArch, ForgePlatform } from '@electron-forge/shared-types'; import debug from 'debug'; import FormData from 'form-data'; import fs from 'fs-extra'; -import fetch, { RequestInfo, RequestInit, Response } from 'node-fetch'; -import { PublisherERSConfig } from './Config'; +import { PublisherERSConfig } from './Config.js'; const d = debug('electron-forge:publish:ers'); @@ -37,17 +36,18 @@ interface ERSVersionSorted { } const fetchAndCheckStatus = async ( - url: RequestInfo, + url: Parameters[0], init?: RequestInit, ): Promise => { const result = await fetch(url, init); if (result.ok) { // res.status >= 200 && res.status < 300 return result; + } else { + throw new Error( + `ERS publish failed with status code: ${result.status} (${result.url})`, + ); } - throw new Error( - `ERS publish failed with status code: ${result.status} (${result.url})`, - ); }; export const ersPlatform = ( @@ -85,7 +85,7 @@ export default class PublisherERS extends PublisherBase { const api = (apiPath: string) => `${config.baseUrl}/${apiPath}`; - const { token } = await ( + const { token } = (await ( await fetchAndCheckStatus(api('api/auth/login'), { method: 'POST', body: JSON.stringify({ @@ -96,7 +96,7 @@ export default class PublisherERS extends PublisherBase { 'Content-Type': 'application/json', }, }) - ).json(); + ).json()) as { token: string }; const authFetch = (apiPath: string, options?: RequestInit) => fetchAndCheckStatus(api(apiPath), { @@ -116,9 +116,9 @@ export default class PublisherERS extends PublisherBase { path.basename(artifactPath).toLowerCase() !== 'releases', ); - const versions: ERSVersionSorted = await ( + const versions = (await ( await authFetch('versions/sorted') - ).json(); + ).json()) as ERSVersionSorted; // Find the version with the same name and flavor const existingVersion = versions['items'].find( diff --git a/packages/publisher/gcs/package.json b/packages/publisher/gcs/package.json index 2eb9d5e73d..9a3d172bd3 100644 --- a/packages/publisher/gcs/package.json +++ b/packages/publisher/gcs/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/publisher-gcs", "version": "8.0.0-alpha.4", + "type": "module", "description": "Google Cloud Storage publisher for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Evgeny Vlasenko", @@ -8,7 +9,7 @@ "main": "dist/PublisherGCS.js", "typings": "dist/PublisherGCS.d.ts", "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/publisher-static": "workspace:*", diff --git a/packages/publisher/gcs/src/Config.ts b/packages/publisher/gcs/src/Config.ts index 0576bb44fb..71e08f0c9a 100644 --- a/packages/publisher/gcs/src/Config.ts +++ b/packages/publisher/gcs/src/Config.ts @@ -1,8 +1,7 @@ import { StorageOptions, UploadOptions } from '@google-cloud/storage'; -// eslint-disable-next-line n/no-missing-import -import { ConfigMetadata } from '@google-cloud/storage/build/cjs/src/resumable-upload'; +// import { ConfigMetadata } from '@google-cloud/storage/build'; -import { GCSArtifact } from './PublisherGCS'; +import { GCSArtifact } from './PublisherGCS.js'; export interface PublisherGCSConfig { /** @@ -38,5 +37,5 @@ export interface PublisherGCSConfig { * See https://cloud.google.com/storage/docs/metadata for more info. * Expects a function that takes a GCSArtifact object and returns a `ConfigMetadata` object. */ - metadataGenerator?: (artifact: GCSArtifact) => ConfigMetadata; + metadataGenerator?: (artifact: GCSArtifact) => any; // FIXME: ADD CONFIGMETADATA TYPE BACK } diff --git a/packages/publisher/gcs/src/PublisherGCS.ts b/packages/publisher/gcs/src/PublisherGCS.ts index 1ae3686024..fbec084e2b 100644 --- a/packages/publisher/gcs/src/PublisherGCS.ts +++ b/packages/publisher/gcs/src/PublisherGCS.ts @@ -2,18 +2,19 @@ import { PublisherOptions, PublisherStatic, } from '@electron-forge/publisher-static'; +import { ForgeArch, ForgePlatform } from '@electron-forge/shared-types'; import { Storage } from '@google-cloud/storage'; import debug from 'debug'; -import { PublisherGCSConfig } from './Config'; +import { PublisherGCSConfig } from './Config.js'; const d = debug('electron-forge:publish:gcs'); export type GCSArtifact = { path: string; keyPrefix: string; - platform: string; - arch: string; + platform: ForgePlatform; + arch: ForgeArch; version: string; }; diff --git a/packages/publisher/github/package.json b/packages/publisher/github/package.json index ba054c37ca..96dab9079d 100644 --- a/packages/publisher/github/package.json +++ b/packages/publisher/github/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/publisher-github", "version": "8.0.0-alpha.4", + "type": "module", "description": "Github publisher for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -11,7 +12,7 @@ "vitest": "^4.0.14" }, "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/publisher-base": "workspace:*", diff --git a/packages/publisher/github/src/Config.ts b/packages/publisher/github/src/Config.ts index 35f504f1a0..a25ea197b1 100644 --- a/packages/publisher/github/src/Config.ts +++ b/packages/publisher/github/src/Config.ts @@ -1,4 +1,4 @@ -import { OctokitOptions } from '@octokit/core/dist-types/types.d'; +import type { OctokitOptions } from '@octokit/core'; export interface GitHubRepository { /** diff --git a/packages/publisher/github/src/PublisherGithub.ts b/packages/publisher/github/src/PublisherGithub.ts index 87984f1e54..e8aabbdc0f 100644 --- a/packages/publisher/github/src/PublisherGithub.ts +++ b/packages/publisher/github/src/PublisherGithub.ts @@ -12,9 +12,9 @@ import fs from 'fs-extra'; import logSymbols from 'log-symbols'; import mime from 'mime-types'; -import { PublisherGitHubConfig } from './Config'; -import GitHub from './util/github'; -import NoReleaseError from './util/no-release-error'; +import { PublisherGitHubConfig } from './Config.js'; +import GitHub from './util/github.js'; +import NoReleaseError from './util/no-release-error.js'; import type { Octokit } from '@octokit/rest'; diff --git a/packages/publisher/github/src/util/github.ts b/packages/publisher/github/src/util/github.ts index 3c753c9df3..913d98704f 100644 --- a/packages/publisher/github/src/util/github.ts +++ b/packages/publisher/github/src/util/github.ts @@ -1,10 +1,11 @@ import path from 'node:path'; -import { OctokitOptions } from '@octokit/core/dist-types/types.d'; import { retry } from '@octokit/plugin-retry'; import { Octokit } from '@octokit/rest'; import debug from 'debug'; +import type { OctokitOptions } from '@octokit/core'; + const logInfo = debug('electron-forge:publisher:github:info'); const logDebug = debug('electron-forge:publisher:github:debug'); diff --git a/packages/publisher/nucleus/package.json b/packages/publisher/nucleus/package.json index 1a9a7819b6..54fe5f606d 100644 --- a/packages/publisher/nucleus/package.json +++ b/packages/publisher/nucleus/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/publisher-nucleus", "version": "8.0.0-alpha.4", + "type": "module", "description": "Nucleus publisher for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -8,14 +9,13 @@ "main": "dist/PublisherNucleus.js", "typings": "dist/PublisherNucleus.d.ts", "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/publisher-base": "workspace:*", "@electron-forge/shared-types": "workspace:*", "debug": "^4.3.1", - "form-data": "^4.0.0", - "node-fetch": "^2.6.7" + "form-data": "^4.0.0" }, "publishConfig": { "access": "public" diff --git a/packages/publisher/nucleus/src/PublisherNucleus.ts b/packages/publisher/nucleus/src/PublisherNucleus.ts index 9a860ac146..6e8138b096 100644 --- a/packages/publisher/nucleus/src/PublisherNucleus.ts +++ b/packages/publisher/nucleus/src/PublisherNucleus.ts @@ -7,9 +7,8 @@ import { } from '@electron-forge/publisher-base'; import debug from 'debug'; import FormData from 'form-data'; -import fetch from 'node-fetch'; -import { PublisherNucleusConfig } from './Config'; +import { PublisherNucleusConfig } from './Config.js'; const d = debug('electron-forge:publish:nucleus'); diff --git a/packages/publisher/s3/package.json b/packages/publisher/s3/package.json index a354e7546a..26241adb26 100644 --- a/packages/publisher/s3/package.json +++ b/packages/publisher/s3/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/publisher-s3", "version": "8.0.0-alpha.4", + "type": "module", "description": "S3 publisher for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -8,7 +9,7 @@ "main": "dist/PublisherS3.js", "typings": "dist/PublisherS3.d.ts", "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@aws-sdk/client-s3": "^3.654.0", diff --git a/packages/publisher/s3/src/PublisherS3.ts b/packages/publisher/s3/src/PublisherS3.ts index ac3534ddff..152d0710f9 100644 --- a/packages/publisher/s3/src/PublisherS3.ts +++ b/packages/publisher/s3/src/PublisherS3.ts @@ -8,17 +8,18 @@ import { PublisherOptions, PublisherStatic, } from '@electron-forge/publisher-static'; +import { ForgeArch, ForgePlatform } from '@electron-forge/shared-types'; import debug from 'debug'; -import { PublisherS3Config } from './Config'; +import { PublisherS3Config } from './Config.js'; const d = debug('electron-forge:publish:s3'); type S3Artifact = { path: string; keyPrefix: string; - platform: string; - arch: string; + platform: ForgePlatform; + arch: ForgeArch; isReleaseFile: boolean; version: string; }; diff --git a/packages/publisher/snapcraft/package.json b/packages/publisher/snapcraft/package.json index ebfa27f251..cb2231b20a 100644 --- a/packages/publisher/snapcraft/package.json +++ b/packages/publisher/snapcraft/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/publisher-snapcraft", "version": "8.0.0-alpha.4", + "type": "module", "description": "Snapcraft publisher for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -8,7 +9,7 @@ "main": "dist/PublisherSnapcraft.js", "typings": "dist/PublisherSnapcraft.d.ts", "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/publisher-base": "workspace:*", diff --git a/packages/publisher/snapcraft/src/PublisherSnapcraft.ts b/packages/publisher/snapcraft/src/PublisherSnapcraft.ts index 8677acd7fb..4dbebf6513 100644 --- a/packages/publisher/snapcraft/src/PublisherSnapcraft.ts +++ b/packages/publisher/snapcraft/src/PublisherSnapcraft.ts @@ -6,7 +6,7 @@ import { } from '@electron-forge/publisher-base'; import fs from 'fs-extra'; -import { PublisherSnapcraftConfig } from './Config'; +import { PublisherSnapcraftConfig } from './Config.js'; // TODO: convert to import statement once electron-installer-snap imports Snapcraft properly. // eslint-disable-next-line @typescript-eslint/no-require-imports diff --git a/packages/template/base/package.json b/packages/template/base/package.json index c3c52848f6..1089944991 100644 --- a/packages/template/base/package.json +++ b/packages/template/base/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/template-base", "version": "8.0.0-alpha.4", + "type": "module", "description": "Base template for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -8,7 +9,7 @@ "main": "dist/BaseTemplate.js", "typings": "dist/BaseTemplate.d.ts", "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/core-utils": "workspace:*", diff --git a/packages/template/base/src/BaseTemplate.ts b/packages/template/base/src/BaseTemplate.ts index 61af6e3a01..a548356846 100644 --- a/packages/template/base/src/BaseTemplate.ts +++ b/packages/template/base/src/BaseTemplate.ts @@ -10,13 +10,14 @@ import debug from 'debug'; import fs from 'fs-extra'; import semver from 'semver'; -import determineAuthor from './determine-author'; +import determineAuthor from './determine-author.js'; -// eslint-disable-next-line @typescript-eslint/no-require-imports -const currentForgeVersion = require('../package.json').version; +const currentForgeVersion = fs.readJSONSync( + path.resolve(import.meta.dirname, '../package.json'), +).version; const d = debug('electron-forge:template:base'); -const tmplDir = path.resolve(__dirname, '../tmpl'); +const tmplDir = path.resolve(import.meta.dirname, '../tmpl'); export class BaseTemplate implements ForgeTemplate { public templateDir = tmplDir; @@ -131,7 +132,7 @@ export class BaseTemplate implements ForgeTemplate { async initializePackageJSON(directory: string): Promise { const packageJSON = await fs.readJson( - path.resolve(__dirname, '../tmpl/package.json'), + path.resolve(import.meta.dirname, '../tmpl/package.json'), ); packageJSON.productName = packageJSON.name = path .basename(directory) diff --git a/packages/template/vite-typescript/package.json b/packages/template/vite-typescript/package.json index 4338dbe5a2..6c3e125669 100644 --- a/packages/template/vite-typescript/package.json +++ b/packages/template/vite-typescript/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/template-vite-typescript", "version": "8.0.0-alpha.4", + "type": "module", "description": "Vite-TypeScript template for Electron Forge, gets you started with Vite really quickly", "repository": { "type": "git", @@ -12,7 +13,7 @@ "main": "dist/ViteTypeScriptTemplate.js", "typings": "dist/ViteTypeScriptTemplate.d.ts", "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/shared-types": "workspace:*", diff --git a/packages/template/vite-typescript/spec/ViteTypeScriptTemplate.slow.verdaccio.spec.ts b/packages/template/vite-typescript/spec/ViteTypeScriptTemplate.slow.verdaccio.spec.ts index 6ea8e69950..f14a9a3de4 100644 --- a/packages/template/vite-typescript/spec/ViteTypeScriptTemplate.slow.verdaccio.spec.ts +++ b/packages/template/vite-typescript/spec/ViteTypeScriptTemplate.slow.verdaccio.spec.ts @@ -6,7 +6,7 @@ import { PACKAGE_MANAGERS, spawnPackageManager, } from '@electron-forge/core-utils'; -import testUtils from '@electron-forge/test-utils'; +import * as testUtils from '@electron-forge/test-utils'; import glob from 'fast-glob'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; @@ -32,7 +32,7 @@ describe('ViteTypeScriptTemplate', () => { it('should succeed in initializing the typescript template', async () => { await api.init({ dir, - template: path.resolve(__dirname, '..'), + template: path.resolve(import.meta.dirname, '..'), interactive: false, electronVersion: '38.2.2', }); diff --git a/packages/template/vite-typescript/src/ViteTypeScriptTemplate.ts b/packages/template/vite-typescript/src/ViteTypeScriptTemplate.ts index 055f968a0f..5803d9193f 100644 --- a/packages/template/vite-typescript/src/ViteTypeScriptTemplate.ts +++ b/packages/template/vite-typescript/src/ViteTypeScriptTemplate.ts @@ -8,7 +8,7 @@ import { BaseTemplate } from '@electron-forge/template-base'; import fs from 'fs-extra'; class ViteTypeScriptTemplate extends BaseTemplate { - public templateDir = path.resolve(__dirname, '..', 'tmpl'); + public templateDir = path.resolve(import.meta.dirname, '..', 'tmpl'); public async initializeTemplate( directory: string, diff --git a/packages/template/vite/package.json b/packages/template/vite/package.json index 2055a9636c..4c01d6cb84 100644 --- a/packages/template/vite/package.json +++ b/packages/template/vite/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/template-vite", "version": "8.0.0-alpha.4", + "type": "module", "description": "Vite template for Electron Forge, gets you started with Vite really quickly", "repository": { "type": "git", @@ -12,7 +13,7 @@ "main": "dist/ViteTemplate.js", "typings": "dist/ViteTemplate.d.ts", "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/shared-types": "workspace:*", diff --git a/packages/template/vite/spec/ViteTemplate.spec.ts b/packages/template/vite/spec/ViteTemplate.spec.ts index 4de3a21c30..b2bf29ea95 100644 --- a/packages/template/vite/spec/ViteTemplate.spec.ts +++ b/packages/template/vite/spec/ViteTemplate.spec.ts @@ -1,7 +1,7 @@ import fs from 'node:fs'; import path from 'node:path'; -import testUtils from '@electron-forge/test-utils'; +import * as testUtils from '@electron-forge/test-utils'; import { Listr } from 'listr2'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; diff --git a/packages/template/vite/src/ViteTemplate.ts b/packages/template/vite/src/ViteTemplate.ts index 62de050271..64642953de 100644 --- a/packages/template/vite/src/ViteTemplate.ts +++ b/packages/template/vite/src/ViteTemplate.ts @@ -8,7 +8,7 @@ import { BaseTemplate } from '@electron-forge/template-base'; import fs from 'fs-extra'; class ViteTemplate extends BaseTemplate { - public templateDir = path.resolve(__dirname, '..', 'tmpl'); + public templateDir = path.resolve(import.meta.dirname, '..', 'tmpl'); public async initializeTemplate( directory: string, @@ -46,7 +46,7 @@ class ViteTemplate extends BaseTemplate { return ` if (MAIN_WINDOW_VITE_DEV_SERVER_URL) { mainWindow.loadURL(MAIN_WINDOW_VITE_DEV_SERVER_URL); } else { - mainWindow.loadFile(path.join(__dirname, \`../renderer/\${MAIN_WINDOW_VITE_NAME}/index.html\`)); + mainWindow.loadFile(path.join(import.meta.dirname, \`../renderer/\${MAIN_WINDOW_VITE_NAME}/index.html\`)); }`; return line; }, diff --git a/packages/template/vite/tmpl/package.json b/packages/template/vite/tmpl/package.json index a47907d70d..72517f0d43 100644 --- a/packages/template/vite/tmpl/package.json +++ b/packages/template/vite/tmpl/package.json @@ -1,6 +1,6 @@ { "devDependencies": { - "@electron/fuses": "^1.7.0", + "@electron/fuses": "^2.0.0", "@electron-forge/plugin-vite": "ELECTRON_FORGE/VERSION", "vite": "^5.0.12" } diff --git a/packages/template/webpack-typescript/package.json b/packages/template/webpack-typescript/package.json index 874bf41534..f54f5ab374 100644 --- a/packages/template/webpack-typescript/package.json +++ b/packages/template/webpack-typescript/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/template-webpack-typescript", "version": "8.0.0-alpha.4", + "type": "module", "description": "Webpack-TypeScript template for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Shelley Vohr ", @@ -8,13 +9,13 @@ "main": "dist/WebpackTypeScriptTemplate.js", "typings": "dist/WebpackTypeScriptTemplate.d.ts", "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/shared-types": "workspace:*", "@electron-forge/template-base": "workspace:*", "fs-extra": "^10.0.0", - "typescript": "~5.4.5", + "typescript": "5.9.3", "webpack": "^5.69.1" }, "devDependencies": { @@ -28,7 +29,7 @@ "fast-glob": "^3.2.7", "fork-ts-checker-webpack-plugin": "^7.2.13", "listr2": "^7.0.2", - "typescript": "~5.4.5", + "typescript": "5.9.3", "vitest": "^4.0.14", "webpack": "^5.69.1" }, diff --git a/packages/template/webpack-typescript/spec/WebpackTypeScript.slow.verdaccio.spec.ts b/packages/template/webpack-typescript/spec/WebpackTypeScript.slow.verdaccio.spec.ts index 32383ca7af..d0084fb290 100644 --- a/packages/template/webpack-typescript/spec/WebpackTypeScript.slow.verdaccio.spec.ts +++ b/packages/template/webpack-typescript/spec/WebpackTypeScript.slow.verdaccio.spec.ts @@ -5,7 +5,7 @@ import { PACKAGE_MANAGERS, spawnPackageManager, } from '@electron-forge/core-utils'; -import testUtils from '@electron-forge/test-utils'; +import * as testUtils from '@electron-forge/test-utils'; import glob from 'fast-glob'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; @@ -22,7 +22,7 @@ describe('WebpackTypeScriptTemplate', () => { it('should succeed in initializing the typescript template', async () => { await api.init({ dir, - template: path.join(__dirname, '..'), + template: path.join(import.meta.dirname, '..'), interactive: false, electronVersion: '38.2.2', }); diff --git a/packages/template/webpack-typescript/src/WebpackTypeScriptTemplate.ts b/packages/template/webpack-typescript/src/WebpackTypeScriptTemplate.ts index 433d3f1585..9c1caf6696 100644 --- a/packages/template/webpack-typescript/src/WebpackTypeScriptTemplate.ts +++ b/packages/template/webpack-typescript/src/WebpackTypeScriptTemplate.ts @@ -8,7 +8,7 @@ import { BaseTemplate } from '@electron-forge/template-base'; import fs from 'fs-extra'; class WebpackTypeScriptTemplate extends BaseTemplate { - public templateDir = path.resolve(__dirname, '..', 'tmpl'); + public templateDir = path.resolve(import.meta.dirname, '..', 'tmpl'); async initializeTemplate( directory: string, diff --git a/packages/template/webpack/package.json b/packages/template/webpack/package.json index 8971512c70..8694b4313a 100644 --- a/packages/template/webpack/package.json +++ b/packages/template/webpack/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/template-webpack", "version": "8.0.0-alpha.4", + "type": "module", "description": "Webpack template for Electron Forge, gets you started with Webpack really quickly", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -8,7 +9,7 @@ "main": "dist/WebpackTemplate.js", "typings": "dist/WebpackTemplate.d.ts", "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "dependencies": { "@electron-forge/shared-types": "workspace:*", diff --git a/packages/template/webpack/spec/WebpackTemplate.spec.ts b/packages/template/webpack/spec/WebpackTemplate.spec.ts index 3e5d911548..c5bbc91ec5 100644 --- a/packages/template/webpack/spec/WebpackTemplate.spec.ts +++ b/packages/template/webpack/spec/WebpackTemplate.spec.ts @@ -1,7 +1,7 @@ import fs from 'node:fs'; import path from 'node:path'; -import testUtils from '@electron-forge/test-utils'; +import * as testUtils from '@electron-forge/test-utils'; import { Listr } from 'listr2'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; diff --git a/packages/template/webpack/src/WebpackTemplate.ts b/packages/template/webpack/src/WebpackTemplate.ts index 7d90045bf2..023e20763b 100644 --- a/packages/template/webpack/src/WebpackTemplate.ts +++ b/packages/template/webpack/src/WebpackTemplate.ts @@ -8,7 +8,7 @@ import { BaseTemplate } from '@electron-forge/template-base'; import fs from 'fs-extra'; class WebpackTemplate extends BaseTemplate { - public templateDir = path.resolve(__dirname, '..', 'tmpl'); + public templateDir = path.resolve(import.meta.dirname, '..', 'tmpl'); public async initializeTemplate( directory: string, diff --git a/packages/utils/core-utils/package.json b/packages/utils/core-utils/package.json index bdc839df89..dc044fd47a 100644 --- a/packages/utils/core-utils/package.json +++ b/packages/utils/core-utils/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/core-utils", "version": "8.0.0-alpha.4", + "type": "module", "description": "Core utilities for the Electron Forge packages", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -9,7 +10,7 @@ "typings": "dist/index.d.ts", "dependencies": { "@electron-forge/shared-types": "workspace:*", - "@electron/rebuild": "^3.7.0", + "@electron/rebuild": "^4.0.1", "@malept/cross-spawn-promise": "^2.0.0", "chalk": "^4.0.0", "debug": "^4.3.1", @@ -20,7 +21,7 @@ "semver": "^7.2.1" }, "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "devDependencies": { "vitest": "^4.0.14" diff --git a/packages/utils/core-utils/spec/electron-version.spec.ts b/packages/utils/core-utils/spec/electron-version.spec.ts index c724cc8932..f1a9098311 100644 --- a/packages/utils/core-utils/spec/electron-version.spec.ts +++ b/packages/utils/core-utils/spec/electron-version.spec.ts @@ -8,14 +8,14 @@ import { afterAll, beforeAll, beforeEach, describe, expect, it } from 'vitest'; import { devDeps, exactDevDeps, -} from '../../../api/core/src/api/init-scripts/init-npm'; +} from '../../../api/core/src/api/init-scripts/init-npm.js'; import { getElectronModulePath, getElectronVersion, updateElectronDependency, } from '../src/electron-version'; -const fixturePath = path.resolve(__dirname, 'fixture'); +const fixturePath = path.resolve(import.meta.dirname, 'fixture'); describe('updateElectronDependency', () => { it('adds an Electron dep if one does not already exist', () => { diff --git a/packages/utils/core-utils/src/index.ts b/packages/utils/core-utils/src/index.ts index df2fe5fcf1..ac08af9b44 100644 --- a/packages/utils/core-utils/src/index.ts +++ b/packages/utils/core-utils/src/index.ts @@ -1,4 +1,4 @@ -export * from './rebuild'; -export * from './electron-version'; -export * from './package-manager'; -export * from './author-name'; +export * from './rebuild.js'; +export * from './electron-version.js'; +export * from './package-manager.js'; +export * from './author-name.js'; diff --git a/packages/utils/core-utils/src/rebuild.ts b/packages/utils/core-utils/src/rebuild.ts index dd659955a4..87b7ac1a1c 100644 --- a/packages/utils/core-utils/src/rebuild.ts +++ b/packages/utils/core-utils/src/rebuild.ts @@ -27,7 +27,7 @@ export const listrCompatibleRebuildHook = async ( }; const child = cp.fork( - path.resolve(__dirname, 'remote-rebuild.js'), + path.resolve(import.meta.dirname, 'remote-rebuild.js'), [JSON.stringify(options)], { stdio: ['pipe', 'pipe', 'pipe', 'ipc'], diff --git a/packages/utils/test-utils/package.json b/packages/utils/test-utils/package.json index f0f4361e4a..92752dfcae 100644 --- a/packages/utils/test-utils/package.json +++ b/packages/utils/test-utils/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/test-utils", "version": "8.0.0-alpha.4", + "type": "module", "description": "Helper utilities for the Electron Forge testsuite", "repository": "https://github.com/electron/forge", "author": "Mark Lee", @@ -12,7 +13,7 @@ "fs-extra": "^10.0.0" }, "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "publishConfig": { "access": "public" diff --git a/packages/utils/test-utils/src/index.ts b/packages/utils/test-utils/src/index.ts index 66a627f2c5..6e385bd01b 100644 --- a/packages/utils/test-utils/src/index.ts +++ b/packages/utils/test-utils/src/index.ts @@ -51,27 +51,6 @@ export async function expectLintToPass(dir: string): Promise { } } -/** - * Helper function to mock CommonJS `require` calls with Vitest. - * - * @see https://github.com/vitest-dev/vitest/discussions/3134 - * @param mockedUri - mocked module URI - * @param stub - stub function to assign to mock - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export async function mockRequire(mockedUri: string, stub: any) { - const { Module } = await import('module'); - - //@ts-expect-error undocumented functions - Module._load_original = Module._load; - //@ts-expect-error undocumented functions - Module._load = (uri, parent) => { - if (uri === mockedUri) return stub; - //@ts-expect-error undocumented functions - return Module._load_original(uri, parent); - }; -} - /** * Mutates the `package.json` file in a directory. * Use the return value to later restore the original `package.json` value diff --git a/packages/utils/tracer/package.json b/packages/utils/tracer/package.json index 377d9583d4..e97ecb5a7f 100644 --- a/packages/utils/tracer/package.json +++ b/packages/utils/tracer/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/tracer", "version": "8.0.0-alpha.4", + "type": "module", "description": "Tracing helpers for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", diff --git a/packages/utils/types/package.json b/packages/utils/types/package.json index 6fd54137a0..abc57290c8 100644 --- a/packages/utils/types/package.json +++ b/packages/utils/types/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/shared-types", "version": "8.0.0-alpha.4", + "type": "module", "description": "Shared types across Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -9,12 +10,12 @@ "typings": "dist/index.d.ts", "dependencies": { "@electron-forge/tracer": "workspace:*", - "@electron/packager": "^18.3.5", - "@electron/rebuild": "^3.7.0", + "@electron/packager": "^19.0.1", + "@electron/rebuild": "^4.0.1", "listr2": "^7.0.2" }, "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "publishConfig": { "access": "public" diff --git a/packages/utils/types/src/index.ts b/packages/utils/types/src/index.ts index 52ce10fd66..047d6dcf28 100644 --- a/packages/utils/types/src/index.ts +++ b/packages/utils/types/src/index.ts @@ -1,10 +1,5 @@ import { ChildProcess } from 'node:child_process'; -import { - ArchOption, - Options as ElectronPackagerOptions, - TargetPlatform, -} from '@electron/packager'; import { RebuildOptions } from '@electron/rebuild'; import { autoTrace } from '@electron-forge/tracer'; import { @@ -18,6 +13,12 @@ import { ListrTaskWrapper, } from 'listr2'; +import type { + Options as ElectronPackagerOptions, + OfficialArch, + OfficialPlatform, +} from '@electron/packager'; + export type ForgeListrOptions = ListrBaseClassOptions< T, ListrDefaultRendererValue, @@ -34,8 +35,8 @@ export type ForgeListrTaskFn = ListrTask< >['task']; export type ElectronProcess = ChildProcess & { restarted: boolean }; -export type ForgePlatform = TargetPlatform; -export type ForgeArch = ArchOption; +export type ForgePlatform = OfficialPlatform; +export type ForgeArch = OfficialArch | 'all'; export type ForgeConfigPublisher = IForgeResolvablePublisher | IForgePublisher; export type ForgeConfigMaker = IForgeResolvableMaker | IForgeMaker; export type ForgeConfigPlugin = IForgeResolvablePlugin | IForgePlugin; diff --git a/packages/utils/web-multi-logger/package.json b/packages/utils/web-multi-logger/package.json index 3acf6b24e7..bc8762681c 100644 --- a/packages/utils/web-multi-logger/package.json +++ b/packages/utils/web-multi-logger/package.json @@ -1,6 +1,7 @@ { "name": "@electron-forge/web-multi-logger", "version": "8.0.0-alpha.4", + "type": "module", "description": "Display multiple streams of logs in one window", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -15,7 +16,7 @@ "xterm-addon-search": "^0.8.0" }, "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "publishConfig": { "access": "public" diff --git a/packages/utils/web-multi-logger/src/Logger.ts b/packages/utils/web-multi-logger/src/Logger.ts index 5547f6ae5f..61ed145f5d 100644 --- a/packages/utils/web-multi-logger/src/Logger.ts +++ b/packages/utils/web-multi-logger/src/Logger.ts @@ -4,7 +4,7 @@ import path from 'node:path'; import express from 'express'; import ews from 'express-ws'; -import Tab from './Tab'; +import Tab from './Tab.js'; export { Tab }; @@ -27,17 +27,19 @@ export default class Logger { this.app.use( '/xterm/addons/fit', - express.static(path.dirname(require.resolve('xterm-addon-fit'))), + express.static(path.dirname(import.meta.resolve('xterm-addon-fit'))), ); this.app.use( '/xterm/addons/search', - express.static(path.dirname(require.resolve('xterm-addon-search'))), + express.static(path.dirname(import.meta.resolve('xterm-addon-search'))), ); this.app.use( '/xterm', - express.static(path.resolve(require.resolve('xterm'), '../..')), + express.static(path.resolve(import.meta.resolve('xterm'), '../..')), + ); + this.app.use( + express.static(path.resolve(import.meta.dirname, '..', 'static')), ); - this.app.use(express.static(path.resolve(__dirname, '..', 'static'))); this.ws.app.ws('/sub', () => { // I assume this endpoint is just a no-op needed for some reason. }); diff --git a/packages/utils/web-multi-logger/src/Tab.ts b/packages/utils/web-multi-logger/src/Tab.ts index f10e75b2ed..74b93b7ead 100644 --- a/packages/utils/web-multi-logger/src/Tab.ts +++ b/packages/utils/web-multi-logger/src/Tab.ts @@ -1,6 +1,6 @@ import ews from 'express-ws'; -import Log from './Log'; +import Log from './Log.js'; let idCounter = 1; diff --git a/tools/doc-plugin/package.json b/tools/doc-plugin/package.json index 1520745b81..79de434704 100644 --- a/tools/doc-plugin/package.json +++ b/tools/doc-plugin/package.json @@ -9,10 +9,10 @@ "custom-sidebar" ], "engines": { - "node": ">= 16.4.0" + "node": ">= 22.12.0" }, "devDependencies": { - "typescript": "^4.6.3" + "typescript": "5.9.3" }, "peerDependencies": { "typedoc": "^0.22.15" diff --git a/tools/fix-deps.ts b/tools/fix-deps.ts index a1f31e3389..44c7644415 100644 --- a/tools/fix-deps.ts +++ b/tools/fix-deps.ts @@ -8,7 +8,7 @@ import { getPackageInfo } from './utils'; const packages = await getPackageInfo(); const baseJson = await fs.readJson( - path.resolve(__dirname, '..', 'package.json'), + path.resolve(import.meta.dirname, '..', 'package.json'), ); const allDeps = { diff --git a/tools/gen-ts-glue.ts b/tools/gen-ts-glue.ts index 5400018d7f..6b29dcef64 100644 --- a/tools/gen-ts-glue.ts +++ b/tools/gen-ts-glue.ts @@ -32,7 +32,10 @@ function convertMainToSrc(main: string): string { } (async () => { - const baseTypedocJson = path.resolve(__dirname, '../typedoc.base.json'); + const baseTypedocJson = path.resolve( + import.meta.dirname, + '../typedoc.base.json', + ); const pkgs = await getPackageInfo(); // Run each package in parallel diff --git a/tools/gen-tsconfigs.ts b/tools/gen-tsconfigs.ts index bd26964372..778ffafc60 100644 --- a/tools/gen-tsconfigs.ts +++ b/tools/gen-tsconfigs.ts @@ -13,7 +13,7 @@ function filterDupes(arr: readonly T[]): T[] { (async () => { const BASE_TS_CONFIG = JSON.parse( await fs.readFile( - path.resolve(__dirname, '../tsconfig.base.json'), + path.resolve(import.meta.dirname, '../tsconfig.base.json'), 'utf-8', ), ); @@ -34,7 +34,7 @@ function filterDupes(arr: readonly T[]): T[] { }; fs.writeFile( - path.resolve(__dirname, '../packages/tsconfig.json'), + path.resolve(import.meta.dirname, '../packages/tsconfig.json'), JSON.stringify(rootPackagesConfig, null, 2), ); @@ -72,10 +72,13 @@ function filterDupes(arr: readonly T[]): T[] { }); Object.assign(tsConfig.compilerOptions, { typeRoots: [ - path.relative(pkg.path, path.resolve(__dirname, '..', 'typings')), path.relative( pkg.path, - path.resolve(__dirname, '..', 'node_modules', '@types'), + path.resolve(import.meta.dirname, '..', 'typings'), + ), + path.relative( + pkg.path, + path.resolve(import.meta.dirname, '..', 'node_modules', '@types'), ), ], }); diff --git a/tools/position-docs.ts b/tools/position-docs.ts index bc895244d0..d63ee00008 100644 --- a/tools/position-docs.ts +++ b/tools/position-docs.ts @@ -5,7 +5,7 @@ import * as fs from 'fs-extra'; import { getPackageInfo } from './utils'; -const DOCS_PATH = path.resolve(__dirname, '..', 'docs'); +const DOCS_PATH = path.resolve(import.meta.dirname, '..', 'docs'); async function normalizeLinks( htmlFile: string, diff --git a/tools/silent.js b/tools/silent.js deleted file mode 100644 index 5e8b4bdb55..0000000000 --- a/tools/silent.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Silences warnings and other stdio logs produced from commands - * - * It does not silence errors. - */ - -const { spawn } = require('@malept/cross-spawn-promise'); - -const [cmd, ...args] = process.argv.slice(2); - -spawn(cmd, args, { - stdio: 'pipe', -}); diff --git a/tools/sync-readmes.ts b/tools/sync-readmes.ts index a290c4bd01..102b579291 100644 --- a/tools/sync-readmes.ts +++ b/tools/sync-readmes.ts @@ -2,7 +2,6 @@ import * as path from 'node:path'; import * as fs from 'fs-extra'; import { Listr } from 'listr2'; -import fetch from 'node-fetch'; const workspaceMappings: { [space: string]: { [packageName: string]: string | undefined }; @@ -19,7 +18,7 @@ const workspaceMappings: { }, }; -const BASE_DIR = path.resolve(__dirname, '..'); +const BASE_DIR = path.resolve(import.meta.dirname, '..'); const DOCS_BASE = 'https://raw.githubusercontent.com/electron-forge/electron-forge-docs/v6'; diff --git a/tools/test-dist.ts b/tools/test-dist.ts index f7f782cc02..904782cb09 100644 --- a/tools/test-dist.ts +++ b/tools/test-dist.ts @@ -1,9 +1,9 @@ import * as path from 'node:path'; import chalk from 'chalk'; -import * as fs from 'fs-extra'; +import fs from 'fs-extra'; -const BASE_DIR = path.resolve(__dirname, '..'); +const BASE_DIR = path.resolve(import.meta.dirname, '..'); const PACKAGES_DIR = path.resolve(BASE_DIR, 'packages'); (async () => { diff --git a/tools/update-dependencies.js b/tools/update-dependencies.js deleted file mode 100755 index cc0290d45d..0000000000 --- a/tools/update-dependencies.js +++ /dev/null @@ -1,183 +0,0 @@ -#!/usr/bin/env node - -const { spawn } = require('@malept/cross-spawn-promise'); -const glob = require('fast-glob'); -const { satisfies } = require('semver'); - -const DO_NOT_UPGRADE = [ - '@types/node-fetch', // No longer needed when node-fetch is upgraded to >= 3.0.0 - '@typescript-eslint/eslint-plugin', // special case - 'chalk', // Requires ESM - 'commander', // TODO: convert to yargs - 'find-up', // Requires ESM - 'log-symbols', // Requires ESM - 'node-fetch', // Requires ESM - 'ora', // Requires ESM - 'username', // Requires ESM -]; - -/** - * Spawn, but pass through stdio by default. - */ -async function spawnPassthrough(cmd, args, options) { - await spawn(cmd, args, { stdio: 'inherit', ...options }); -} - -async function git(...args) { - await spawnPassthrough('git', args); -} - -async function yarn(...args) { - await spawnPassthrough('yarn', args); -} - -const packageJSON = require(__dirname + '/../package.json'); - -class Package { - constructor(name, currentVersion, wantedVersion, latestVersion, type) { - this.name = name; - this.currentVersion = currentVersion; - this.wantedVersion = wantedVersion; - this.latestVersion = latestVersion; - this.type = type; - } - - get commitType() { - switch (this.type) { - case 'dependencies': - case 'optionalDependencies': - return 'deps'; - case 'devDependencies': - return 'deps-dev'; - default: - return 'deps-unknown'; - } - } - - get commitVersion() { - if (this.isMajorVersionBump()) { - return `^${this.latestVersion}`; - } else if (this.isMinorVersionBump()) { - return `~${this.latestVersion}`; - } else { - return this.latestVersion; - } - } - - get minorVersionLocked() { - return packageJSON[this.type][this.name].startsWith('~'); - } - - isMajorVersionBump() { - return !satisfies(this.latestVersion, `^${this.wantedVersion}`); - } - - isMinorVersionBump() { - return ( - this.minorVersionLocked && - !satisfies(this.latestVersion, `~${this.wantedVersion}`) - ); - } - - async smoketestAndCommit(packageName = null) { - const packageJSONs = await glob('packages/*/*/package.json'); - await yarn('lint'); - await yarn('build'); - await git('add', 'package.json', 'yarn.lock', ...packageJSONs); - await git( - 'commit', - '-m', - `build(${this.commitType}): upgrade ${packageName || this.name} to ${this.commitVersion}`, - ); - } - - async upgrade() { - if (this.isMajorVersionBump() || this.isMinorVersionBump()) { - await this.yarn_upgrade_and_update_packageJSON(); - } else { - await this.yarn_upgrade_in_yarn_lock(); - } - } - - async yarn_upgrade_and_update_packageJSON() { - console.log( - `Upgrading ${this.name} from ${this.wantedVersion} to ^${this.latestVersion} (and updating package.json)...`, - ); - await yarn('upgrade', `${this.name}@^${this.latestVersion}`); - } - - async yarn_upgrade_in_yarn_lock() { - console.log( - `Upgrading ${this.name} from ${this.currentVersion} to ${this.latestVersion} in yarn.lock...`, - ); - await yarn('upgrade', this.name); - } -} - -async function main() { - const onlyModules = []; - if (process.argv.length > 2) { - onlyModules.push(...process.argv.slice(2)); - } - try { - await spawn('yarn', ['outdated', '--json']); - console.log('No packages to update.'); - } catch (error) { - const table = JSON.parse(error.stdout.split('\n')[1]); - for (const [ - packageName, - currentVersion, - wantedVersion, - latestVersion, - packageType /*, _url */, - ] of table.data.body) { - if (DO_NOT_UPGRADE.includes(packageName)) { - console.log( - `Skipping "${packageName} from update as it is in the denylist`, - ); - continue; - } - if (onlyModules.length > 0 && !onlyModules.includes(packageName)) { - console.log( - `Skipping "${packageName}" from update as it was not specified on the command line`, - ); - continue; - } - let commitPackageName = null; - const nodePackage = new Package( - packageName, - currentVersion, - wantedVersion, - latestVersion, - packageType, - ); - await nodePackage.upgrade(); - - if (packageName === '@typescript-eslint/parser') { - const eslintPlugin = new Package( - '@typescript-eslint/eslint-plugin', - currentVersion, - wantedVersion, - latestVersion, - packageType, - ); - await eslintPlugin.upgrade(); - commitPackageName = '@typescript-eslint/{parser,eslint-plugin}'; - } - - await nodePackage.smoketestAndCommit(commitPackageName); - } - } - - if (onlyModules.length == 0) { - console.log(`Upgrading transitive dependencies in yarn.lock...`); - await yarn('upgrade'); - await git('add', 'yarn.lock'); - await git('commit', '-m', `build(deps): upgrade transitive dependencies`); - } -} - -main().catch((err) => { - console.error(err); - process.exit(1); -}); diff --git a/tools/utils.ts b/tools/utils.ts index 4bf0a0f28b..04f252bd94 100644 --- a/tools/utils.ts +++ b/tools/utils.ts @@ -1,8 +1,8 @@ -import * as path from 'node:path'; +import path from 'node:path'; -import * as fs from 'fs-extra'; +import fs from 'fs-extra'; -const BASE_DIR = path.resolve(__dirname, '..'); +const BASE_DIR = path.resolve(import.meta.dirname, '..'); const PACKAGES_DIR = path.resolve(BASE_DIR, 'packages'); export interface Package { diff --git a/tools/verdaccio/spawn-verdaccio.ts b/tools/verdaccio/spawn-verdaccio.ts index 07f59d2970..50b15842d1 100644 --- a/tools/verdaccio/spawn-verdaccio.ts +++ b/tools/verdaccio/spawn-verdaccio.ts @@ -22,17 +22,17 @@ import path from 'node:path'; import { spawn as spawnPromise } from '@malept/cross-spawn-promise'; import debug from 'debug'; -const FORGE_ROOT_DIR = path.resolve(__dirname, '../..'); +const FORGE_ROOT_DIR = path.resolve(import.meta.dirname, '../..'); /** * Path to the Verdaccio configuration file. * The below constants are derived from settings in the YAML. */ -const CONFIG_PATH = path.resolve(__dirname, 'config.yaml'); +const CONFIG_PATH = path.resolve(import.meta.dirname, 'config.yaml'); const LOCALHOST = '127.0.0.1'; const VERDACCIO_PORT = 4873; const VERDACCIO_URL = `http://${LOCALHOST}:${VERDACCIO_PORT}`; -const STORAGE_PATH = path.resolve(__dirname, 'storage'); +const STORAGE_PATH = path.resolve(import.meta.dirname, 'storage'); const d = debug('electron-forge:verdaccio'); @@ -133,6 +133,7 @@ async function publishPackages(): Promise { } async function runCommand(args: string[]) { + process.env.COREPACK_ENABLE_STRICT = '0'; console.log('🗑️ Pruning pnpm store before running command'); await spawnPromise('pnpm', ['store', 'prune']); diff --git a/tsconfig.base.json b/tsconfig.base.json index ea8cbb3cf1..b73feadff5 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1,14 +1,10 @@ { + "extends": "@tsconfig/node22/tsconfig.json", "compilerOptions": { - "module": "commonjs", - "target": "ES2021", "outDir": "dist", - "lib": ["dom", "ES2021"], "inlineSourceMap": true, "rootDir": "src", "experimentalDecorators": true, - "strict": true, - "esModuleInterop": true, "declaration": true, "composite": true, "declarationMap": true, diff --git a/tsconfig.test.json b/tsconfig.test.json index 1d5241e119..a7f1f979fb 100644 --- a/tsconfig.test.json +++ b/tsconfig.test.json @@ -1,14 +1,9 @@ { "//": "⚠️ NOTE: this file is only used for tests, individual packages have their own tsconfig.json files generated by `tools/gen-tsconfigs.ts`", + "extends": "@tsconfig/node22/tsconfig.json", "compilerOptions": { - "module": "commonjs", - "target": "ES2021", - "outDir": "dist", - "lib": ["dom", "ES2021"], "sourceMap": true, "experimentalDecorators": true, - "strict": true, - "esModuleInterop": true, "declaration": true, "declarationMap": true, "typeRoots": ["./typings", "./node_modules/@types"] diff --git a/typings/cross-spawn/index.d.ts b/typings/cross-spawn/index.d.ts index fdef0ed527..093a80c161 100644 --- a/typings/cross-spawn/index.d.ts +++ b/typings/cross-spawn/index.d.ts @@ -1 +1 @@ -declare module 'cross-spawn/lib/util/resolveCommand'; +declare module 'cross-spawn/lib/util/resolveCommand.js'; diff --git a/typings/electron-windows-store/index.d.ts b/typings/electron-windows-store/index.d.ts index f0502513ab..1df47b4dfe 100644 --- a/typings/electron-windows-store/index.d.ts +++ b/typings/electron-windows-store/index.d.ts @@ -3,7 +3,7 @@ declare module 'electron-windows-store' { export default run; } -declare module 'electron-windows-store/lib/sign' { +declare module 'electron-windows-store/lib/sign.js' { export const isValidPublisherName: (name: string) => boolean; export const makeCert: (opts: MakerCertOptions) => Promise; diff --git a/yarn.config.cjs b/yarn.config.cjs index 208cdee43b..1974ae130e 100644 --- a/yarn.config.cjs +++ b/yarn.config.cjs @@ -32,9 +32,6 @@ function enforceConsistentDependenciesAcrossTheProject({ Yarn }) { // so skip them for now if (OPTIONAL_DEPS.includes(dependency.ident)) continue; - // HACK: For now, we're using a different major version of Vite specifically for Vitest - if (dependency.ident === 'vite') continue; - for (const otherDependency of Yarn.dependencies({ ident: dependency.ident, })) { diff --git a/yarn.lock b/yarn.lock index 6e76aeceec..0a96db647f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -812,7 +812,7 @@ __metadata: "@electron-forge/core": "workspace:*" "@electron-forge/core-utils": "workspace:*" "@electron-forge/shared-types": "workspace:*" - "@electron/get": "npm:^3.0.0" + "@electron/get": "npm:^4.0.2" "@inquirer/prompts": "npm:^6.0.1" "@listr2/prompt-adapter-inquirer": "npm:^2.0.22" "@malept/cross-spawn-promise": "npm:^2.0.0" @@ -836,7 +836,7 @@ __metadata: resolution: "@electron-forge/core-utils@workspace:packages/utils/core-utils" dependencies: "@electron-forge/shared-types": "workspace:*" - "@electron/rebuild": "npm:^3.7.0" + "@electron/rebuild": "npm:^4.0.1" "@malept/cross-spawn-promise": "npm:^2.0.0" chalk: "npm:^4.0.0" debug: "npm:^4.3.1" @@ -868,37 +868,33 @@ __metadata: "@electron-forge/publisher-base": "workspace:*" "@electron-forge/shared-types": "workspace:*" "@electron-forge/template-base": "workspace:*" - "@electron-forge/template-fixture": "link:./spec/fixture/electron-forge-template-fixture" + "@electron-forge/template-fixture": "portal:./spec/fixture/electron-forge-template-fixture" "@electron-forge/template-vite": "workspace:*" "@electron-forge/template-vite-typescript": "workspace:*" "@electron-forge/template-webpack": "workspace:*" "@electron-forge/template-webpack-typescript": "workspace:*" "@electron-forge/test-utils": "workspace:*" "@electron-forge/tracer": "workspace:*" - "@electron/get": "npm:^3.0.0" - "@electron/packager": "npm:^18.3.5" - "@electron/rebuild": "npm:^3.7.0" + "@electron/get": "npm:^4.0.2" + "@electron/packager": "npm:^19.0.1" + "@electron/rebuild": "npm:^4.0.1" "@malept/cross-spawn-promise": "npm:^2.0.0" "@types/interpret": "npm:^1.1.1" "@types/progress": "npm:^2.0.5" - "@types/rechoir": "npm:^0.6.1" "@vscode/sudo-prompt": "npm:^9.3.1" chalk: "npm:^4.0.0" debug: "npm:^4.3.1" - electron-forge-template-fixture-two: "link:./spec/fixture/electron-forge-template-fixture" + electron-forge-template-fixture-two: "portal:./spec/fixture/electron-forge-template-fixture" electron-installer-common: "npm:^0.10.2" fast-glob: "npm:^3.2.7" filenamify: "npm:^4.1.0" find-up: "npm:^5.0.0" fs-extra: "npm:^10.0.0" - got: "npm:^11.8.5" - interpret: "npm:^3.1.1" + got: "npm:^14.0.0" jiti: "npm:^2.4.2" listr2: "npm:^7.0.2" - lodash: "npm:^4.17.20" + lodash-es: "npm:^4.17.21" log-symbols: "npm:^4.0.0" - node-fetch: "npm:^2.6.7" - rechoir: "npm:^0.8.0" semver: "npm:^7.2.1" source-map-support: "npm:^0.5.13" username: "npm:^5.1.0" @@ -1005,7 +1001,7 @@ __metadata: "@electron-forge/maker-base": "workspace:*" "@electron-forge/shared-types": "workspace:*" "@electron-forge/test-utils": "workspace:*" - "@electron/osx-sign": "npm:^1.0.5" + "@electron/osx-sign": "npm:^2.3.0" vitest: "npm:^4.0.14" languageName: unknown linkType: soft @@ -1079,7 +1075,7 @@ __metadata: "@electron-forge/test-utils": "workspace:*" cross-zip: "npm:^4.0.0" fs-extra: "npm:^10.0.0" - got: "npm:^11.8.5" + got: "npm:^14.0.0" vitest: "npm:^4.0.14" languageName: unknown linkType: soft @@ -1107,11 +1103,11 @@ __metadata: dependencies: "@electron-forge/plugin-base": "workspace:*" "@electron-forge/shared-types": "workspace:*" - "@electron/fuses": "npm:^1.0.0" + "@electron/fuses": "npm:^2.0.0" "@malept/cross-spawn-promise": "npm:^2.0.0" xvfb-maybe: "npm:^0.2.1" peerDependencies: - "@electron/fuses": ^1.0.0 + "@electron/fuses": ^2.0.0 languageName: unknown linkType: soft @@ -1132,14 +1128,14 @@ __metadata: dependencies: "@electron-forge/plugin-base": "workspace:*" "@electron-forge/shared-types": "workspace:*" - "@electron/packager": "npm:^18.3.5" + "@electron/packager": "npm:^19.0.1" "@malept/cross-spawn-promise": "npm:^2.0.0" - "@types/node": "npm:^18.0.3" + "@types/node": "npm:^22.10.7" chalk: "npm:^4.0.0" debug: "npm:^4.3.1" fs-extra: "npm:^10.0.0" listr2: "npm:^7.0.2" - vite: "npm:^5.0.12" + vite: "npm:^7.2.4" vitest: "npm:^4.0.14" which: "npm:^2.0.2" xvfb-maybe: "npm:^0.2.1" @@ -1154,9 +1150,9 @@ __metadata: "@electron-forge/plugin-base": "workspace:*" "@electron-forge/shared-types": "workspace:*" "@electron-forge/web-multi-logger": "workspace:*" - "@electron/packager": "npm:^18.3.5" + "@electron/packager": "npm:^19.0.1" "@malept/cross-spawn-promise": "npm:^2.0.0" - "@types/node": "npm:^18.0.3" + "@types/node": "npm:^22.10.7" chalk: "npm:^4.0.0" debug: "npm:^4.3.1" fast-glob: "npm:^3.2.7" @@ -1188,7 +1184,6 @@ __metadata: "@electron-forge/publisher-base": "workspace:*" form-data: "npm:^4.0.0" fs-extra: "npm:^10.0.0" - node-fetch: "npm:^2.6.7" languageName: unknown linkType: soft @@ -1202,7 +1197,6 @@ __metadata: form-data: "npm:^4.0.0" fs-extra: "npm:^10.0.0" msw: "npm:^2.7.0" - node-fetch: "npm:^2.6.7" vitest: "npm:^4.0.14" languageName: unknown linkType: soft @@ -1246,7 +1240,6 @@ __metadata: "@electron-forge/shared-types": "workspace:*" debug: "npm:^4.3.1" form-data: "npm:^4.0.0" - node-fetch: "npm:^2.6.7" languageName: unknown linkType: soft @@ -1292,8 +1285,8 @@ __metadata: resolution: "@electron-forge/shared-types@workspace:packages/utils/types" dependencies: "@electron-forge/tracer": "workspace:*" - "@electron/packager": "npm:^18.3.5" - "@electron/rebuild": "npm:^3.7.0" + "@electron/packager": "npm:^19.0.1" + "@electron/rebuild": "npm:^4.0.1" listr2: "npm:^7.0.2" languageName: unknown linkType: soft @@ -1314,9 +1307,9 @@ __metadata: languageName: unknown linkType: soft -"@electron-forge/template-fixture@link:./spec/fixture/electron-forge-template-fixture::locator=%40electron-forge%2Fcore%40workspace%3Apackages%2Fapi%2Fcore": +"@electron-forge/template-fixture@portal:./spec/fixture/electron-forge-template-fixture::locator=%40electron-forge%2Fcore%40workspace%3Apackages%2Fapi%2Fcore": version: 0.0.0-use.local - resolution: "@electron-forge/template-fixture@link:./spec/fixture/electron-forge-template-fixture::locator=%40electron-forge%2Fcore%40workspace%3Apackages%2Fapi%2Fcore" + resolution: "@electron-forge/template-fixture@portal:./spec/fixture/electron-forge-template-fixture::locator=%40electron-forge%2Fcore%40workspace%3Apackages%2Fapi%2Fcore" languageName: node linkType: soft @@ -1364,7 +1357,7 @@ __metadata: fork-ts-checker-webpack-plugin: "npm:^7.2.13" fs-extra: "npm:^10.0.0" listr2: "npm:^7.0.2" - typescript: "npm:~5.4.5" + typescript: "npm:5.9.3" vitest: "npm:^4.0.14" webpack: "npm:^5.69.1" languageName: unknown @@ -1412,7 +1405,7 @@ __metadata: languageName: unknown linkType: soft -"@electron/asar@npm:^3.2.1, @electron/asar@npm:^3.2.13, @electron/asar@npm:^3.3.1": +"@electron/asar@npm:^3.2.1": version: 3.4.1 resolution: "@electron/asar@npm:3.4.1" dependencies: @@ -1425,16 +1418,25 @@ __metadata: languageName: node linkType: hard -"@electron/fuses@npm:^1.0.0": - version: 1.8.0 - resolution: "@electron/fuses@npm:1.8.0" +"@electron/asar@npm:^4.0.0, @electron/asar@npm:^4.0.1": + version: 4.0.1 + resolution: "@electron/asar@npm:4.0.1" dependencies: - chalk: "npm:^4.1.1" - fs-extra: "npm:^9.0.1" - minimist: "npm:^1.2.5" + commander: "npm:^13.1.0" + glob: "npm:^11.0.1" + minimatch: "npm:^10.0.1" + bin: + asar: bin/asar.mjs + checksum: 10c0/4071dfce3d3d53e17baac023b1c38dfc83b5975b68b708943692bd1525a08b02c6717c334fefaeb3aaa860c5495842047a06a044351b652455653f762d13f850 + languageName: node + linkType: hard + +"@electron/fuses@npm:^2.0.0": + version: 2.0.0 + resolution: "@electron/fuses@npm:2.0.0" bin: electron-fuses: dist/bin.js - checksum: 10c0/7a2eff2a700a0dc9997346a2cbef83a852ec4a743b047ef89ce8dddfb182377c3a71e340c0cd3dc729d843cccb524253f9a9b96f37271d431f4409f3d897a200 + checksum: 10c0/f735e589d9f785ea59bf156b8b8c579d61e145958fe67f6c555b6e1b65581fefd150a53ef355079922be7d2a19fb5f4fa4262bce067badb00a3d3f7a66aa4410 languageName: node linkType: hard @@ -1457,22 +1459,22 @@ __metadata: languageName: node linkType: hard -"@electron/get@npm:^3.0.0": - version: 3.0.0 - resolution: "@electron/get@npm:3.0.0" +"@electron/get@npm:^4.0.2": + version: 4.0.2 + resolution: "@electron/get@npm:4.0.2" dependencies: debug: "npm:^4.1.1" - env-paths: "npm:^2.2.0" - fs-extra: "npm:^8.1.0" + env-paths: "npm:^3.0.0" global-agent: "npm:^3.0.0" - got: "npm:^11.8.5" + got: "npm:^14.4.5" + graceful-fs: "npm:^4.2.11" progress: "npm:^2.0.3" - semver: "npm:^6.2.0" + semver: "npm:^7.6.3" sumchecker: "npm:^3.0.1" dependenciesMeta: global-agent: optional: true - checksum: 10c0/ee8dbdb395d5876a60c8c4f91c01956aede0553d502b7f6a122cd1fd99157574b5592b03eefcf54741623b1414565a63c97a1712a45c7f1d0ebcbce6d7ec08b0 + checksum: 10c0/21c6fd66f552a66c5ac2b8e06c684be2a1cfc2124c9e60f2708dfbdf32d719013946b5492d755d9830c833b421b61ba9d56a800abc3bae2fbd3fabfd80b33d14 languageName: node linkType: hard @@ -1507,97 +1509,74 @@ __metadata: languageName: node linkType: hard -"@electron/node-gyp@git+https://github.com/electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2": - version: 10.2.0-electron.1 - resolution: "@electron/node-gyp@https://github.com/electron/node-gyp.git#commit=06b29aafb7708acef8b3669835c8a7857ebc92d2" - dependencies: - env-paths: "npm:^2.2.0" - exponential-backoff: "npm:^3.1.1" - glob: "npm:^8.1.0" - graceful-fs: "npm:^4.2.6" - make-fetch-happen: "npm:^10.2.1" - nopt: "npm:^6.0.0" - proc-log: "npm:^2.0.1" - semver: "npm:^7.3.5" - tar: "npm:^6.2.1" - which: "npm:^2.0.2" - bin: - node-gyp: ./bin/node-gyp.js - checksum: 10c0/e8c97bb5347bf0871312860010b70379069359bf05a6beb9e4d898d0831f9f8447f35b887a86d5241989e804813cf72054327928da38714a6102f791e802c8d9 - languageName: node - linkType: hard - -"@electron/notarize@npm:^2.1.0": - version: 2.2.0 - resolution: "@electron/notarize@npm:2.2.0" +"@electron/notarize@npm:^3.1.0": + version: 3.1.1 + resolution: "@electron/notarize@npm:3.1.1" dependencies: - debug: "npm:^4.1.1" - fs-extra: "npm:^9.0.1" + debug: "npm:^4.4.0" promise-retry: "npm:^2.0.1" - checksum: 10c0/20d0207227a73d938539e3137bb89d07b16f16a139e60f497ed5172fa6545bb8a84998dc77140262fcbcc5f0d3c45059fd72c8a454825dbae377fcd671c6704d + checksum: 10c0/1e9adc0cafc1c2e79c39a41c97de912d6a899d661de506301310e17c569dc2885c9729c21840ceb70871f2e648ab983d3731149c6dc4ea354a001ad463c83e7e languageName: node linkType: hard -"@electron/osx-sign@npm:^1.0.5": - version: 1.3.1 - resolution: "@electron/osx-sign@npm:1.3.1" +"@electron/osx-sign@npm:^2.2.0, @electron/osx-sign@npm:^2.3.0": + version: 2.3.0 + resolution: "@electron/osx-sign@npm:2.3.0" dependencies: - compare-version: "npm:^0.1.2" debug: "npm:^4.3.4" - fs-extra: "npm:^10.0.0" isbinaryfile: "npm:^4.0.8" - minimist: "npm:^1.2.6" plist: "npm:^3.0.5" + semver: "npm:^7.7.1" bin: - electron-osx-flat: bin/electron-osx-flat.js - electron-osx-sign: bin/electron-osx-sign.js - checksum: 10c0/207be0df4ad4d76b0041de97d12b8d8793f3a5ddaff28e73c34a9b1939c83b3224191c7aae3c95d62eeb4a9146204c1db24577f43f91f6fab26783784856e49b + electron-osx-flat: bin/electron-osx-flat.mjs + electron-osx-sign: bin/electron-osx-sign.mjs + checksum: 10c0/33484b29be2b45493caf9efb779b232bbca243c5e090aa0331421e0348c1902a008ea67998077f3711a4ad6d0bf9c899246e4051ea1950e98fabda157306e5f5 languageName: node linkType: hard -"@electron/packager@npm:^18.3.5": - version: 18.3.5 - resolution: "@electron/packager@npm:18.3.5" - dependencies: - "@electron/asar": "npm:^3.2.13" - "@electron/get": "npm:^3.0.0" - "@electron/notarize": "npm:^2.1.0" - "@electron/osx-sign": "npm:^1.0.5" - "@electron/universal": "npm:^2.0.1" - "@electron/windows-sign": "npm:^1.0.0" - debug: "npm:^4.0.1" - extract-zip: "npm:^2.0.0" - filenamify: "npm:^4.1.0" - fs-extra: "npm:^11.1.0" - galactus: "npm:^1.0.0" +"@electron/packager@npm:^19.0.1": + version: 19.0.1 + resolution: "@electron/packager@npm:19.0.1" + dependencies: + "@electron/asar": "npm:^4.0.1" + "@electron/get": "npm:^4.0.2" + "@electron/notarize": "npm:^3.1.0" + "@electron/osx-sign": "npm:^2.2.0" + "@electron/universal": "npm:^3.0.1" + "@electron/windows-sign": "npm:^2.0.2" + "@malept/cross-spawn-promise": "npm:^2.0.0" + debug: "npm:^4.4.1" + extract-zip: "npm:^2.0.1" + filenamify: "npm:^6.0.0" + galactus: "npm:^2.0.2" get-package-info: "npm:^1.0.0" - junk: "npm:^3.1.0" + graceful-fs: "npm:^4.2.11" + junk: "npm:^4.0.1" parse-author: "npm:^2.0.0" - plist: "npm:^3.0.0" - resedit: "npm:^2.0.0" - resolve: "npm:^1.1.6" - semver: "npm:^7.1.3" - yargs-parser: "npm:^21.1.1" + plist: "npm:^3.1.0" + resedit: "npm:^2.0.3" + resolve: "npm:^1.22.10" + semver: "npm:^7.7.2" + yargs-parser: "npm:^22.0.0" bin: - electron-packager: bin/electron-packager.js - checksum: 10c0/62f98c85d6e139072018ca3b5e21436aec19763c92cbda4cb592dd87787363b6af3d10b771a05396ba50f0823650064e6b39560e586bd9d5f75c67b005a28081 + electron-packager: bin/electron-packager.mjs + checksum: 10c0/f7e44a3124640eff674b7cf6d53b15e00df0ec4fe00365ffde4453c43e789d786869d8e395c6fbbd62410cb7f5ce9913e3644272c1eed4325548ac00d3e2d77b languageName: node linkType: hard -"@electron/rebuild@npm:^3.7.0": - version: 3.7.0 - resolution: "@electron/rebuild@npm:3.7.0" +"@electron/rebuild@npm:^4.0.1": + version: 4.0.1 + resolution: "@electron/rebuild@npm:4.0.1" dependencies: - "@electron/node-gyp": "git+https://github.com/electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2" "@malept/cross-spawn-promise": "npm:^2.0.0" chalk: "npm:^4.0.0" debug: "npm:^4.1.1" detect-libc: "npm:^2.0.1" - fs-extra: "npm:^10.0.0" got: "npm:^11.7.0" - node-abi: "npm:^3.45.0" - node-api-version: "npm:^0.2.0" - node-gyp: "npm:latest" + graceful-fs: "npm:^4.2.11" + node-abi: "npm:^4.2.0" + node-api-version: "npm:^0.2.1" + node-gyp: "npm:^11.2.0" ora: "npm:^5.1.0" read-binary-file-arch: "npm:^1.0.6" semver: "npm:^7.3.5" @@ -1605,35 +1584,21 @@ __metadata: yargs: "npm:^17.0.1" bin: electron-rebuild: lib/cli.js - checksum: 10c0/10a4e5867254cd484cf6d8fa93c73f2abddc3eb7c9845784abd0c09380d41d538b1bcd41d145e0906459621a8602f86ae1540b2da110923b76c32a4aaf15a883 + checksum: 10c0/4863d39c34515f3fb521ce5e976e25db20e89920574ca353efd0c3272d5f4d14546ba15ce28cee4299187160b2af02e3e130100ba8dc53f313b6eb685dc54928 languageName: node linkType: hard -"@electron/universal@npm:^2.0.1": - version: 2.0.3 - resolution: "@electron/universal@npm:2.0.3" +"@electron/universal@npm:^3.0.1": + version: 3.0.2 + resolution: "@electron/universal@npm:3.0.2" dependencies: - "@electron/asar": "npm:^3.3.1" + "@electron/asar": "npm:^4.0.0" "@malept/cross-spawn-promise": "npm:^2.0.0" debug: "npm:^4.3.1" dir-compare: "npm:^4.2.0" - fs-extra: "npm:^11.1.1" minimatch: "npm:^9.0.3" plist: "npm:^3.1.0" - checksum: 10c0/346b23298d4f175dc50d9b91277d8e4c30017215e1a78c985ce917cd793fc0600084d62a84f485229d781ddfeb5829b6c1125c0bda131ddb9146522d305e92aa - languageName: node - linkType: hard - -"@electron/windows-sign@npm:^1.0.0": - version: 1.0.0 - resolution: "@electron/windows-sign@npm:1.0.0" - dependencies: - debug: "npm:^4.3.4" - fs-extra: "npm:^11.1.1" - minimist: "npm:^1.2.8" - bin: - electron-windows-sign: bin/electron-windows-sign.js - checksum: 10c0/fb5d203adfb501f3c5eb6cde4861185f6a915823ba2502485944773d05a022c5595b3ceb9ccec66df3bf05418c4aee2648f2c6a703f8dfeb3313341634b17f5c + checksum: 10c0/1a5780e08df9d46eb12c4ca33864a11296a74816de1c1c31b5c6d6f9f2c29ca0be253bf5abb6c8571849a4330f9be7676392a4a4e23c74e6ca48b6fdd9e4c494 languageName: node linkType: hard @@ -1667,6 +1632,19 @@ __metadata: languageName: node linkType: hard +"@electron/windows-sign@npm:^2.0.2": + version: 2.0.2 + resolution: "@electron/windows-sign@npm:2.0.2" + dependencies: + debug: "npm:^4.3.4" + graceful-fs: "npm:^4.2.11" + postject: "npm:^1.0.0-alpha.6" + bin: + electron-windows-sign: bin/electron-windows-sign.mjs + checksum: 10c0/3e027a664b5cbae3aa01b3eb4d8b58fa2d8e5ea1ed9b7f81a27307f3c1bb27b3a7b606580ac098cd5c58312bcd56d2570db975851d9ef5de2d2ba80a76561088 + languageName: node + linkType: hard + "@emnapi/core@npm:^1.1.0": version: 1.5.0 resolution: "@emnapi/core@npm:1.5.0" @@ -1677,6 +1655,16 @@ __metadata: languageName: node linkType: hard +"@emnapi/core@npm:^1.4.3": + version: 1.8.1 + resolution: "@emnapi/core@npm:1.8.1" + dependencies: + "@emnapi/wasi-threads": "npm:1.1.0" + tslib: "npm:^2.4.0" + checksum: 10c0/2c242f4b49779bac403e1cbcc98edacdb1c8ad36562408ba9a20663824669e930bc8493be46a2522d9dc946b8d96cd7073970bae914928c7671b5221c85b432e + languageName: node + linkType: hard + "@emnapi/runtime@npm:^1.1.0": version: 1.5.0 resolution: "@emnapi/runtime@npm:1.5.0" @@ -1686,6 +1674,15 @@ __metadata: languageName: node linkType: hard +"@emnapi/runtime@npm:^1.4.3": + version: 1.8.1 + resolution: "@emnapi/runtime@npm:1.8.1" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/f4929d75e37aafb24da77d2f58816761fe3f826aad2e37fa6d4421dac9060cbd5098eea1ac3c9ecc4526b89deb58153852fa432f87021dc57863f2ff726d713f + languageName: node + linkType: hard + "@emnapi/wasi-threads@npm:1.1.0": version: 1.1.0 resolution: "@emnapi/wasi-threads@npm:1.1.0" @@ -1695,13 +1692,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/aix-ppc64@npm:0.21.5" - conditions: os=aix & cpu=ppc64 - languageName: node - linkType: hard - "@esbuild/aix-ppc64@npm:0.25.10": version: 0.25.10 resolution: "@esbuild/aix-ppc64@npm:0.25.10" @@ -1716,13 +1706,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/android-arm64@npm:0.21.5" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/android-arm64@npm:0.25.10": version: 0.25.10 resolution: "@esbuild/android-arm64@npm:0.25.10" @@ -1737,13 +1720,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/android-arm@npm:0.21.5" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - "@esbuild/android-arm@npm:0.25.10": version: 0.25.10 resolution: "@esbuild/android-arm@npm:0.25.10" @@ -1758,13 +1734,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/android-x64@npm:0.21.5" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - "@esbuild/android-x64@npm:0.25.10": version: 0.25.10 resolution: "@esbuild/android-x64@npm:0.25.10" @@ -1779,13 +1748,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/darwin-arm64@npm:0.21.5" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/darwin-arm64@npm:0.25.10": version: 0.25.10 resolution: "@esbuild/darwin-arm64@npm:0.25.10" @@ -1800,13 +1762,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/darwin-x64@npm:0.21.5" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "@esbuild/darwin-x64@npm:0.25.10": version: 0.25.10 resolution: "@esbuild/darwin-x64@npm:0.25.10" @@ -1821,13 +1776,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/freebsd-arm64@npm:0.21.5" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/freebsd-arm64@npm:0.25.10": version: 0.25.10 resolution: "@esbuild/freebsd-arm64@npm:0.25.10" @@ -1842,13 +1790,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/freebsd-x64@npm:0.21.5" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/freebsd-x64@npm:0.25.10": version: 0.25.10 resolution: "@esbuild/freebsd-x64@npm:0.25.10" @@ -1863,13 +1804,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-arm64@npm:0.21.5" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/linux-arm64@npm:0.25.10": version: 0.25.10 resolution: "@esbuild/linux-arm64@npm:0.25.10" @@ -1884,13 +1818,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-arm@npm:0.21.5" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - "@esbuild/linux-arm@npm:0.25.10": version: 0.25.10 resolution: "@esbuild/linux-arm@npm:0.25.10" @@ -1905,13 +1832,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-ia32@npm:0.21.5" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - "@esbuild/linux-ia32@npm:0.25.10": version: 0.25.10 resolution: "@esbuild/linux-ia32@npm:0.25.10" @@ -1926,13 +1846,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-loong64@npm:0.21.5" - conditions: os=linux & cpu=loong64 - languageName: node - linkType: hard - "@esbuild/linux-loong64@npm:0.25.10": version: 0.25.10 resolution: "@esbuild/linux-loong64@npm:0.25.10" @@ -1947,13 +1860,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-mips64el@npm:0.21.5" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - "@esbuild/linux-mips64el@npm:0.25.10": version: 0.25.10 resolution: "@esbuild/linux-mips64el@npm:0.25.10" @@ -1968,13 +1874,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-ppc64@npm:0.21.5" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - "@esbuild/linux-ppc64@npm:0.25.10": version: 0.25.10 resolution: "@esbuild/linux-ppc64@npm:0.25.10" @@ -1989,13 +1888,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-riscv64@npm:0.21.5" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - "@esbuild/linux-riscv64@npm:0.25.10": version: 0.25.10 resolution: "@esbuild/linux-riscv64@npm:0.25.10" @@ -2010,13 +1902,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-s390x@npm:0.21.5" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - "@esbuild/linux-s390x@npm:0.25.10": version: 0.25.10 resolution: "@esbuild/linux-s390x@npm:0.25.10" @@ -2031,13 +1916,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-x64@npm:0.21.5" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - "@esbuild/linux-x64@npm:0.25.10": version: 0.25.10 resolution: "@esbuild/linux-x64@npm:0.25.10" @@ -2066,13 +1944,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/netbsd-x64@npm:0.21.5" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/netbsd-x64@npm:0.25.10": version: 0.25.10 resolution: "@esbuild/netbsd-x64@npm:0.25.10" @@ -2101,13 +1972,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/openbsd-x64@npm:0.21.5" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/openbsd-x64@npm:0.25.10": version: 0.25.10 resolution: "@esbuild/openbsd-x64@npm:0.25.10" @@ -2136,13 +2000,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/sunos-x64@npm:0.21.5" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - "@esbuild/sunos-x64@npm:0.25.10": version: 0.25.10 resolution: "@esbuild/sunos-x64@npm:0.25.10" @@ -2157,13 +2014,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/win32-arm64@npm:0.21.5" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/win32-arm64@npm:0.25.10": version: 0.25.10 resolution: "@esbuild/win32-arm64@npm:0.25.10" @@ -2178,13 +2028,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/win32-ia32@npm:0.21.5" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - "@esbuild/win32-ia32@npm:0.25.10": version: 0.25.10 resolution: "@esbuild/win32-ia32@npm:0.25.10" @@ -2199,13 +2042,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/win32-x64@npm:0.21.5" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@esbuild/win32-x64@npm:0.25.10": version: 0.25.10 resolution: "@esbuild/win32-x64@npm:0.25.10" @@ -2304,13 +2140,6 @@ __metadata: languageName: node linkType: hard -"@gar/promisify@npm:^1.1.3": - version: 1.1.3 - resolution: "@gar/promisify@npm:1.1.3" - checksum: 10c0/0b3c9958d3cd17f4add3574975e3115ae05dc7f1298a60810414b16f6f558c137b5fb3cd3905df380bacfd955ec13f67c1e6710cbb5c246a7e8d65a8289b2bff - languageName: node - linkType: hard - "@google-cloud/paginator@npm:^5.0.0": version: 5.0.0 resolution: "@google-cloud/paginator@npm:5.0.0" @@ -3032,6 +2861,13 @@ __metadata: languageName: node linkType: hard +"@keyv/serialize@npm:^1.1.1": + version: 1.1.1 + resolution: "@keyv/serialize@npm:1.1.1" + checksum: 10c0/b0008cae4a54400c3abf587b8cc2474c6f528ee58969ce6cf9cb07a04006f80c73c85971d6be6544408318a2bc40108236a19a82aea0a6de95aae49533317374 + languageName: node + linkType: hard + "@leichtgewicht/ip-codec@npm:^2.0.1": version: 2.0.4 resolution: "@leichtgewicht/ip-codec@npm:2.0.4" @@ -3215,6 +3051,17 @@ __metadata: languageName: node linkType: hard +"@napi-rs/wasm-runtime@npm:^0.2.11": + version: 0.2.12 + resolution: "@napi-rs/wasm-runtime@npm:0.2.12" + dependencies: + "@emnapi/core": "npm:^1.4.3" + "@emnapi/runtime": "npm:^1.4.3" + "@tybys/wasm-util": "npm:^0.10.0" + checksum: 10c0/6d07922c0613aab30c6a497f4df297ca7c54e5b480e00035e0209b872d5c6aab7162fc49477267556109c2c7ed1eb9c65a174e27e9b87568106a87b0a6e3ca7d + languageName: node + linkType: hard + "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -3312,16 +3159,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/fs@npm:^2.1.0": - version: 2.1.2 - resolution: "@npmcli/fs@npm:2.1.2" - dependencies: - "@gar/promisify": "npm:^1.1.3" - semver: "npm:^7.3.5" - checksum: 10c0/c50d087733d0d8df23be24f700f104b19922a28677aa66fdbe06ff6af6431cc4a5bb1e27683cbc661a5dafa9bafdc603e6a0378121506dfcd394b2b6dd76a187 - languageName: node - linkType: hard - "@npmcli/fs@npm:^4.0.0": version: 4.0.0 resolution: "@npmcli/fs@npm:4.0.0" @@ -3400,16 +3237,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/move-file@npm:^2.0.0": - version: 2.0.1 - resolution: "@npmcli/move-file@npm:2.0.1" - dependencies: - mkdirp: "npm:^1.0.4" - rimraf: "npm:^3.0.2" - checksum: 10c0/11b2151e6d1de6f6eb23128de5aa8a429fd9097d839a5190cb77aa47a6b627022c42d50fa7c47a00f1c9f8f0c1560092b09b061855d293fa0741a2a94cfb174d - languageName: node - linkType: hard - "@npmcli/name-from-folder@npm:^3.0.0": version: 3.0.0 resolution: "@npmcli/name-from-folder@npm:3.0.0" @@ -3986,6 +3813,13 @@ __metadata: languageName: node linkType: hard +"@sec-ant/readable-stream@npm:^0.4.1": + version: 0.4.1 + resolution: "@sec-ant/readable-stream@npm:0.4.1" + checksum: 10c0/64e9e9cf161e848067a5bf60cdc04d18495dc28bb63a8d9f8993e4dd99b91ad34e4b563c85de17d91ffb177ec17a0664991d2e115f6543e73236a906068987af + languageName: node + linkType: hard + "@sigstore/bundle@npm:^3.1.0": version: 3.1.0 resolution: "@sigstore/bundle@npm:3.1.0" @@ -4116,6 +3950,13 @@ __metadata: languageName: node linkType: hard +"@sindresorhus/is@npm:^7.0.1": + version: 7.1.1 + resolution: "@sindresorhus/is@npm:7.1.1" + checksum: 10c0/96f021b8c5680e0687ceba5619c2e56fe6b089b190b3149280a1e418e6315c66839e3f1519cf1c89f7a888b5a0017a0ef1db17436d783ee398b7d5a515caa3ef + languageName: node + linkType: hard + "@sindresorhus/merge-streams@npm:^4.0.0": version: 4.0.0 resolution: "@sindresorhus/merge-streams@npm:4.0.0" @@ -4742,6 +4583,13 @@ __metadata: languageName: node linkType: hard +"@tsconfig/node22@npm:^22.0.5": + version: 22.0.5 + resolution: "@tsconfig/node22@npm:22.0.5" + checksum: 10c0/c64b1d51e1556da9212463799f5096289d2cc8561eaed10cd0a0a36c25790b4c6bed30c0f846afccf8da75b5750326fa281216a908c2b67ead7b55adaf3eda22 + languageName: node + linkType: hard + "@tufjs/canonical-json@npm:2.0.0": version: 2.0.0 resolution: "@tufjs/canonical-json@npm:2.0.0" @@ -4769,6 +4617,15 @@ __metadata: languageName: node linkType: hard +"@tybys/wasm-util@npm:^0.10.0": + version: 0.10.1 + resolution: "@tybys/wasm-util@npm:0.10.1" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/b255094f293794c6d2289300c5fbcafbb5532a3aed3a5ffd2f8dc1828e639b88d75f6a376dd8f94347a44813fd7a7149d8463477a9a49525c8b2dcaa38c2d1e8 + languageName: node + linkType: hard + "@tybys/wasm-util@npm:^0.9.0": version: 0.9.0 resolution: "@tybys/wasm-util@npm:0.9.0" @@ -4861,12 +4718,19 @@ __metadata: languageName: node linkType: hard -"@types/cross-spawn@npm:^6.0.1": - version: 6.0.2 - resolution: "@types/cross-spawn@npm:6.0.2" +"@types/cross-spawn@npm:^6.0.6": + version: 6.0.6 + resolution: "@types/cross-spawn@npm:6.0.6" dependencies: "@types/node": "npm:*" - checksum: 10c0/658bd49267a7200e87e67c48ef1e58ee7418bbd4417fb191393b7051d47f590023090cad7b69eb3821d1907b82392b764e1114b1ec6000b01e98126926c8b06f + checksum: 10c0/e3d476bb6b3a54a8934a97fe6ee4bd13e2e5eb29073929a4be76a52466602ffaea420b20774ffe8503f9fa24f3ae34817e95e7f625689fb0d1c10404f5b2889c + languageName: node + linkType: hard + +"@types/cross-zip@npm:^4.0.2": + version: 4.0.2 + resolution: "@types/cross-zip@npm:4.0.2" + checksum: 10c0/8ffc935e6b4164d2c706c0182fd17787fb985933c671d9cced5c3edb28738c3df09c0f2487cc38fa1f1372045558b8f9814b58ab0cee6ecd16eaeb6c8810513e languageName: node linkType: hard @@ -4997,6 +4861,13 @@ __metadata: languageName: node linkType: hard +"@types/http-cache-semantics@npm:^4.0.4": + version: 4.0.4 + resolution: "@types/http-cache-semantics@npm:4.0.4" + checksum: 10c0/51b72568b4b2863e0fe8d6ce8aad72a784b7510d72dc866215642da51d84945a9459fa89f49ec48f1e9a1752e6a78e85a4cda0ded06b1c73e727610c925f9ce6 + languageName: node + linkType: hard + "@types/http-proxy@npm:^1.17.8": version: 1.17.9 resolution: "@types/http-proxy@npm:1.17.9" @@ -5006,7 +4877,7 @@ __metadata: languageName: node linkType: hard -"@types/interpret@npm:*, @types/interpret@npm:^1.1.1": +"@types/interpret@npm:^1.1.1": version: 1.1.1 resolution: "@types/interpret@npm:1.1.1" dependencies: @@ -5071,10 +4942,19 @@ __metadata: languageName: node linkType: hard -"@types/lodash@npm:^4.14.166": - version: 4.14.178 - resolution: "@types/lodash@npm:4.14.178" - checksum: 10c0/820e33578a084aba2ca66fc83728c14d82813b91f3f14f281621b36904533c3d1681992b5e2719579b8beb52e1a77cfa914283a145f66dfa71b5e02a7cec5a37 +"@types/lodash-es@npm:^4.17.12": + version: 4.17.12 + resolution: "@types/lodash-es@npm:4.17.12" + dependencies: + "@types/lodash": "npm:*" + checksum: 10c0/5d12d2cede07f07ab067541371ed1b838a33edb3c35cb81b73284e93c6fd0c4bbeaefee984e69294bffb53f62d7272c5d679fdba8e595ff71e11d00f2601dde0 + languageName: node + linkType: hard + +"@types/lodash@npm:*": + version: 4.17.21 + resolution: "@types/lodash@npm:4.17.21" + checksum: 10c0/73cb006e047d8871e9d63f3a165543bf16c44a5b6fe3f9f6299e37cb8d67a7b1d55ac730959a81f9def510fd07232ff7e30e05413e5d5a12793baad84ebe36c3 languageName: node linkType: hard @@ -5138,16 +5018,6 @@ __metadata: languageName: node linkType: hard -"@types/node-fetch@npm:^2.5.5": - version: 2.5.12 - resolution: "@types/node-fetch@npm:2.5.12" - dependencies: - "@types/node": "npm:*" - form-data: "npm:^3.0.0" - checksum: 10c0/aaa69c354e596f9e293136ac43c9e5d91503415fb4eddfae3a9689153f0f033863bbd627e700b3f419ce14d06303e18e1d61b788d9085411f1fc12fc56afe356 - languageName: node - linkType: hard - "@types/node@npm:*": version: 22.10.2 resolution: "@types/node@npm:22.10.2" @@ -5157,12 +5027,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^18.0.3": - version: 18.19.68 - resolution: "@types/node@npm:18.19.68" +"@types/node@npm:^22.10.7": + version: 22.19.2 + resolution: "@types/node@npm:22.19.2" dependencies: - undici-types: "npm:~5.26.4" - checksum: 10c0/8c7f01be218c6e3c1e643173662af27e9a2b568f36c0fe83e4295cf7674fe2a0abb4a1c5d7c7abd3345b9114581387dfd3f14b6d0338daebdce9273cd7ba59ab + undici-types: "npm:~6.21.0" + checksum: 10c0/fd56fc727bdc2cd9582e05db5daab6c8eb7bc5e5640a54cbc64ccc160a61cf50940742be5536f83796bffc83ce7709d5580a9ca85806f57501958821d230ab78 languageName: node linkType: hard @@ -5221,15 +5091,6 @@ __metadata: languageName: node linkType: hard -"@types/rechoir@npm:^0.6.1": - version: 0.6.1 - resolution: "@types/rechoir@npm:0.6.1" - dependencies: - "@types/interpret": "npm:*" - checksum: 10c0/df324ef37c93a139189e2f7d0edc1b0430e81775da6b211c6cfdb247621fabfb2e979f909bb085f3aef445b675b263af3ea5ec919656b4555b3e51d53a02beb4 - languageName: node - linkType: hard - "@types/request@npm:^2.48.8": version: 2.48.11 resolution: "@types/request@npm:2.48.11" @@ -5488,10 +5349,145 @@ __metadata: languageName: node linkType: hard -"@ungap/structured-clone@npm:^1.2.0": - version: 1.2.1 - resolution: "@ungap/structured-clone@npm:1.2.1" - checksum: 10c0/127afbcc75ff1532f7b1eb85ee992f9faa70e8d5bb2558da05355d423b966fc279d0a485bf19da2883280e7c299ae4170809a72e78eab086da71c6bcdda5d1e2 +"@ungap/structured-clone@npm:^1.2.0": + version: 1.2.1 + resolution: "@ungap/structured-clone@npm:1.2.1" + checksum: 10c0/127afbcc75ff1532f7b1eb85ee992f9faa70e8d5bb2558da05355d423b966fc279d0a485bf19da2883280e7c299ae4170809a72e78eab086da71c6bcdda5d1e2 + languageName: node + linkType: hard + +"@unrs/resolver-binding-android-arm-eabi@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-android-arm-eabi@npm:1.11.1" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-android-arm64@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-android-arm64@npm:1.11.1" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-darwin-arm64@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.11.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-darwin-x64@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-darwin-x64@npm:1.11.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-freebsd-x64@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.11.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.11.1" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.11.1" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm64-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.11.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm64-musl@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.11.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.11.1" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-riscv64-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-riscv64-gnu@npm:1.11.1" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-riscv64-musl@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-riscv64-musl@npm:1.11.1" + conditions: os=linux & cpu=riscv64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-s390x-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.11.1" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-x64-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.11.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-x64-musl@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.11.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-wasm32-wasi@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.11.1" + dependencies: + "@napi-rs/wasm-runtime": "npm:^0.2.11" + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-arm64-msvc@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.11.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-ia32-msvc@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.11.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-x64-msvc@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.11.1" + conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -6043,13 +6039,6 @@ __metadata: languageName: node linkType: hard -"abbrev@npm:^1.0.0": - version: 1.1.1 - resolution: "abbrev@npm:1.1.1" - checksum: 10c0/3f762677702acb24f65e813070e306c61fafe25d4b2583f9dfc935131f774863f3addd5741572ed576bd69cabe473c5af18e1e108b829cb7b6b4747884f726e6 - languageName: node - linkType: hard - "abbrev@npm:^3.0.0": version: 3.0.1 resolution: "abbrev@npm:3.0.1" @@ -6119,7 +6108,7 @@ __metadata: languageName: node linkType: hard -"agent-base@npm:6, agent-base@npm:^6.0.2": +"agent-base@npm:6": version: 6.0.2 resolution: "agent-base@npm:6.0.2" dependencies: @@ -6144,17 +6133,6 @@ __metadata: languageName: node linkType: hard -"agentkeepalive@npm:^4.2.1": - version: 4.2.1 - resolution: "agentkeepalive@npm:4.2.1" - dependencies: - debug: "npm:^4.1.0" - depd: "npm:^1.1.2" - humanize-ms: "npm:^1.2.1" - checksum: 10c0/259dafa84a9e1f9e277ac8b31995a7a4f4db36a1df1710e9d413d98c6c013ab81370ad585d92038045cc8657662e578b07fd60b312b212f59ad426b10e1d6dce - languageName: node - linkType: hard - "aggregate-error@npm:^3.0.0": version: 3.1.0 resolution: "aggregate-error@npm:3.1.0" @@ -7065,6 +7043,13 @@ __metadata: languageName: node linkType: hard +"byte-counter@npm:^0.1.0": + version: 0.1.0 + resolution: "byte-counter@npm:0.1.0" + checksum: 10c0/2e7b9cf902d06a6601f8ab893964a8b6b9e2b2dfc60fcee0d340e50b95aa3dc77c4d34ddf3e63cc374b4e5b1d0d694a942de6fbe8ee95d39418f3fdff666b6a4 + languageName: node + linkType: hard + "byte-size@npm:8.1.1": version: 8.1.1 resolution: "byte-size@npm:8.1.1" @@ -7086,32 +7071,6 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^16.1.0": - version: 16.1.3 - resolution: "cacache@npm:16.1.3" - dependencies: - "@npmcli/fs": "npm:^2.1.0" - "@npmcli/move-file": "npm:^2.0.0" - chownr: "npm:^2.0.0" - fs-minipass: "npm:^2.1.0" - glob: "npm:^8.0.1" - infer-owner: "npm:^1.0.4" - lru-cache: "npm:^7.7.1" - minipass: "npm:^3.1.6" - minipass-collect: "npm:^1.0.2" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.4" - mkdirp: "npm:^1.0.4" - p-map: "npm:^4.0.0" - promise-inflight: "npm:^1.0.1" - rimraf: "npm:^3.0.2" - ssri: "npm:^9.0.0" - tar: "npm:^6.1.11" - unique-filename: "npm:^2.0.0" - checksum: 10c0/cdf6836e1c457d2a5616abcaf5d8240c0346b1f5bd6fdb8866b9d84b6dff0b54e973226dc11e0d099f35394213d24860d1989c8358d2a41b39eb912b3000e749 - languageName: node - linkType: hard - "cacache@npm:^19.0.1": version: 19.0.1 resolution: "cacache@npm:19.0.1" @@ -7165,6 +7124,13 @@ __metadata: languageName: node linkType: hard +"cacheable-lookup@npm:^7.0.0": + version: 7.0.0 + resolution: "cacheable-lookup@npm:7.0.0" + checksum: 10c0/63a9c144c5b45cb5549251e3ea774c04d63063b29e469f7584171d059d3a88f650f47869a974e2d07de62116463d742c287a81a625e791539d987115cb081635 + languageName: node + linkType: hard + "cacheable-request@npm:7.0.2, cacheable-request@npm:^7.0.2": version: 7.0.2 resolution: "cacheable-request@npm:7.0.2" @@ -7180,6 +7146,21 @@ __metadata: languageName: node linkType: hard +"cacheable-request@npm:^13.0.12": + version: 13.0.15 + resolution: "cacheable-request@npm:13.0.15" + dependencies: + "@types/http-cache-semantics": "npm:^4.0.4" + get-stream: "npm:^9.0.1" + http-cache-semantics: "npm:^4.2.0" + keyv: "npm:^5.5.4" + mimic-response: "npm:^4.0.0" + normalize-url: "npm:^8.1.0" + responselike: "npm:^4.0.2" + checksum: 10c0/8cd2932ff3df591c27a9e34557743c7b5d4d843665b2a5e704a37ed5a3f7509ef24529ea81a7d51715fb21036ae7f8580398605b88c0f441524ada3201ddf2b4 + languageName: node + linkType: hard + "call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1": version: 1.0.1 resolution: "call-bind-apply-helpers@npm:1.0.1" @@ -7322,7 +7303,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.1, chalk@npm:^4.1.2": +"chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.2": version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: @@ -7688,6 +7669,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^13.1.0": + version: 13.1.0 + resolution: "commander@npm:13.1.0" + checksum: 10c0/7b8c5544bba704fbe84b7cab2e043df8586d5c114a4c5b607f83ae5060708940ed0b5bd5838cf8ce27539cde265c1cbd59ce3c8c6b017ed3eec8943e3a415164 + languageName: node + linkType: hard + "commander@npm:^2.19.0, commander@npm:^2.20.0": version: 2.20.3 resolution: "commander@npm:2.20.3" @@ -7740,13 +7728,6 @@ __metadata: languageName: node linkType: hard -"compare-version@npm:^0.1.2": - version: 0.1.2 - resolution: "compare-version@npm:0.1.2" - checksum: 10c0/f38b853cf0d244c0af5f444409abde3d2198cd97312efa1dbc4ab41b520009327c2a63db59bbaf2d69288eff6167ef22be9788dc5476157d073ecdff1a8eeb2d - languageName: node - linkType: hard - "compressible@npm:^2.0.12, compressible@npm:~2.0.16, compressible@npm:~2.0.18": version: 2.0.18 resolution: "compressible@npm:2.0.18" @@ -8163,7 +8144,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.0.1, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.4.0": version: 4.4.0 resolution: "debug@npm:4.4.0" dependencies: @@ -8234,6 +8215,15 @@ __metadata: languageName: node linkType: hard +"decompress-response@npm:^10.0.0": + version: 10.0.0 + resolution: "decompress-response@npm:10.0.0" + dependencies: + mimic-response: "npm:^4.0.0" + checksum: 10c0/e8ce13b3f790fbac1e75a7be9ce4f77be62a6e5fcccfd9bd73e9d8b48b9a3b6c1b7b918ecd321095f3839b3bc9b6f6af2b1bd9c905eeddc0d1177d297b073232 + languageName: node + linkType: hard + "decompress-response@npm:^6.0.0": version: 6.0.0 resolution: "decompress-response@npm:6.0.0" @@ -8347,7 +8337,7 @@ __metadata: languageName: node linkType: hard -"depd@npm:^1.1.2, depd@npm:~1.1.2": +"depd@npm:~1.1.2": version: 1.1.2 resolution: "depd@npm:1.1.2" checksum: 10c0/acb24aaf936ef9a227b6be6d495f0d2eb20108a9a6ad40585c5bda1a897031512fef6484e4fdbb80bd249fdaa82841fa1039f416ece03188e677ba11bcfda249 @@ -8628,9 +8618,9 @@ __metadata: languageName: node linkType: hard -"electron-forge-template-fixture-two@link:./spec/fixture/electron-forge-template-fixture::locator=%40electron-forge%2Fcore%40workspace%3Apackages%2Fapi%2Fcore": +"electron-forge-template-fixture-two@portal:./spec/fixture/electron-forge-template-fixture::locator=%40electron-forge%2Fcore%40workspace%3Apackages%2Fapi%2Fcore": version: 0.0.0-use.local - resolution: "electron-forge-template-fixture-two@link:./spec/fixture/electron-forge-template-fixture::locator=%40electron-forge%2Fcore%40workspace%3Apackages%2Fapi%2Fcore" + resolution: "electron-forge-template-fixture-two@portal:./spec/fixture/electron-forge-template-fixture::locator=%40electron-forge%2Fcore%40workspace%3Apackages%2Fapi%2Fcore" languageName: node linkType: soft @@ -8641,12 +8631,8 @@ __metadata: "@aws-sdk/client-s3": "npm:^3.654.0" "@aws-sdk/lib-storage": "npm:^3.654.0" "@aws-sdk/types": "npm:^3.654.0" - "@electron/fuses": "npm:^1.0.0" - "@electron/get": "npm:^3.0.0" + "@electron/fuses": "npm:^2.0.0" "@electron/lint-roller": "npm:^3.1.3" - "@electron/osx-sign": "npm:^1.0.5" - "@electron/packager": "npm:^18.3.5" - "@electron/rebuild": "npm:^3.7.0" "@google-cloud/storage": "npm:^7.5.0" "@inquirer/prompts": "npm:^6.0.1" "@listr2/prompt-adapter-inquirer": "npm:^2.0.22" @@ -8657,7 +8643,9 @@ __metadata: "@octokit/request-error": "npm:^5.1.1" "@octokit/rest": "npm:^20.1.2" "@octokit/types": "npm:^6.1.2" - "@types/cross-spawn": "npm:^6.0.1" + "@tsconfig/node22": "npm:^22.0.5" + "@types/cross-spawn": "npm:^6.0.6" + "@types/cross-zip": "npm:^4.0.2" "@types/debug": "npm:^4.1.12" "@types/express": "npm:^4.17.9" "@types/express-ws": "npm:^3.0.0" @@ -8665,12 +8653,10 @@ __metadata: "@types/interpret": "npm:^1.1.1" "@types/keyv": "npm:^3.1.4" "@types/listr": "npm:^0.14.2" - "@types/lodash": "npm:^4.14.166" + "@types/lodash-es": "npm:^4.17.12" "@types/mime-types": "npm:^2.1.0" "@types/minimist": "npm:^1.2.0" - "@types/node": "npm:^18.0.3" - "@types/node-fetch": "npm:^2.5.5" - "@types/rechoir": "npm:^0.6.1" + "@types/node": "npm:^22.10.7" "@types/semver": "npm:^7.3.4" "@types/which": "npm:^2.0.0" "@typescript-eslint/eslint-plugin": "npm:^8.0.0" @@ -8694,6 +8680,7 @@ __metadata: electron-wix-msi: "npm:^5.1.3" eslint: "npm:^8.56.0" eslint-config-prettier: "npm:^10.0.1" + eslint-import-resolver-typescript: "npm:^4.4.4" eslint-plugin-import: "npm:^2.31.0" eslint-plugin-n: "npm:^17.15.1" eslint-plugin-promise: "npm:^7.2.1" @@ -8706,30 +8693,27 @@ __metadata: fork-ts-checker-webpack-plugin: "npm:^7.2.13" form-data: "npm:^4.0.0" fs-extra: "npm:^10.0.0" - got: "npm:^11.8.5" + got: "npm:^14.0.0" html-webpack-plugin: "npm:^5.5.3" husky: "npm:^7.0.1" - interpret: "npm:^3.1.1" jiti: "npm:^2.4.2" lerna: "npm:^9.0.0" lint-staged: "npm:^12.1.7" listr2: "npm:^7.0.2" - lodash: "npm:^4.17.20" + lodash-es: "npm:^4.17.21" log-symbols: "npm:^4.0.0" markdownlint-cli2: "npm:^0.19.1" mime-types: "npm:^2.1.25" minimist: "npm:^1.2.6" msw: "npm:^2.7.0" - node-fetch: "npm:^2.6.7" parse-author: "npm:^2.0.0" prettier: "npm:^3.6.2" - rechoir: "npm:^0.8.0" ref-napi: "npm:^3.0.3" semver: "npm:^7.2.1" source-map-support: "npm:^0.5.13" tsx: "npm:^4.21.0" typedoc: "npm:0.25.13" - typescript: "npm:~5.4.5" + typescript: "npm:5.9.3" username: "npm:^5.1.0" verdaccio: "npm:^6.2.4" vite: "npm:^7.2.4" @@ -8742,9 +8726,6 @@ __metadata: xterm-addon-fit: "npm:^0.5.0" xterm-addon-search: "npm:^0.8.0" xvfb-maybe: "npm:^0.2.1" - yaml-hook: "npm:^1.0.0" - peerDependencies: - "@electron/fuses": ^1.0.0 dependenciesMeta: "@bitdisaster/exe-icon-extractor": built: true @@ -9075,6 +9056,13 @@ __metadata: languageName: node linkType: hard +"env-paths@npm:^3.0.0": + version: 3.0.0 + resolution: "env-paths@npm:3.0.0" + checksum: 10c0/76dec878cee47f841103bacd7fae03283af16f0702dad65102ef0a556f310b98a377885e0f32943831eb08b5ab37842a323d02529f3dfd5d0a40ca71b01b435f + languageName: node + linkType: hard + "envinfo@npm:7.13.0": version: 7.13.0 resolution: "envinfo@npm:7.13.0" @@ -9344,86 +9332,6 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.21.3": - version: 0.21.5 - resolution: "esbuild@npm:0.21.5" - dependencies: - "@esbuild/aix-ppc64": "npm:0.21.5" - "@esbuild/android-arm": "npm:0.21.5" - "@esbuild/android-arm64": "npm:0.21.5" - "@esbuild/android-x64": "npm:0.21.5" - "@esbuild/darwin-arm64": "npm:0.21.5" - "@esbuild/darwin-x64": "npm:0.21.5" - "@esbuild/freebsd-arm64": "npm:0.21.5" - "@esbuild/freebsd-x64": "npm:0.21.5" - "@esbuild/linux-arm": "npm:0.21.5" - "@esbuild/linux-arm64": "npm:0.21.5" - "@esbuild/linux-ia32": "npm:0.21.5" - "@esbuild/linux-loong64": "npm:0.21.5" - "@esbuild/linux-mips64el": "npm:0.21.5" - "@esbuild/linux-ppc64": "npm:0.21.5" - "@esbuild/linux-riscv64": "npm:0.21.5" - "@esbuild/linux-s390x": "npm:0.21.5" - "@esbuild/linux-x64": "npm:0.21.5" - "@esbuild/netbsd-x64": "npm:0.21.5" - "@esbuild/openbsd-x64": "npm:0.21.5" - "@esbuild/sunos-x64": "npm:0.21.5" - "@esbuild/win32-arm64": "npm:0.21.5" - "@esbuild/win32-ia32": "npm:0.21.5" - "@esbuild/win32-x64": "npm:0.21.5" - dependenciesMeta: - "@esbuild/aix-ppc64": - optional: true - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": - optional: true - "@esbuild/netbsd-x64": - optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": - optional: true - bin: - esbuild: bin/esbuild - checksum: 10c0/fa08508adf683c3f399e8a014a6382a6b65542213431e26206c0720e536b31c09b50798747c2a105a4bbba1d9767b8d3615a74c2f7bf1ddf6d836cd11eb672de - languageName: node - linkType: hard - "esbuild@npm:^0.25.0": version: 0.25.10 resolution: "esbuild@npm:0.25.10" @@ -9681,6 +9589,21 @@ __metadata: languageName: node linkType: hard +"eslint-import-context@npm:^0.1.8": + version: 0.1.9 + resolution: "eslint-import-context@npm:0.1.9" + dependencies: + get-tsconfig: "npm:^4.10.1" + stable-hash-x: "npm:^0.2.0" + peerDependencies: + unrs-resolver: ^1.0.0 + peerDependenciesMeta: + unrs-resolver: + optional: true + checksum: 10c0/07851103443b70af681c5988e2702e681ff9b956e055e11d4bd9b2322847fa0d9e8da50c18fc7cb1165106b043f34fbd0384d7011c239465c4645c52132e56f3 + languageName: node + linkType: hard + "eslint-import-resolver-node@npm:^0.3.7": version: 0.3.7 resolution: "eslint-import-resolver-node@npm:0.3.7" @@ -9703,6 +9626,30 @@ __metadata: languageName: node linkType: hard +"eslint-import-resolver-typescript@npm:^4.4.4": + version: 4.4.4 + resolution: "eslint-import-resolver-typescript@npm:4.4.4" + dependencies: + debug: "npm:^4.4.1" + eslint-import-context: "npm:^0.1.8" + get-tsconfig: "npm:^4.10.1" + is-bun-module: "npm:^2.0.0" + stable-hash-x: "npm:^0.2.0" + tinyglobby: "npm:^0.2.14" + unrs-resolver: "npm:^1.7.11" + peerDependencies: + eslint: "*" + eslint-plugin-import: "*" + eslint-plugin-import-x: "*" + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + checksum: 10c0/3bf8ad77c21660f77a0e455555ab179420f68ae7a132906c85a217ccce51cb6680cf70027cab32a358d193e5b9e476f6ba2e595585242aa97d4f6435ca22104e + languageName: node + linkType: hard + "eslint-module-utils@npm:^2.12.0": version: 2.12.0 resolution: "eslint-module-utils@npm:2.12.0" @@ -10348,7 +10295,7 @@ __metadata: languageName: node linkType: hard -"extract-zip@npm:^2.0.0, extract-zip@npm:^2.0.1": +"extract-zip@npm:^2.0.1": version: 2.0.1 resolution: "extract-zip@npm:2.0.1" dependencies: @@ -10557,6 +10504,13 @@ __metadata: languageName: node linkType: hard +"filename-reserved-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "filename-reserved-regex@npm:3.0.0" + checksum: 10c0/2b1df851a37f84723f9d8daf885ddfadd3dea2a124474db405295962abc1a01d6c9b6b27edec33bad32ef601e1a220f8a34d34f30ca5a911709700e2b517e268 + languageName: node + linkType: hard + "filenamify@npm:^4.1.0": version: 4.3.0 resolution: "filenamify@npm:4.3.0" @@ -10568,6 +10522,15 @@ __metadata: languageName: node linkType: hard +"filenamify@npm:^6.0.0": + version: 6.0.0 + resolution: "filenamify@npm:6.0.0" + dependencies: + filename-reserved-regex: "npm:^3.0.0" + checksum: 10c0/6798be1f7eea9eddb4517527a890a9d1b97083a6392b0ca392b79034d02d92411830d1b0e29f85ebfcb5cd4f8494388c7f9975fbada9d5f4088fc8474fdf20ae + languageName: node + linkType: hard + "fill-range@npm:^7.1.1": version: 7.1.1 resolution: "fill-range@npm:7.1.1" @@ -10656,13 +10619,12 @@ __metadata: languageName: node linkType: hard -"flora-colossus@npm:^2.0.0": - version: 2.0.0 - resolution: "flora-colossus@npm:2.0.0" +"flora-colossus@npm:^3.0.2": + version: 3.0.2 + resolution: "flora-colossus@npm:3.0.2" dependencies: - debug: "npm:^4.3.4" - fs-extra: "npm:^10.1.0" - checksum: 10c0/ea50e6ff38fd089f536cbec57da9a3a311efe5a97c21a2c0ae8cc1a85a71c9301b10168693b6389e257c7dbccc3723cc4f0d98377e29b6b65e6f45a929fe5d54 + debug: "npm:^4.4.1" + checksum: 10c0/1b56ca02d75b6eb5b0d70123b0f71ef320a8cb2bfd8def952de854121b7a8ea67fb2fa6e75e2bbef61a753b31c117a4405cd9b2597f54ca714bafa4ca3ef9504 languageName: node linkType: hard @@ -10755,6 +10717,13 @@ __metadata: languageName: node linkType: hard +"form-data-encoder@npm:^4.0.2": + version: 4.1.0 + resolution: "form-data-encoder@npm:4.1.0" + checksum: 10c0/cbd655aa8ffff6f7c2733b1d8e95fa9a2fe8a88a90bde29fb54b8e02c9406e51f32a014bfe8297d67fbac9f77614d14a8b4bbc4fd0352838e67e97a881d06332 + languageName: node + linkType: hard + "form-data@npm:^2.5.0": version: 2.5.5 resolution: "form-data@npm:2.5.5" @@ -10769,19 +10738,6 @@ __metadata: languageName: node linkType: hard -"form-data@npm:^3.0.0": - version: 3.0.4 - resolution: "form-data@npm:3.0.4" - dependencies: - asynckit: "npm:^0.4.0" - combined-stream: "npm:^1.0.8" - es-set-tostringtag: "npm:^2.1.0" - hasown: "npm:^2.0.2" - mime-types: "npm:^2.1.35" - checksum: 10c0/2451043b3e931653ce9690ba051b0bf1b5855a63029279bd7bdf8d02e4b5b42f4582b23ed3637df27a0d21bac2013c37d165ec9486e1af2470c13114aee83acc - languageName: node - linkType: hard - "form-data@npm:^4.0.0, form-data@npm:^4.0.4": version: 4.0.4 resolution: "form-data@npm:4.0.4" @@ -10860,17 +10816,6 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^11.1.0": - version: 11.1.1 - resolution: "fs-extra@npm:11.1.1" - dependencies: - graceful-fs: "npm:^4.2.0" - jsonfile: "npm:^6.0.1" - universalify: "npm:^2.0.0" - checksum: 10c0/a2480243d7dcfa7d723c5f5b24cf4eba02a6ccece208f1524a2fbde1c629492cfb9a59e4b6d04faff6fbdf71db9fdc8ef7f396417a02884195a625f5d8dc9427 - languageName: node - linkType: hard - "fs-extra@npm:^11.1.1": version: 11.2.0 resolution: "fs-extra@npm:11.2.0" @@ -10915,7 +10860,7 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^9.0.0, fs-extra@npm:^9.0.1": +"fs-extra@npm:^9.0.0": version: 9.1.0 resolution: "fs-extra@npm:9.1.0" dependencies: @@ -10927,7 +10872,7 @@ __metadata: languageName: node linkType: hard -"fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": +"fs-minipass@npm:^2.0.0": version: 2.1.0 resolution: "fs-minipass@npm:2.1.0" dependencies: @@ -11061,14 +11006,13 @@ __metadata: languageName: node linkType: hard -"galactus@npm:^1.0.0": - version: 1.0.0 - resolution: "galactus@npm:1.0.0" +"galactus@npm:^2.0.2": + version: 2.0.2 + resolution: "galactus@npm:2.0.2" dependencies: - debug: "npm:^4.3.4" - flora-colossus: "npm:^2.0.0" - fs-extra: "npm:^10.1.0" - checksum: 10c0/8422109720515f71b40c60275e05f0a65957bdf15498775ac610df9a254ffe36b10e31d239d88d60c2b348b86d213170d3cfa46562e89c8d860067a80b20ad46 + debug: "npm:^4.4.1" + flora-colossus: "npm:^3.0.2" + checksum: 10c0/ee851b76250f946f97981ab4103a7121450632ab0bdc1285c80246325ca67dec7acd69c01706b6867a572cce3127b39b9d712fa1d815be4a8f8c3a1f7aeafaf1 languageName: node linkType: hard @@ -11264,6 +11208,16 @@ __metadata: languageName: node linkType: hard +"get-stream@npm:^9.0.1": + version: 9.0.1 + resolution: "get-stream@npm:9.0.1" + dependencies: + "@sec-ant/readable-stream": "npm:^0.4.1" + is-stream: "npm:^4.0.1" + checksum: 10c0/d70e73857f2eea1826ac570c3a912757dcfbe8a718a033fa0c23e12ac8e7d633195b01710e0559af574cbb5af101009b42df7b6f6b29ceec8dbdf7291931b948 + languageName: node + linkType: hard + "get-symbol-description@npm:^1.0.0": version: 1.0.0 resolution: "get-symbol-description@npm:1.0.0" @@ -11292,7 +11246,7 @@ __metadata: languageName: node linkType: hard -"get-tsconfig@npm:^4.7.5": +"get-tsconfig@npm:^4.10.1, get-tsconfig@npm:^4.7.5": version: 4.13.0 resolution: "get-tsconfig@npm:4.13.0" dependencies: @@ -11438,6 +11392,22 @@ __metadata: languageName: node linkType: hard +"glob@npm:^11.0.1": + version: 11.1.0 + resolution: "glob@npm:11.1.0" + dependencies: + foreground-child: "npm:^3.3.1" + jackspeak: "npm:^4.1.1" + minimatch: "npm:^10.1.1" + minipass: "npm:^7.1.2" + package-json-from-dist: "npm:^1.0.0" + path-scurry: "npm:^2.0.0" + bin: + glob: dist/esm/bin.mjs + checksum: 10c0/1ceae07f23e316a6fa74581d9a74be6e8c2e590d2f7205034dd5c0435c53f5f7b712c2be00c3b65bf0a49294a1c6f4b98cd84c7637e29453b5aa13b79f1763a2 + languageName: node + linkType: hard + "glob@npm:^11.0.3": version: 11.0.3 resolution: "glob@npm:11.0.3" @@ -11482,32 +11452,6 @@ __metadata: languageName: node linkType: hard -"glob@npm:^8.0.1": - version: 8.0.3 - resolution: "glob@npm:8.0.3" - dependencies: - fs.realpath: "npm:^1.0.0" - inflight: "npm:^1.0.4" - inherits: "npm:2" - minimatch: "npm:^5.0.1" - once: "npm:^1.3.0" - checksum: 10c0/07ebaf2ed83e76b10901ec4982040ebd85458b787b4386f751a0514f6c8e416ed6c9eec5a892571eb0ef00b09d1bd451f72b5d9fb7b63770efd400532486e731 - languageName: node - linkType: hard - -"glob@npm:^8.1.0": - version: 8.1.0 - resolution: "glob@npm:8.1.0" - dependencies: - fs.realpath: "npm:^1.0.0" - inflight: "npm:^1.0.4" - inherits: "npm:2" - minimatch: "npm:^5.0.1" - once: "npm:^1.3.0" - checksum: 10c0/cb0b5cab17a59c57299376abe5646c7070f8acb89df5595b492dba3bfb43d301a46c01e5695f01154e6553168207cb60d4eaf07d3be4bc3eb9b0457c5c561d0f - languageName: node - linkType: hard - "glob@npm:^9.2.0": version: 9.3.5 resolution: "glob@npm:9.3.5" @@ -11661,6 +11605,26 @@ __metadata: languageName: node linkType: hard +"got@npm:^14.0.0, got@npm:^14.4.5": + version: 14.6.4 + resolution: "got@npm:14.6.4" + dependencies: + "@sindresorhus/is": "npm:^7.0.1" + byte-counter: "npm:^0.1.0" + cacheable-lookup: "npm:^7.0.0" + cacheable-request: "npm:^13.0.12" + decompress-response: "npm:^10.0.0" + form-data-encoder: "npm:^4.0.2" + http2-wrapper: "npm:^2.2.1" + keyv: "npm:^5.5.3" + lowercase-keys: "npm:^3.0.0" + p-cancelable: "npm:^4.0.1" + responselike: "npm:^4.0.2" + type-fest: "npm:^4.26.1" + checksum: 10c0/ee8980feb842db876cffa42fa27da6d90cc1a9cfe2a38942f4b319cbb37c000e34919a7e5dea017a0fa53b0535c02d00426abbbf528d6a4e89c6eb07b2bde977 + languageName: node + linkType: hard + "graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.3, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" @@ -12035,13 +11999,20 @@ __metadata: languageName: node linkType: hard -"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0, http-cache-semantics@npm:^4.1.1": +"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.1": version: 4.1.1 resolution: "http-cache-semantics@npm:4.1.1" checksum: 10c0/ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc languageName: node linkType: hard +"http-cache-semantics@npm:^4.2.0": + version: 4.2.0 + resolution: "http-cache-semantics@npm:4.2.0" + checksum: 10c0/45b66a945cf13ec2d1f29432277201313babf4a01d9e52f44b31ca923434083afeca03f18417f599c9ab3d0e7b618ceb21257542338b57c54b710463b4a53e37 + languageName: node + linkType: hard + "http-deceiver@npm:^1.2.7": version: 1.2.7 resolution: "http-deceiver@npm:1.2.7" @@ -12159,7 +12130,7 @@ __metadata: languageName: node linkType: hard -"http2-wrapper@npm:^2.1.10": +"http2-wrapper@npm:^2.1.10, http2-wrapper@npm:^2.2.1": version: 2.2.1 resolution: "http2-wrapper@npm:2.2.1" dependencies: @@ -12196,15 +12167,6 @@ __metadata: languageName: node linkType: hard -"humanize-ms@npm:^1.2.1": - version: 1.2.1 - resolution: "humanize-ms@npm:1.2.1" - dependencies: - ms: "npm:^2.0.0" - checksum: 10c0/f34a2c20161d02303c2807badec2f3b49cbfbbb409abd4f95a07377ae01cfe6b59e3d15ac609cffcd8f2521f0eb37b7e1091acf65da99aa2a4f1ad63c21e7e7a - languageName: node - linkType: hard - "husky@npm:^7.0.1": version: 7.0.4 resolution: "husky@npm:7.0.4" @@ -12330,13 +12292,6 @@ __metadata: languageName: node linkType: hard -"infer-owner@npm:^1.0.4": - version: 1.0.4 - resolution: "infer-owner@npm:1.0.4" - checksum: 10c0/a7b241e3149c26e37474e3435779487f42f36883711f198c45794703c7556bc38af224088bd4d1a221a45b8208ae2c2bcf86200383621434d0c099304481c5b9 - languageName: node - linkType: hard - "inflight@npm:^1.0.4": version: 1.0.6 resolution: "inflight@npm:1.0.6" @@ -12464,13 +12419,6 @@ __metadata: languageName: node linkType: hard -"interpret@npm:^3.1.1": - version: 3.1.1 - resolution: "interpret@npm:3.1.1" - checksum: 10c0/6f3c4d0aa6ec1b43a8862375588a249e3c917739895cbe67fe12f0a76260ea632af51e8e2431b50fbcd0145356dc28ca147be08dbe6a523739fd55c0f91dc2a5 - languageName: node - linkType: hard - "ip-address@npm:^10.0.1": version: 10.0.1 resolution: "ip-address@npm:10.0.1" @@ -12478,13 +12426,6 @@ __metadata: languageName: node linkType: hard -"ip@npm:^2.0.0": - version: 2.0.1 - resolution: "ip@npm:2.0.1" - checksum: 10c0/cab8eb3e88d0abe23e4724829621ec4c4c5cb41a7f936a2e626c947128c1be16ed543448d42af7cca95379f9892bfcacc1ccd8d09bc7e8bea0e86d492ce33616 - languageName: node - linkType: hard - "ipaddr.js@npm:1.9.1": version: 1.9.1 resolution: "ipaddr.js@npm:1.9.1" @@ -12601,6 +12542,15 @@ __metadata: languageName: node linkType: hard +"is-bun-module@npm:^2.0.0": + version: 2.0.0 + resolution: "is-bun-module@npm:2.0.0" + dependencies: + semver: "npm:^7.7.1" + checksum: 10c0/7d27a0679cfa5be1f5052650391f9b11040cd70c48d45112e312c56bc6b6ca9c9aea70dcce6cc40b1e8947bfff8567a5c5715d3b066fb478522dab46ea379240 + languageName: node + linkType: hard + "is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" @@ -12637,6 +12587,15 @@ __metadata: languageName: node linkType: hard +"is-core-module@npm:^2.16.1": + version: 2.16.1 + resolution: "is-core-module@npm:2.16.1" + dependencies: + hasown: "npm:^2.0.2" + checksum: 10c0/898443c14780a577e807618aaae2b6f745c8538eca5c7bc11388a3f2dc6de82b9902bcc7eb74f07be672b11bbe82dd6a6edded44a00cb3d8f933d0459905eedd + languageName: node + linkType: hard + "is-core-module@npm:^2.5.0, is-core-module@npm:^2.9.0": version: 2.11.0 resolution: "is-core-module@npm:2.11.0" @@ -12775,13 +12734,6 @@ __metadata: languageName: node linkType: hard -"is-lambda@npm:^1.0.1": - version: 1.0.1 - resolution: "is-lambda@npm:1.0.1" - checksum: 10c0/85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d - languageName: node - linkType: hard - "is-map@npm:^2.0.3": version: 2.0.3 resolution: "is-map@npm:2.0.3" @@ -12984,6 +12936,13 @@ __metadata: languageName: node linkType: hard +"is-stream@npm:^4.0.1": + version: 4.0.1 + resolution: "is-stream@npm:4.0.1" + checksum: 10c0/2706c7f19b851327ba374687bc4a3940805e14ca496dc672b9629e744d143b1ad9c6f1b162dece81c7bfbc0f83b32b61ccc19ad2e05aad2dd7af347408f60c7f + languageName: node + linkType: hard + "is-string@npm:^1.0.5, is-string@npm:^1.0.7": version: 1.0.7 resolution: "is-string@npm:1.0.7" @@ -13496,10 +13455,10 @@ __metadata: languageName: node linkType: hard -"junk@npm:^3.1.0": - version: 3.1.0 - resolution: "junk@npm:3.1.0" - checksum: 10c0/820174b9fa9a3af09aeeeeb1022df2481a2b10752ce5f65ac63924a79cb9bba83ea7c288e8d5b448951109742da5ea69a230846f4bf3c17c5c6a1d0603b63db4 +"junk@npm:^4.0.1": + version: 4.0.1 + resolution: "junk@npm:4.0.1" + checksum: 10c0/091117a5dcf65b19a3e4b8506d95d6ab152b5b5fe6f10e8998de950b0f9d689f14d9b63bb07863b8c86c18511fd1b9a21e9a16e686246436558338ed2e8a4548 languageName: node linkType: hard @@ -13579,6 +13538,15 @@ __metadata: languageName: node linkType: hard +"keyv@npm:^5.5.3, keyv@npm:^5.5.4": + version: 5.5.4 + resolution: "keyv@npm:5.5.4" + dependencies: + "@keyv/serialize": "npm:^1.1.1" + checksum: 10c0/8dad7f61022c6348c4c691a19468b7c238198252edbd3cc08277d95253c137af7ce5ffd763b6ffded4a75cbe03dc3134f1adcd3dd26c5767c2c9c254e3b39001 + languageName: node + linkType: hard + "kind-of@npm:^6.0.2, kind-of@npm:^6.0.3": version: 6.0.3 resolution: "kind-of@npm:6.0.3" @@ -13918,6 +13886,13 @@ __metadata: languageName: node linkType: hard +"lodash-es@npm:^4.17.21": + version: 4.17.21 + resolution: "lodash-es@npm:4.17.21" + checksum: 10c0/fb407355f7e6cd523a9383e76e6b455321f0f153a6c9625e21a8827d10c54c2a2341bd2ae8d034358b60e07325e1330c14c224ff582d04612a46a4f0479ff2f2 + languageName: node + linkType: hard + "lodash.defaults@npm:^4.2.0": version: 4.2.0 resolution: "lodash.defaults@npm:4.2.0" @@ -14077,6 +14052,13 @@ __metadata: languageName: node linkType: hard +"lowercase-keys@npm:^3.0.0": + version: 3.0.0 + resolution: "lowercase-keys@npm:3.0.0" + checksum: 10c0/ef62b9fa5690ab0a6e4ef40c94efce68e3ed124f583cc3be38b26ff871da0178a28b9a84ce0c209653bb25ca135520ab87fea7cd411a54ac4899cb2f30501430 + languageName: node + linkType: hard + "lru-cache@npm:7.18.3": version: 7.18.3 resolution: "lru-cache@npm:7.18.3" @@ -14107,13 +14089,6 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^7.7.1": - version: 7.14.1 - resolution: "lru-cache@npm:7.14.1" - checksum: 10c0/d54e01ae3bedbd7bb0562fe48e61e509c86102bcc2c8babba1ba5498a6859a796adc697fa917459a455969a45c7d8645b29d938c0142b97fa3b5fb9c234d2390 - languageName: node - linkType: hard - "lru-cache@npm:^9.1.1": version: 9.1.2 resolution: "lru-cache@npm:9.1.2" @@ -14192,30 +14167,6 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^10.2.1": - version: 10.2.1 - resolution: "make-fetch-happen@npm:10.2.1" - dependencies: - agentkeepalive: "npm:^4.2.1" - cacache: "npm:^16.1.0" - http-cache-semantics: "npm:^4.1.0" - http-proxy-agent: "npm:^5.0.0" - https-proxy-agent: "npm:^5.0.0" - is-lambda: "npm:^1.0.1" - lru-cache: "npm:^7.7.1" - minipass: "npm:^3.1.6" - minipass-collect: "npm:^1.0.2" - minipass-fetch: "npm:^2.0.3" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.4" - negotiator: "npm:^0.6.3" - promise-retry: "npm:^2.0.1" - socks-proxy-agent: "npm:^7.0.0" - ssri: "npm:^9.0.0" - checksum: 10c0/28ec392f63ab93511f400839dcee83107eeecfaad737d1e8487ea08b4332cd89a8f3319584222edd9f6f1d0833cf516691469496d46491863f9e88c658013949 - languageName: node - linkType: hard - "make-fetch-happen@npm:^14.0.0, make-fetch-happen@npm:^14.0.2, make-fetch-happen@npm:^14.0.3": version: 14.0.3 resolution: "make-fetch-happen@npm:14.0.3" @@ -14830,6 +14781,13 @@ __metadata: languageName: node linkType: hard +"mimic-response@npm:^4.0.0": + version: 4.0.0 + resolution: "mimic-response@npm:4.0.0" + checksum: 10c0/761d788d2668ae9292c489605ffd4fad220f442fbae6832adce5ebad086d691e906a6d5240c290293c7a11e99fbdbbef04abbbed498bf8699a4ee0f31315e3fb + languageName: node + linkType: hard + "min-indent@npm:^1.0.0": version: 1.0.1 resolution: "min-indent@npm:1.0.1" @@ -14871,6 +14829,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^10.0.1, minimatch@npm:^10.1.1": + version: 10.1.1 + resolution: "minimatch@npm:10.1.1" + dependencies: + "@isaacs/brace-expansion": "npm:^5.0.0" + checksum: 10c0/c85d44821c71973d636091fddbfbffe62370f5ee3caf0241c5b60c18cd289e916200acb2361b7e987558cd06896d153e25d505db9fc1e43e6b4b6752e2702902 + languageName: node + linkType: hard + "minimatch@npm:^10.0.3": version: 10.0.3 resolution: "minimatch@npm:10.0.3" @@ -14941,15 +14908,6 @@ __metadata: languageName: node linkType: hard -"minipass-collect@npm:^1.0.2": - version: 1.0.2 - resolution: "minipass-collect@npm:1.0.2" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10c0/8f82bd1f3095b24f53a991b04b67f4c710c894e518b813f0864a31de5570441a509be1ca17e0bb92b047591a8fdbeb886f502764fefb00d2f144f4011791e898 - languageName: node - linkType: hard - "minipass-collect@npm:^2.0.1": version: 2.0.1 resolution: "minipass-collect@npm:2.0.1" @@ -14959,21 +14917,6 @@ __metadata: languageName: node linkType: hard -"minipass-fetch@npm:^2.0.3": - version: 2.1.2 - resolution: "minipass-fetch@npm:2.1.2" - dependencies: - encoding: "npm:^0.1.13" - minipass: "npm:^3.1.6" - minipass-sized: "npm:^1.0.3" - minizlib: "npm:^2.1.2" - dependenciesMeta: - encoding: - optional: true - checksum: 10c0/33ab2c5bdb3d91b9cb8bc6ae42d7418f4f00f7f7beae14b3bb21ea18f9224e792f560a6e17b6f1be12bbeb70dbe99a269f4204c60e5d99130a0777b153505c43 - languageName: node - linkType: hard - "minipass-fetch@npm:^4.0.0": version: 4.0.1 resolution: "minipass-fetch@npm:4.0.1" @@ -15016,7 +14959,7 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^3.0.0, minipass@npm:^3.1.6": +"minipass@npm:^3.0.0": version: 3.3.4 resolution: "minipass@npm:3.3.4" dependencies: @@ -15025,15 +14968,6 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^3.1.1": - version: 3.1.6 - resolution: "minipass@npm:3.1.6" - dependencies: - yallist: "npm:^4.0.0" - checksum: 10c0/65c3007875602b0ed0e1ab11a284b8aea80cd7c3757a8db75ca3850bd1cd728bec1c87bb03fe35355aecd61e08de4875d7a81c654372ec0b50c29e13f2c3b924 - languageName: node - linkType: hard - "minipass@npm:^4.2.4": version: 4.2.8 resolution: "minipass@npm:4.2.8" @@ -15069,7 +15003,7 @@ __metadata: languageName: node linkType: hard -"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": +"minizlib@npm:^2.1.1": version: 2.1.2 resolution: "minizlib@npm:2.1.2" dependencies: @@ -15088,7 +15022,7 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:1.0.4, mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": +"mkdirp@npm:1.0.4, mkdirp@npm:^1.0.3": version: 1.0.4 resolution: "mkdirp@npm:1.0.4" bin: @@ -15122,7 +15056,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.3": +"ms@npm:2.1.3, ms@npm:^2.1.1, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 @@ -15246,6 +15180,15 @@ __metadata: languageName: node linkType: hard +"napi-postinstall@npm:^0.3.0": + version: 0.3.4 + resolution: "napi-postinstall@npm:0.3.4" + bin: + napi-postinstall: lib/cli.js + checksum: 10c0/b33d64150828bdade3a5d07368a8b30da22ee393f8dd8432f1b9e5486867be21c84ec443dd875dd3ef3c7401a079a7ab7e2aa9d3538a889abbcd96495d5104fe + languageName: node + linkType: hard + "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -15253,7 +15196,7 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": +"negotiator@npm:0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 @@ -15298,12 +15241,12 @@ __metadata: languageName: node linkType: hard -"node-abi@npm:^3.45.0": - version: 3.80.0 - resolution: "node-abi@npm:3.80.0" +"node-abi@npm:^4.2.0": + version: 4.24.0 + resolution: "node-abi@npm:4.24.0" dependencies: - semver: "npm:^7.3.5" - checksum: 10c0/f98534a2d063e85b6b51c5e6f2abebd1d1d313855e29138d493cf178ce5c2ead18e562c3093a758654fd941c9353b8154a79acd10540d553726c4f690c31c44e + semver: "npm:^7.6.3" + checksum: 10c0/9bf9f4e79c875b98f8026f2ad80150b2d5077f48529444232c9574cfd82e45d42a3ab2dcf6fb374cf7775becbf58e7c1b8704596ad3bef27cdeab7bc93eca7a3 languageName: node linkType: hard @@ -15323,18 +15266,18 @@ __metadata: languageName: node linkType: hard -"node-api-version@npm:^0.2.0": - version: 0.2.0 - resolution: "node-api-version@npm:0.2.0" +"node-api-version@npm:^0.2.1": + version: 0.2.1 + resolution: "node-api-version@npm:0.2.1" dependencies: semver: "npm:^7.3.5" - checksum: 10c0/a5bdc7559237d2acebadc9ac0f29dd1279726e4226a8b3256ea605f6ad4a5c48528a2b6684d09237d33f0b714a95573d7f14a2a628642d31e05c79395e2c7873 + checksum: 10c0/3fe6c273e4f9dd184bb8b959ba3d8afae7eade663611d82c8538c79ac3a7b8f1d136632ceb4bf8cdc46a851fc169407746996cf7d1096de9a186e0e70fca95fa languageName: node linkType: hard -"node-fetch@npm:^2.6.7, node-fetch@npm:cjs": - version: 2.6.7 - resolution: "node-fetch@npm:2.6.7" +"node-fetch@npm:^2.6.9": + version: 2.6.11 + resolution: "node-fetch@npm:2.6.11" dependencies: whatwg-url: "npm:^5.0.0" peerDependencies: @@ -15342,13 +15285,13 @@ __metadata: peerDependenciesMeta: encoding: optional: true - checksum: 10c0/fcae80f5ac52fbf5012f5e19df2bd3915e67d3b3ad51cb5942943df2238d32ba15890fecabd0e166876a9f98a581ab50f3f10eb942b09405c49ef8da36b826c7 + checksum: 10c0/3ec847ca43f678d07b80abfd85bdf06523c2554ee9a494c992c5fc61f5d9cde9f9f16aa33ff09a62f19eee9d54813b8850d7f054cdfee8b2daf789c57f8eeaea languageName: node linkType: hard -"node-fetch@npm:^2.6.9": - version: 2.6.11 - resolution: "node-fetch@npm:2.6.11" +"node-fetch@npm:cjs": + version: 2.6.7 + resolution: "node-fetch@npm:2.6.7" dependencies: whatwg-url: "npm:^5.0.0" peerDependencies: @@ -15356,7 +15299,7 @@ __metadata: peerDependenciesMeta: encoding: optional: true - checksum: 10c0/3ec847ca43f678d07b80abfd85bdf06523c2554ee9a494c992c5fc61f5d9cde9f9f16aa33ff09a62f19eee9d54813b8850d7f054cdfee8b2daf789c57f8eeaea + checksum: 10c0/fcae80f5ac52fbf5012f5e19df2bd3915e67d3b3ad51cb5942943df2238d32ba15890fecabd0e166876a9f98a581ab50f3f10eb942b09405c49ef8da36b826c7 languageName: node linkType: hard @@ -15398,6 +15341,26 @@ __metadata: languageName: node linkType: hard +"node-gyp@npm:^11.2.0": + version: 11.5.0 + resolution: "node-gyp@npm:11.5.0" + dependencies: + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^14.0.3" + nopt: "npm:^8.0.0" + proc-log: "npm:^5.0.0" + semver: "npm:^7.3.5" + tar: "npm:^7.4.3" + tinyglobby: "npm:^0.2.12" + which: "npm:^5.0.0" + bin: + node-gyp: bin/node-gyp.js + checksum: 10c0/31ff49586991b38287bb15c3d529dd689cfc32f992eed9e6997b9d712d5d21fe818a8b1bbfe3b76a7e33765c20210c5713212f4aa329306a615b87d8a786da3a + languageName: node + linkType: hard + "node-machine-id@npm:1.1.12": version: 1.1.12 resolution: "node-machine-id@npm:1.1.12" @@ -15412,17 +15375,6 @@ __metadata: languageName: node linkType: hard -"nopt@npm:^6.0.0": - version: 6.0.0 - resolution: "nopt@npm:6.0.0" - dependencies: - abbrev: "npm:^1.0.0" - bin: - nopt: bin/nopt.js - checksum: 10c0/837b52c330df16fcaad816b1f54fec6b2854ab1aa771d935c1603fbcf9b023bb073f1466b1b67f48ea4dce127ae675b85b9d9355700e9b109de39db490919786 - languageName: node - linkType: hard - "nopt@npm:^8.0.0": version: 8.1.0 resolution: "nopt@npm:8.1.0" @@ -15472,6 +15424,13 @@ __metadata: languageName: node linkType: hard +"normalize-url@npm:^8.1.0": + version: 8.1.0 + resolution: "normalize-url@npm:8.1.0" + checksum: 10c0/e9b68db5f0264ce74fc083e2120b4a40fb3248e5dceec5f795bddcee0311b3613f858c9a65f258614fac2776b8e9957023bea8fe7299db1496b3cd1c75976cfe + languageName: node + linkType: hard + "npm-bundled@npm:^4.0.0": version: 4.0.0 resolution: "npm-bundled@npm:4.0.0" @@ -16018,6 +15977,13 @@ __metadata: languageName: node linkType: hard +"p-cancelable@npm:^4.0.1": + version: 4.0.1 + resolution: "p-cancelable@npm:4.0.1" + checksum: 10c0/12636623f46784ba962b6fe7a1f34d021f1d9a2cc12c43e270baa715ea872d5c8c7d9f086ed420b8b9817e91d9bbe92c14c90e5dddd4a9968c81a2a7aef7089d + languageName: node + linkType: hard + "p-defer@npm:^1.0.0": version: 1.0.0 resolution: "p-defer@npm:1.0.0" @@ -16532,10 +16498,10 @@ __metadata: languageName: node linkType: hard -"pe-library@npm:^1.0.0": - version: 1.0.0 - resolution: "pe-library@npm:1.0.0" - checksum: 10c0/697a39d3dd97cb0b859f6088689b72a58969f39145faaf478d7ac4be88602cd556f08c0ab8332d018f091c05de5848accb699fc20d358127127f5bded85074f1 +"pe-library@npm:^1.0.1": + version: 1.0.1 + resolution: "pe-library@npm:1.0.1" + checksum: 10c0/1204201126db9477d1119e5312f09228ce1e0e6d6545fc5811f6166c259fe24a890297557abc5971ec8029f28777628ed71ba8c186ed6bd09ed1152c8a88b33d languageName: node linkType: hard @@ -16709,16 +16675,6 @@ __metadata: languageName: node linkType: hard -"plist@npm:^3.0.0": - version: 3.0.5 - resolution: "plist@npm:3.0.5" - dependencies: - base64-js: "npm:^1.5.1" - xmlbuilder: "npm:^9.0.7" - checksum: 10c0/f27193d6fbbaa52963e8bba9e7a854efd0b6e51f3663677343c9d1258331830936f42fdc935953169b6c22b5504bd715ca47d1260572b65b23b879f93a731ff5 - languageName: node - linkType: hard - "plist@npm:^3.0.5, plist@npm:^3.1.0": version: 3.1.0 resolution: "plist@npm:3.1.0" @@ -16747,7 +16703,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.4.43, postcss@npm:^8.5.6": +"postcss@npm:^8.5.6": version: 8.5.6 resolution: "postcss@npm:8.5.6" dependencies: @@ -16806,13 +16762,6 @@ __metadata: languageName: node linkType: hard -"proc-log@npm:^2.0.1": - version: 2.0.1 - resolution: "proc-log@npm:2.0.1" - checksum: 10c0/701c501429775ce34cec28ef6a1c976537274b42917212fb8a5975ebcecb0a85612907fd7f99ff28ff4c2112bb84a0f4322fc9b9e1e52a8562fcbb1d5b3ce608 - languageName: node - linkType: hard - "proc-log@npm:^5.0.0": version: 5.0.0 resolution: "proc-log@npm:5.0.0" @@ -16876,13 +16825,6 @@ __metadata: languageName: node linkType: hard -"promise-inflight@npm:^1.0.1": - version: 1.0.1 - resolution: "promise-inflight@npm:1.0.1" - checksum: 10c0/d179d148d98fbff3d815752fa9a08a87d3190551d1420f17c4467f628214db12235ae068d98cd001f024453676d8985af8f28f002345646c4ece4600a79620bc - languageName: node - linkType: hard - "promise-retry@npm:^2.0.1": version: 2.0.1 resolution: "promise-retry@npm:2.0.1" @@ -17305,15 +17247,6 @@ __metadata: languageName: node linkType: hard -"rechoir@npm:^0.8.0": - version: 0.8.0 - resolution: "rechoir@npm:0.8.0" - dependencies: - resolve: "npm:^1.20.0" - checksum: 10c0/1a30074124a22abbd5d44d802dac26407fa72a0a95f162aa5504ba8246bc5452f8b1a027b154d9bdbabcd8764920ff9333d934c46a8f17479c8912e92332f3ff - languageName: node - linkType: hard - "redent@npm:^3.0.0": version: 3.0.0 resolution: "redent@npm:3.0.0" @@ -17431,12 +17364,12 @@ __metadata: languageName: node linkType: hard -"resedit@npm:^2.0.0": - version: 2.0.0 - resolution: "resedit@npm:2.0.0" +"resedit@npm:^2.0.3": + version: 2.0.3 + resolution: "resedit@npm:2.0.3" dependencies: - pe-library: "npm:^1.0.0" - checksum: 10c0/35c7dba2ad22282b1c6c351fd547709d411c4e14675edff35d4fe03b0b635dbbd55b66aa656548dfbb604220d4c6a8cc6abbd78e41ed4f89a5e1981331c9756d + pe-library: "npm:^1.0.1" + checksum: 10c0/d9ec8fc3900f3bf8fe818260149fdd6180b45d42f08d8bdf098a7a841d995363f44fd2d633948889e300a3ad8e7860b2d92fff9afcdcea21999994f5f526ffb0 languageName: node linkType: hard @@ -17484,7 +17417,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.1.6, resolve@npm:^1.10.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1": +"resolve@npm:^1.10.0, resolve@npm:^1.22.1": version: 1.22.1 resolution: "resolve@npm:1.22.1" dependencies: @@ -17497,6 +17430,19 @@ __metadata: languageName: node linkType: hard +"resolve@npm:^1.22.10": + version: 1.22.11 + resolution: "resolve@npm:1.22.11" + dependencies: + is-core-module: "npm:^2.16.1" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/f657191507530f2cbecb5815b1ee99b20741ea6ee02a59c57028e9ec4c2c8d7681afcc35febbd554ac0ded459db6f2d8153382c53a2f266cee2575e512674409 + languageName: node + linkType: hard + "resolve@npm:^1.22.4": version: 1.22.9 resolution: "resolve@npm:1.22.9" @@ -17536,7 +17482,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.1.6#optional!builtin, resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin": +"resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin": version: 1.22.1 resolution: "resolve@patch:resolve@npm%3A1.22.1#optional!builtin::version=1.22.1&hash=c3c19d" dependencies: @@ -17549,6 +17495,19 @@ __metadata: languageName: node linkType: hard +"resolve@patch:resolve@npm%3A^1.22.10#optional!builtin": + version: 1.22.11 + resolution: "resolve@patch:resolve@npm%3A1.22.11#optional!builtin::version=1.22.11&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.16.1" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/ee5b182f2e37cb1165465e58c6abc797fec0a80b5ba3231607beb4677db0c9291ac010c47cf092b6daa2b7f518d69a0e21888e7e2b633f68d501a874212a8c63 + languageName: node + linkType: hard + "resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": version: 1.22.9 resolution: "resolve@patch:resolve@npm%3A1.22.9#optional!builtin::version=1.22.9&hash=c3c19d" @@ -17597,6 +17556,15 @@ __metadata: languageName: node linkType: hard +"responselike@npm:^4.0.2": + version: 4.0.2 + resolution: "responselike@npm:4.0.2" + dependencies: + lowercase-keys: "npm:^3.0.0" + checksum: 10c0/8366407fc7f12466dd52682483a31dd6ca892481365caadea9a380196d8a6238650e064531087bebd25d7e9393f491efc2dad723fadc54db7a2b442dba8ef588 + languageName: node + linkType: hard + "restore-cursor@npm:^2.0.0": version: 2.0.0 resolution: "restore-cursor@npm:2.0.0" @@ -17714,7 +17682,7 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^4.20.0, rollup@npm:^4.43.0": +"rollup@npm:^4.43.0": version: 4.53.3 resolution: "rollup@npm:4.53.3" dependencies: @@ -17972,7 +17940,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.7.3": +"semver@npm:7.7.3, semver@npm:^7.7.1": version: 7.7.3 resolution: "semver@npm:7.7.3" bin: @@ -17990,7 +17958,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.1.3, semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3": +"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3": version: 7.6.3 resolution: "semver@npm:7.6.3" bin: @@ -18356,17 +18324,6 @@ __metadata: languageName: node linkType: hard -"socks-proxy-agent@npm:^7.0.0": - version: 7.0.0 - resolution: "socks-proxy-agent@npm:7.0.0" - dependencies: - agent-base: "npm:^6.0.2" - debug: "npm:^4.3.3" - socks: "npm:^2.6.2" - checksum: 10c0/b859f7eb8e96ec2c4186beea233ae59c02404094f3eb009946836af27d6e5c1627d1975a69b4d2e20611729ed543b6db3ae8481eb38603433c50d0345c987600 - languageName: node - linkType: hard - "socks-proxy-agent@npm:^8.0.3": version: 8.0.5 resolution: "socks-proxy-agent@npm:8.0.5" @@ -18378,16 +18335,6 @@ __metadata: languageName: node linkType: hard -"socks@npm:^2.6.2": - version: 2.7.1 - resolution: "socks@npm:2.7.1" - dependencies: - ip: "npm:^2.0.0" - smart-buffer: "npm:^4.2.0" - checksum: 10c0/43f69dbc9f34fc8220bc51c6eea1c39715ab3cfdb115d6e3285f6c7d1a603c5c75655668a5bbc11e3c7e2c99d60321fb8d7ab6f38cda6a215fadd0d6d0b52130 - languageName: node - linkType: hard - "socks@npm:^2.8.3": version: 2.8.7 resolution: "socks@npm:2.8.7" @@ -18586,12 +18533,10 @@ __metadata: languageName: node linkType: hard -"ssri@npm:^9.0.0": - version: 9.0.1 - resolution: "ssri@npm:9.0.1" - dependencies: - minipass: "npm:^3.1.1" - checksum: 10c0/c5d153ce03b5980d683ecaa4d805f6a03d8dc545736213803e168a1907650c46c08a4e5ce6d670a0205482b35c35713d9d286d9133bdd79853a406e22ad81f04 +"stable-hash-x@npm:^0.2.0": + version: 0.2.0 + resolution: "stable-hash-x@npm:0.2.0" + checksum: 10c0/c757df58366ee4bb266a9486b8932eab7c1ba730469eaf4b68d2dee404814e9f84089c44c9b5205f8c7d99a0ab036cce2af69139ce5ed44b635923c011a8aea8 languageName: node linkType: hard @@ -19082,7 +19027,7 @@ __metadata: languageName: node linkType: hard -"tar@npm:6.2.1, tar@npm:^6.0.5, tar@npm:^6.1.11, tar@npm:^6.2.1": +"tar@npm:6.2.1, tar@npm:^6.0.5": version: 6.2.1 resolution: "tar@npm:6.2.1" dependencies: @@ -19276,7 +19221,7 @@ __metadata: languageName: node linkType: hard -"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.15": +"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.14, tinyglobby@npm:^0.2.15": version: 0.2.15 resolution: "tinyglobby@npm:0.2.15" dependencies: @@ -19739,6 +19684,16 @@ __metadata: languageName: node linkType: hard +"typescript@npm:5.9.3": + version: 5.9.3 + resolution: "typescript@npm:5.9.3" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/6bd7552ce39f97e711db5aa048f6f9995b53f1c52f7d8667c1abdc1700c68a76a308f579cd309ce6b53646deb4e9a1be7c813a93baaf0a28ccd536a30270e1c5 + languageName: node + linkType: hard + "typescript@npm:>=3 < 6": version: 5.9.2 resolution: "typescript@npm:5.9.2" @@ -19749,13 +19704,13 @@ __metadata: languageName: node linkType: hard -"typescript@npm:~5.4.5": - version: 5.4.5 - resolution: "typescript@npm:5.4.5" +"typescript@patch:typescript@npm%3A5.9.3#optional!builtin": + version: 5.9.3 + resolution: "typescript@patch:typescript@npm%3A5.9.3#optional!builtin::version=5.9.3&hash=5786d5" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/2954022ada340fd3d6a9e2b8e534f65d57c92d5f3989a263754a78aba549f7e6529acc1921913560a4b816c46dce7df4a4d29f9f11a3dc0d4213bb76d043251e + checksum: 10c0/ad09fdf7a756814dce65bc60c1657b40d44451346858eea230e10f2e95a289d9183b6e32e5c11e95acc0ccc214b4f36289dcad4bf1886b0adb84d711d336a430 languageName: node linkType: hard @@ -19769,16 +19724,6 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@npm%3A~5.4.5#optional!builtin": - version: 5.4.5 - resolution: "typescript@patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/db2ad2a16ca829f50427eeb1da155e7a45e598eec7b086d8b4e8ba44e5a235f758e606d681c66992230d3fc3b8995865e5fd0b22a2c95486d0b3200f83072ec9 - languageName: node - linkType: hard - "uc.micro@npm:^2.0.0, uc.micro@npm:^2.1.0": version: 2.1.0 resolution: "uc.micro@npm:2.1.0" @@ -19807,13 +19752,6 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~5.26.4": - version: 5.26.5 - resolution: "undici-types@npm:5.26.5" - checksum: 10c0/bb673d7876c2d411b6eb6c560e0c571eef4a01c1c19925175d16e3a30c4c428181fb8d7ae802a261f283e4166a0ac435e2f505743aa9e45d893f9a3df017b501 - languageName: node - linkType: hard - "undici-types@npm:~6.20.0": version: 6.20.0 resolution: "undici-types@npm:6.20.0" @@ -19835,15 +19773,6 @@ __metadata: languageName: node linkType: hard -"unique-filename@npm:^2.0.0": - version: 2.0.1 - resolution: "unique-filename@npm:2.0.1" - dependencies: - unique-slug: "npm:^3.0.0" - checksum: 10c0/55d95cd670c4a86117ebc34d394936d712d43b56db6bc511f9ca00f666373818bf9f075fb0ab76bcbfaf134592ef26bb75aad20786c1ff1ceba4457eaba90fb8 - languageName: node - linkType: hard - "unique-filename@npm:^4.0.0": version: 4.0.0 resolution: "unique-filename@npm:4.0.0" @@ -19853,15 +19782,6 @@ __metadata: languageName: node linkType: hard -"unique-slug@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-slug@npm:3.0.0" - dependencies: - imurmurhash: "npm:^0.1.4" - checksum: 10c0/617240eb921af803b47d322d75a71a363dacf2e56c29ae5d1404fad85f64f4ec81ef10ee4fd79215d0202cbe1e5a653edb0558d59c9c81d3bd538c2d58e4c026 - languageName: node - linkType: hard - "unique-slug@npm:^5.0.0": version: 5.0.0 resolution: "unique-slug@npm:5.0.0" @@ -19959,6 +19879,73 @@ __metadata: languageName: node linkType: hard +"unrs-resolver@npm:^1.7.11": + version: 1.11.1 + resolution: "unrs-resolver@npm:1.11.1" + dependencies: + "@unrs/resolver-binding-android-arm-eabi": "npm:1.11.1" + "@unrs/resolver-binding-android-arm64": "npm:1.11.1" + "@unrs/resolver-binding-darwin-arm64": "npm:1.11.1" + "@unrs/resolver-binding-darwin-x64": "npm:1.11.1" + "@unrs/resolver-binding-freebsd-x64": "npm:1.11.1" + "@unrs/resolver-binding-linux-arm-gnueabihf": "npm:1.11.1" + "@unrs/resolver-binding-linux-arm-musleabihf": "npm:1.11.1" + "@unrs/resolver-binding-linux-arm64-gnu": "npm:1.11.1" + "@unrs/resolver-binding-linux-arm64-musl": "npm:1.11.1" + "@unrs/resolver-binding-linux-ppc64-gnu": "npm:1.11.1" + "@unrs/resolver-binding-linux-riscv64-gnu": "npm:1.11.1" + "@unrs/resolver-binding-linux-riscv64-musl": "npm:1.11.1" + "@unrs/resolver-binding-linux-s390x-gnu": "npm:1.11.1" + "@unrs/resolver-binding-linux-x64-gnu": "npm:1.11.1" + "@unrs/resolver-binding-linux-x64-musl": "npm:1.11.1" + "@unrs/resolver-binding-wasm32-wasi": "npm:1.11.1" + "@unrs/resolver-binding-win32-arm64-msvc": "npm:1.11.1" + "@unrs/resolver-binding-win32-ia32-msvc": "npm:1.11.1" + "@unrs/resolver-binding-win32-x64-msvc": "npm:1.11.1" + napi-postinstall: "npm:^0.3.0" + dependenciesMeta: + "@unrs/resolver-binding-android-arm-eabi": + optional: true + "@unrs/resolver-binding-android-arm64": + optional: true + "@unrs/resolver-binding-darwin-arm64": + optional: true + "@unrs/resolver-binding-darwin-x64": + optional: true + "@unrs/resolver-binding-freebsd-x64": + optional: true + "@unrs/resolver-binding-linux-arm-gnueabihf": + optional: true + "@unrs/resolver-binding-linux-arm-musleabihf": + optional: true + "@unrs/resolver-binding-linux-arm64-gnu": + optional: true + "@unrs/resolver-binding-linux-arm64-musl": + optional: true + "@unrs/resolver-binding-linux-ppc64-gnu": + optional: true + "@unrs/resolver-binding-linux-riscv64-gnu": + optional: true + "@unrs/resolver-binding-linux-riscv64-musl": + optional: true + "@unrs/resolver-binding-linux-s390x-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-musl": + optional: true + "@unrs/resolver-binding-wasm32-wasi": + optional: true + "@unrs/resolver-binding-win32-arm64-msvc": + optional: true + "@unrs/resolver-binding-win32-ia32-msvc": + optional: true + "@unrs/resolver-binding-win32-x64-msvc": + optional: true + checksum: 10c0/c91b112c71a33d6b24e5c708dab43ab80911f2df8ee65b87cd7a18fb5af446708e98c4b415ca262026ad8df326debcc7ca6a801b2935504d87fd6f0b9d70dce1 + languageName: node + linkType: hard + "upath@npm:2.0.1": version: 2.0.1 resolution: "upath@npm:2.0.1" @@ -20204,49 +20191,6 @@ __metadata: languageName: node linkType: hard -"vite@npm:^5.0.12": - version: 5.4.21 - resolution: "vite@npm:5.4.21" - dependencies: - esbuild: "npm:^0.21.3" - fsevents: "npm:~2.3.3" - postcss: "npm:^8.4.43" - rollup: "npm:^4.20.0" - peerDependencies: - "@types/node": ^18.0.0 || >=20.0.0 - less: "*" - lightningcss: ^1.21.0 - sass: "*" - sass-embedded: "*" - stylus: "*" - sugarss: "*" - terser: ^5.4.0 - dependenciesMeta: - fsevents: - optional: true - peerDependenciesMeta: - "@types/node": - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - bin: - vite: bin/vite.js - checksum: 10c0/468336a1409f728b464160cbf02672e72271fb688d0e605e776b74a89d27e1029509eef3a3a6c755928d8011e474dbf234824d054d07960be5f23cd176bc72de - languageName: node - linkType: hard - "vite@npm:^6.0.0 || ^7.0.0, vite@npm:^7.2.4": version: 7.2.4 resolution: "vite@npm:7.2.4" @@ -20939,13 +20883,6 @@ __metadata: languageName: node linkType: hard -"xmlbuilder@npm:^9.0.7": - version: 9.0.7 - resolution: "xmlbuilder@npm:9.0.7" - checksum: 10c0/aa3c644a13e561abd50e4971ab6963261de703cc0405994777db9129c40d76dba9c0a2c6fa04a7de474a8428f7b329e6f85fcf84990f9cb4ceb2c345a57a4eef - languageName: node - linkType: hard - "xtend@npm:^4.0.0, xtend@npm:~4.0.1": version: 4.0.2 resolution: "xtend@npm:4.0.2" @@ -21028,16 +20965,7 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^2.4.5": - version: 2.8.2 - resolution: "yaml@npm:2.8.2" - bin: - yaml: bin.mjs - checksum: 10c0/703e4dc1e34b324aa66876d63618dcacb9ed49f7e7fe9b70f1e703645be8d640f68ab84f12b86df8ac960bac37acf5513e115de7c970940617ce0343c8c9cd96 - languageName: node - linkType: hard - -"yaml@npm:^2.6.0": +"yaml@npm:^2.4.5, yaml@npm:^2.6.0": version: 2.8.1 resolution: "yaml@npm:2.8.1" bin: @@ -21067,6 +20995,13 @@ __metadata: languageName: node linkType: hard +"yargs-parser@npm:^22.0.0": + version: 22.0.0 + resolution: "yargs-parser@npm:22.0.0" + checksum: 10c0/cb7ef81759c4271cb1d96b9351dbbc9a9ce35d3e1122d2b739bf6c432603824fa02c67cc12dcef6ea80283379d63495686e8f41cc7b06c6576e792aba4d33e1c + languageName: node + linkType: hard + "yargs@npm:17.7.2, yargs@npm:^17.7.2": version: 17.7.2 resolution: "yargs@npm:17.7.2"