diff --git a/.eslintignore b/.eslintignore index f7b1d78263..ac8c1e5dca 100644 --- a/.eslintignore +++ b/.eslintignore @@ -7,3 +7,4 @@ packages/*/*/index.ts packages/**/bad.js tmpl packages/api/core/helper/dynamic-import.js +packages/api/core/spec/fixture/api-tester/ diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2bc06b1852..1dc32f1b01 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -208,6 +208,7 @@ jobs: run: | mkdir -p ./reports/out yarn test:slow --reporter=default --reporter=junit --outputFile="./reports/out/test_output.xml" + yarn test:verdaccio --reporter=default --reporter=junit --outputFile="./reports/out/test_output_verdaccio.xml" required-ci: needs: diff --git a/.gitignore b/.gitignore index 4b1ba76cbd..e1392129e3 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,7 @@ packages/**/.swc packages/api/core/spec/fixture/app-with-scoped-name/out/make packages/plugin/webpack/spec/fixtures/apps/native-modules/package-lock.json packages/plugin/fuses/spec/fixture/app +!packages/plugin/fuses/spec/fixture/app/package.json.tmpl .links reports packages/**/typedoc.json @@ -42,3 +43,6 @@ packages/**/typedoc.json .nx/workspace-data .cursor/rules/nx-rules.mdc .github/instructions/nx.instructions.md + +tools/verdaccio/storage +tools/verdaccio/htpasswd diff --git a/.prettierignore b/.prettierignore index 1694c4a684..f8c76d3a6b 100644 --- a/.prettierignore +++ b/.prettierignore @@ -9,6 +9,7 @@ packages/*/*/index.ts packages/*/*/README.md packages/*/*/tsconfig.json packages/*/*/typedoc.json +packages/api/core/spec/fixture/api-tester/package.json packages/api/core/spec/fixture/bad_external_forge_config/bad.js packages/plugin/webpack/spec/**/.webpack .links diff --git a/package.json b/package.json index 88892fd78c..56a6cef6fd 100644 --- a/package.json +++ b/package.json @@ -19,9 +19,10 @@ "lint": "npm run lint:js && npm run lint:markdown && npm run lint:markdown-js && npm run lint:markdown-links", "lint:fix": "prettier --write . --experimental-cli && eslint --fix . --cache", "prepack": "yarn build", - "test": "xvfb-maybe vitest run --project fast --project slow", + "test": "xvfb-maybe vitest run --project fast --project slow --project slow-verdaccio", "test:fast": "xvfb-maybe vitest run --project fast", "test:slow": "xvfb-maybe vitest run --project slow", + "test:verdaccio": "ts-node tools/verdaccio/spawn-verdaccio.ts xvfb-maybe vitest run --project slow-verdaccio", "test:clear": "ts-node tools/test-clear", "update:lockfile-fixtures": "ts-node tools/regenerate-lockfile-fixtures.ts", "postinstall": "husky install && node -e \"try { fs.rmSync('node_modules/.bin/*.ps1', { recursive: true, force: true }) } catch (e) {}\" && ts-node ./tools/gen-tsconfigs.ts && ts-node ./tools/gen-ts-glue.ts" @@ -101,6 +102,8 @@ "@types/which": "^2.0.0", "@typescript-eslint/eslint-plugin": "^8.0.0", "@typescript-eslint/parser": "^8.0.0", + "@yarnpkg/types": "^4.0.1", + "electron": "^39.2.6", "electron-installer-common": "^0.10.2", "eslint": "^8.56.0", "eslint-config-prettier": "^10.0.1", @@ -116,10 +119,12 @@ "minimist": "^1.2.6", "msw": "^2.7.0", "prettier": "^3.6.2", + "ref-napi": "^3.0.3", "syncpack": "^11.2.1", "ts-node": "^10.0.0", "typedoc": "0.25.13", "typescript": "~5.4.5", + "verdaccio": "^6.2.4", "vitest": "^3.1.3", "xvfb-maybe": "^0.2.1", "yaml-hook": "^1.0.0" @@ -154,6 +159,9 @@ "@bitdisaster/exe-icon-extractor": { "built": true }, + "electron": { + "built": true + }, "electron-winstaller": { "built": true }, diff --git a/packages/api/core/spec/fixture/api-tester/forge.config.js b/packages/api/core/spec/fixture/api-tester/forge.config.js new file mode 100644 index 0000000000..71b001e601 --- /dev/null +++ b/packages/api/core/spec/fixture/api-tester/forge.config.js @@ -0,0 +1,18 @@ +module.exports = { + packagerConfig: { + asar: true, + }, + rebuildConfig: {}, + makers: [ + { + name: '@electron-forge/maker-zip', + platforms: ['darwin', 'linux', 'win32'], + }, + ], + plugins: [ + { + name: '@electron-forge/plugin-auto-unpack-natives', + config: {}, + }, + ], +}; diff --git a/packages/api/core/spec/fixture/api-tester/package.json b/packages/api/core/spec/fixture/api-tester/package.json new file mode 100644 index 0000000000..d6223bf49d --- /dev/null +++ b/packages/api/core/spec/fixture/api-tester/package.json @@ -0,0 +1,42 @@ +{ + "name": "api-tester", + "productName": "api-tester", + "version": "1.0.0", + "description": "Test Electron application for Forge API tests", + "main": "src/index.js", + "scripts": { + "start": "electron-forge start", + "package": "electron-forge package", + "make": "electron-forge make" + }, + "keywords": [], + "author": "Test Author", + "license": "MIT", + "homepage": "http://www.electronjs.org/", + "devDependencies": { + "@electron-forge/cli": "file:../../../../../api/cli", + "@electron-forge/core": "file:../../../../../api/core", + "@electron-forge/core-utils": "file:../../../../../utils/core-utils", + "@electron-forge/maker-appx": "file:../../../../../maker/appx", + "@electron-forge/maker-base": "file:../../../../../maker/base", + "@electron-forge/maker-deb": "file:../../../../../maker/deb", + "@electron-forge/maker-dmg": "file:../../../../../maker/dmg", + "@electron-forge/maker-flatpak": "file:../../../../../maker/flatpak", + "@electron-forge/maker-msix": "file:../../../../../maker/msix", + "@electron-forge/maker-pkg": "file:../../../../../maker/pkg", + "@electron-forge/maker-rpm": "file:../../../../../maker/rpm", + "@electron-forge/maker-snap": "file:../../../../../maker/snap", + "@electron-forge/maker-squirrel": "file:../../../../../maker/squirrel", + "@electron-forge/maker-wix": "file:../../../../../maker/wix", + "@electron-forge/maker-zip": "file:../../../../../maker/zip", + "@electron-forge/plugin-auto-unpack-natives": "file:../../../../../plugin/auto-unpack-natives", + "@electron-forge/plugin-base": "file:../../../../../plugin/base", + "@electron-forge/plugin-fuses": "file:../../../../../plugin/fuses", + "@electron-forge/shared-types": "file:../../../../../utils/types", + "@electron/fuses": "file:../../../../../../node_modules/@electron/fuses", + "electron": "file:../../../../../../node_modules/electron" + }, + "config": { + "forge": "./forge.config.js" + } +} \ No newline at end of file diff --git a/packages/api/core/spec/fixture/api-tester/src/index.js b/packages/api/core/spec/fixture/api-tester/src/index.js new file mode 100644 index 0000000000..bac729e29d --- /dev/null +++ b/packages/api/core/spec/fixture/api-tester/src/index.js @@ -0,0 +1,24 @@ +const { app, BrowserWindow } = require('electron'); + +const createWindow = () => { + const mainWindow = new BrowserWindow(); + + // and load the index.html of the app. + mainWindow.loadURL('https://electronjs.org'); +}; + +app.whenReady().then(() => { + createWindow(); + + app.on('activate', () => { + if (BrowserWindow.getAllWindows().length === 0) { + createWindow(); + } + }); +}); + +app.on('window-all-closed', () => { + if (process.platform !== 'darwin') { + app.quit(); + } +}); diff --git a/packages/api/core/spec/fixture/custom_init/index.js b/packages/api/core/spec/fixture/custom_init/index.js index 16f847f7e0..21340c53b8 100644 --- a/packages/api/core/spec/fixture/custom_init/index.js +++ b/packages/api/core/spec/fixture/custom_init/index.js @@ -5,8 +5,8 @@ const fs = require('fs-extra'); module.exports = { requiredForgeVersion: '>= 6.0.0-beta.1', - dependencies: [...baseTemplate.dependencies, 'debug'], - devDependencies: [...baseTemplate.devDependencies, 'lodash'], + dependencies: [...baseTemplate.dependencies, 'semver@7.7.3'], + devDependencies: [...baseTemplate.devDependencies, '@types/semver@7.7.1'], initializeTemplate: async (directory) => { const tasks = await baseTemplate.initializeTemplate(directory, {}); return [ diff --git a/packages/api/core/spec/slow/api.slow.spec.ts b/packages/api/core/spec/slow/api.slow.spec.ts deleted file mode 100644 index be7a356d69..0000000000 --- a/packages/api/core/spec/slow/api.slow.spec.ts +++ /dev/null @@ -1,698 +0,0 @@ -import assert from 'node:assert'; -import { execSync } from 'node:child_process'; -import fs from 'node:fs'; -import path from 'node:path'; - -import { - PACKAGE_MANAGERS, - spawnPackageManager, -} from '@electron-forge/core-utils'; -import { createDefaultCertificate } from '@electron-forge/maker-appx'; -import { - ForgeConfig, - IForgeResolvableMaker, -} from '@electron-forge/shared-types'; -import { - ensureTestDirIsNonexistent, - expectLintToPass, -} from '@electron-forge/test-utils'; -import { readMetadata } from 'electron-installer-common'; -import semver from 'semver'; -import { afterAll, beforeAll, beforeEach, describe, expect, it } from 'vitest'; - -import { api, InitOptions } from '../../src/api/index'; -import { installDependencies } from '../../src/util/install-dependencies'; -import { readRawPackageJson } from '../../src/util/read-package-json'; - -type BeforeInitFunction = () => void; -type PackageJSON = Record & { - config: { - forge: ForgeConfig; - }; - dependencies: Record; -}; - -async function updatePackageJSON( - dir: string, - packageJSONUpdater: (packageJSON: PackageJSON) => Promise, -) { - const packageJSON = await readRawPackageJson(dir); - await packageJSONUpdater(packageJSON); - await fs.promises.writeFile( - path.resolve(dir, 'package.json'), - JSON.stringify(packageJSON), - 'utf-8', - ); -} - -// TODO: move more tests outside of the describe.each block -// if the actual package manager doesn't matter for the test -describe('init params', () => { - let dir: string; - describe('init (with electronVersion)', () => { - beforeEach(async () => { - dir = await ensureTestDirIsNonexistent(); - - return async () => { - await fs.promises.rm(dir, { recursive: true, force: true }); - }; - }); - - it('can define a specific Electron version with a version number', async () => { - await api.init({ - dir, - electronVersion: 'v38.0.0', - }); - const packageJSON = await import(path.resolve(dir, 'package.json')); - expect(packageJSON.devDependencies.electron).toEqual('38.0.0'); - }); - - it('can define a specific Electron nightly version with a version number', async () => { - await api.init({ - dir, - electronVersion: '40.0.0-nightly.20251020', - }); - const packageJSON = await import(path.resolve(dir, 'package.json')); - expect( - semver.valid(packageJSON.devDependencies['electron-nightly']), - ).not.toBeNull(); - expect(packageJSON.devDependencies.electron).not.toBeDefined(); - }); - - it('can define a specific Electron prerelease version with the beta tag', async () => { - await api.init({ - dir, - electronVersion: 'beta', - }); - const packageJSON = await import(path.resolve(dir, 'package.json')); - const prereleaseTag = semver.prerelease( - packageJSON.devDependencies.electron, - ); - expect(prereleaseTag).toEqual( - expect.arrayContaining([expect.stringMatching(/alpha|beta/)]), - ); - }); - - it('can define a specific Electron nightly version with the nightly tag', async () => { - await api.init({ - dir, - electronVersion: 'nightly', - }); - const packageJSON = await import(path.resolve(dir, 'package.json')); - expect( - semver.valid(packageJSON.devDependencies['electron-nightly']), - ).not.toBeNull(); - expect(packageJSON.devDependencies.electron).not.toBeDefined(); - }); - }); -}); - -describe.each([ - PACKAGE_MANAGERS['npm'], - PACKAGE_MANAGERS['yarn'], - PACKAGE_MANAGERS['pnpm'], -])(`init (with $executable)`, (pm) => { - let dir: string; - - beforeAll(async () => { - const originalCorepackStrict = process.env.COREPACK_ENABLE_STRICT; - if (pm.executable === 'pnpm') { - // temporarily disable corepack to enable pnpm to set links - process.env.COREPACK_ENABLE_STRICT = '0'; - - await spawnPackageManager( - pm, - 'config set node-linker hoisted'.split(' '), - ); - } - - return async () => { - // Unlink packages created during tests (syntax varies by package manager) - if (pm.executable === 'yarn') { - // yarn unlink --all removes all linked packages - await spawnPackageManager(pm, ['unlink', '--all']); - } else if (pm.executable === 'pnpm') { - // pnpm doesn't support --all, and requires Corepack bypass - await spawnPackageManager(pm, ['unlink']); - } - delete process.env.NODE_INSTALLER; - if (originalCorepackStrict === undefined) { - delete process.env.COREPACK_ENABLE_STRICT; - } else { - process.env.COREPACK_ENABLE_STRICT = originalCorepackStrict; - } - }; - }); - - const beforeInitTest = ( - params?: Partial, - beforeInit?: BeforeInitFunction, - ) => { - beforeAll(async () => { - dir = await ensureTestDirIsNonexistent(); - if (beforeInit) { - beforeInit(); - } - await api.init({ ...params, dir }); - }); - }; - - describe('init (with skipGit)', () => { - beforeAll(async () => { - dir = await ensureTestDirIsNonexistent(); - - return async () => { - await fs.promises.rm(dir, { recursive: true, force: true }); - }; - }); - - it('should not initialize a git repo if passed the skipGit option', async () => { - await api.init({ - dir, - skipGit: true, - }); - expect(fs.existsSync(path.join(dir, '.git'))).toEqual(false); - }); - }); - - describe('init', () => { - beforeInitTest(); - - afterAll(() => fs.promises.rm(dir, { recursive: true, force: true })); - - it('should fail in initializing an already initialized directory', async () => { - await expect(api.init({ dir })).rejects.toThrow( - `The specified path: "${dir}" is not empty. Please ensure it is empty before initializing a new project`, - ); - }); - - it('should initialize an already initialized directory when forced to', async () => { - await api.init({ - dir, - force: true, - }); - }); - - it('should create a new folder with a npm module inside', async () => { - expect( - fs.existsSync(dir), - 'the target dir should have been created', - ).toEqual(true); - expect(fs.existsSync(path.join(dir, 'package.json'))).toEqual(true); - expect(fs.existsSync(path.join(dir, '.git'))).toEqual(true); - expect( - fs.existsSync(path.resolve(dir, 'node_modules/electron')), - 'electron should exist', - ).toEqual(true); - expect( - fs.existsSync( - path.resolve(dir, 'node_modules/electron-squirrel-startup'), - ), - 'electron-squirrel-startup should exist', - ).toEqual(true); - expect( - fs.existsSync(path.resolve(dir, 'node_modules/@electron-forge/cli')), - '@electron-forge/cli should exist', - ).toEqual(true); - expect(fs.existsSync(path.join(dir, 'forge.config.js'))).toEqual(true); - }); - - it('should contain `private:true` in package.json', async () => { - const packageJSONString = await fs.promises.readFile( - path.join(dir, 'package.json'), - 'utf-8', - ); - const packageJSON = JSON.parse(packageJSONString); - expect(packageJSON).toHaveProperty('private', true); - }); - - describe('lint', () => { - it('should initially pass the linting process', () => - expectLintToPass(dir)); - }); - }); - - describe.skip('init with CI files enabled', () => { - beforeInitTest({ copyCIFiles: true }); - it.todo('should copy over the CI config files correctly'); - }); - - describe('init (with custom templater)', () => { - beforeInitTest({ - template: path.resolve(__dirname, '../fixture/custom_init'), - }); - - it('should add custom dependencies', async () => { - const packageJSON = await import(path.resolve(dir, 'package.json')); - expect(packageJSON.dependencies).toHaveProperty('debug'); - }); - - it('should add custom devDependencies', async () => { - const packageJSON = await import(path.resolve(dir, 'package.json')); - expect(packageJSON.devDependencies).toHaveProperty('lodash'); - }); - - it('should create dot files correctly', async () => { - expect( - fs.existsSync(dir), - 'the target dir should have been created', - ).toEqual(true); - expect(fs.existsSync(path.join(dir, '.bar'))).toEqual(true); - }); - - it('should create deep files correctly', async () => { - expect(fs.existsSync(path.join(dir, 'src/foo.js'))).toBe(true); - expect(fs.existsSync(path.join(dir, 'src/index.html'))).toBe(true); - }); - - describe('lint', () => { - it('should initially pass the linting process', () => - expectLintToPass(dir)); - }); - - afterAll(async () => { - await fs.promises.rm(dir, { recursive: true, force: true }); - execSync('npm unlink -g', { - cwd: path.resolve(__dirname, '../fixture/custom_init'), - }); - }); - }); - - describe('init (with a templater sans required Forge version)', () => { - beforeAll(async () => { - dir = await ensureTestDirIsNonexistent(); - - return async () => { - await fs.promises.rm(dir, { recursive: true, force: true }); - }; - }); - - it('should fail in initializing', async () => { - await expect( - api.init({ - dir, - template: path.resolve( - __dirname, - '../fixture/template-sans-forge-version', - ), - }), - ).rejects.toThrow(/it does not specify its required Forge version\.$/); - }); - }); - - describe('init (with a templater with a non-matching Forge version)', () => { - beforeAll(async () => { - dir = await ensureTestDirIsNonexistent(); - - return async () => { - await fs.promises.rm(dir, { recursive: true, force: true }); - }; - }); - - it('should fail in initializing', async () => { - await expect( - api.init({ - dir, - template: path.resolve( - __dirname, - '../fixture/template-nonmatching-forge-version', - ), - }), - ).rejects.toThrow( - /is not compatible with this version of Electron Forge/, - ); - }); - }); - - describe('init (with a nonexistent templater)', () => { - beforeAll(async () => { - dir = await ensureTestDirIsNonexistent(); - - return async () => { - await fs.promises.rm(dir, { recursive: true, force: true }); - }; - }); - - it('should fail in initializing', async () => { - await expect( - api.init({ - dir, - template: 'does-not-exist', - }), - ).rejects.toThrow('Failed to locate custom template'); - }); - }); - - describe('import', () => { - beforeEach(async () => { - dir = await ensureTestDirIsNonexistent(); - await fs.promises.mkdir(dir); - execSync( - `git clone https://github.com/electron/minimal-repro.git . --quiet`, - { - cwd: dir, - }, - ); - - return async () => { - await fs.promises.rm(dir, { recursive: true, force: true }); - }; - }); - - it('creates forge.config.js and can successfully package the application', async () => { - await updatePackageJSON(dir, async (packageJSON) => { - packageJSON.name = 'Name'; - packageJSON.productName = 'ProductName'; - }); - - await api.import({ dir }); - - expect(fs.existsSync(path.join(dir, 'forge.config.js'))).toEqual(true); - - await api.package({ dir }); - - const outDirContents = fs.readdirSync(path.join(dir, 'out')); - expect(outDirContents).toHaveLength(1); - expect(outDirContents[0]).toEqual( - `ProductName-${process.platform}-${process.arch}`, - ); - }); - }); - - describe('Electron Forge API', () => { - let dir: string; - - describe('after init', () => { - let devCert: string; - - beforeAll(async () => { - dir = path.join( - await ensureTestDirIsNonexistent(), - 'electron-forge-test', - ); - await api.init({ dir }); - - await updatePackageJSON(dir, async (packageJSON) => { - packageJSON.name = 'testapp'; - packageJSON.version = '1.0.0-beta.1'; - packageJSON.productName = 'Test-App'; - packageJSON.config = packageJSON.config || {}; - packageJSON.config.forge = { - ...packageJSON.config.forge, - packagerConfig: { - asar: false, - }, - }; - if (process.platform === 'win32') { - await fs.promises.copyFile( - path.join(__dirname, '..', 'fixture', 'bogus-private-key.pvk'), - path.join(dir, 'default.pvk'), - ); - devCert = await createDefaultCertificate('CN=Test Author', { - certFilePath: dir, - }); - } else if (process.platform === 'linux') { - packageJSON.config.forge.packagerConfig = { - ...packageJSON.config.forge.packagerConfig, - executableName: 'testapp', - }; - } - packageJSON.homepage = 'http://www.example.com/'; - packageJSON.author = 'Test Author'; - }); - - return async () => { - await fs.promises.rm(dir, { recursive: true, force: true }); - }; - }); - - it('throws an error when all is set', async () => { - await updatePackageJSON(dir, async (packageJSON) => { - assert(packageJSON.config.forge.packagerConfig); - packageJSON.config.forge.packagerConfig.all = true; - }); - await expect(api.package({ dir })).rejects.toThrow( - /packagerConfig\.all is not supported by Electron Forge/, - ); - await updatePackageJSON(dir, async (packageJSON) => { - assert(packageJSON.config.forge.packagerConfig); - delete packageJSON.config.forge.packagerConfig.all; - }); - }); - - it('can package to outDir without errors', async () => { - const outDir = `${dir}/foo`; - - expect(fs.existsSync(outDir)).toEqual(false); - - await api.package({ dir, outDir }); - - expect(fs.existsSync(outDir)).toEqual(true); - }); - - it('can make from custom outDir without errors', async () => { - await updatePackageJSON(dir, async (packageJSON) => { - // eslint-disable-next-line n/no-missing-require - packageJSON.config.forge.makers = [ - { - name: require.resolve('@electron-forge/maker-zip'), - } as IForgeResolvableMaker, - ]; - }); - - await api.make({ dir, skipPackage: true, outDir: `${dir}/foo` }); - - // Cleanup the custom outDir - await fs.promises.rm(path.resolve(dir, 'foo'), { - recursive: true, - force: true, - }); - }); - - describe('with prebuilt native module deps installed', () => { - beforeAll(async () => { - await installDependencies(pm, dir, ['ref-napi']); - - return async () => { - await fs.promises.rm(path.resolve(dir, 'node_modules/ref-napi'), { - recursive: true, - force: true, - }); - await updatePackageJSON(dir, async (packageJSON) => { - delete packageJSON.dependencies['ref-napi']; - }); - }; - }); - - it('can package without errors', async () => { - await api.package({ dir }); - }); - }); - - it('can package without errors', async () => { - await updatePackageJSON(dir, async (packageJSON) => { - assert(packageJSON.config.forge.packagerConfig); - packageJSON.config.forge.packagerConfig.asar = true; - }); - - await api.package({ dir }); - }); - - describe('after package', () => { - it('should have deleted the forge config from the packaged app', async () => { - const cleanPackageJSON = await readMetadata({ - src: path.resolve( - dir, - 'out', - `Test-App-${process.platform}-${process.arch}`, - ), - logger: console.error, - }); - expect(cleanPackageJSON).not.toHaveProperty('config.forge'); - }); - - it('should not affect the actual forge config', async () => { - const normalPackageJSON = await readRawPackageJson(dir); - expect(normalPackageJSON).toHaveProperty('config.forge'); - }); - - if (process.platform !== 'win32') { - process.env.DISABLE_SQUIRREL_TEST = 'true'; - } - - function getMakers(good: boolean) { - const allMakers = [ - '@electron-forge/maker-appx', - '@electron-forge/maker-deb', - '@electron-forge/maker-dmg', - '@electron-forge/maker-flatpak', - '@electron-forge/maker-msix', - '@electron-forge/maker-rpm', - '@electron-forge/maker-snap', - '@electron-forge/maker-squirrel', - '@electron-forge/maker-wix', - '@electron-forge/maker-zip', - ]; - return allMakers - .map((maker) => require.resolve(maker)) - .filter((makerPath) => { - // eslint-disable-next-line @typescript-eslint/no-require-imports - const MakerClass = require(makerPath).default; - const maker = new MakerClass(); - return ( - maker.isSupportedOnCurrentPlatform() === good && - maker.externalBinariesExist() === good - ); - }) - .map((makerPath) => () => { - const makerDefinition = { - name: makerPath, - platforms: [process.platform], - config: { - devCert, - }, - }; - - if (process.platform === 'win32') { - ( - makerDefinition.config as Record - ).makeVersionWinStoreCompatible = true; - } - - return makerDefinition; - }); - } - - const goodMakers = getMakers(true); - const badMakers = getMakers(false); - - const testMakeTarget = function testMakeTarget( - target: () => { name: string }, - shouldPass: boolean, - // eslint-disable-next-line @typescript-eslint/no-explicit-any - ...options: any[] - ) { - describe(`make (with target=${target().name})`, async () => { - beforeAll(async () => { - await updatePackageJSON(dir, async (packageJSON) => { - packageJSON.config.forge.makers = [ - target() as IForgeResolvableMaker, - ]; - }); - }); - - for (const optionsFetcher of options) { - if (shouldPass) { - it(`successfully makes for config: ${JSON.stringify(optionsFetcher())}`, async () => { - const outputs = await api.make(optionsFetcher()); - for (const outputResult of outputs) { - for (const output of outputResult.artifacts) { - expect(fs.existsSync(output)).toEqual(true); - expect( - output.startsWith(path.resolve(dir, 'out', 'make')), - ).toEqual(true); - } - } - }); - } else { - it(`fails for config: ${JSON.stringify(optionsFetcher())}`, async () => { - await expect(api.make(optionsFetcher())).rejects.toThrow(); - }); - } - } - }); - }; - - const targetOptionFetcher = () => ({ dir, skipPackage: true }); - for (const maker of goodMakers) { - testMakeTarget(maker, true, targetOptionFetcher); - } - - for (const maker of badMakers) { - testMakeTarget(maker, false, targetOptionFetcher); - } - - describe('make', () => { - it('throws an error when given an unrecognized platform', async () => { - await expect(api.make({ dir, platform: 'dos' })).rejects.toThrow( - /invalid platform/, - ); - }); - - it("throws an error when the specified maker doesn't support the current platform", async () => { - const makerPath = path.resolve( - __dirname, - '../fixture/maker-unsupported', - ); - await expect( - api.make({ - dir, - overrideTargets: [ - { - name: makerPath, - } as IForgeResolvableMaker, - ], - skipPackage: true, - }), - ).rejects.toThrow(/the maker declared that it cannot run/); - }); - - it("throws an error when the specified maker doesn't implement isSupportedOnCurrentPlatform()", async () => { - const makerPath = path.resolve( - __dirname, - '../fixture/maker-incompatible', - ); - await expect( - api.make({ - dir, - overrideTargets: [ - { - name: makerPath, - } as IForgeResolvableMaker, - ], - skipPackage: true, - }), - ).rejects.toThrow(/incompatible with this version/); - }); - - it('throws an error when no makers are configured for the given platform', async () => { - await expect( - api.make({ - dir, - overrideTargets: [ - { - name: path.resolve( - __dirname, - '../fixture/maker-wrong-platform', - ), - } as IForgeResolvableMaker, - ], - platform: 'linux', - skipPackage: true, - }), - ).rejects.toThrow( - 'Could not find any make targets configured for the "linux" platform.', - ); - }); - - it.runIf(process.platform === 'darwin')( - 'can make for the MAS platform successfully', - async () => { - await expect( - api.make({ - dir, - // eslint-disable-next-line n/no-missing-require - overrideTargets: [ - require.resolve('@electron-forge/maker-zip'), - require.resolve('@electron-forge/maker-dmg'), - ], - platform: 'mas', - }), - ).resolves.toHaveLength(2); - }, - ); - }); - }); - }); - }); -}); diff --git a/packages/api/core/spec/slow/import.slow.spec.ts b/packages/api/core/spec/slow/import.slow.spec.ts new file mode 100644 index 0000000000..447dff7817 --- /dev/null +++ b/packages/api/core/spec/slow/import.slow.spec.ts @@ -0,0 +1,52 @@ +import { execSync } from 'node:child_process'; +import fs from 'node:fs'; +import path from 'node:path'; + +import { + ensureTestDirIsNonexistent, + updatePackageJSON, +} from '@electron-forge/test-utils'; +import { beforeEach, describe, expect, it } from 'vitest'; + +import { api } from '../../src/api/index'; + +describe('import', () => { + let dir: string; + beforeEach(async () => { + dir = await ensureTestDirIsNonexistent(); + await fs.promises.mkdir(dir); + execSync( + `git clone https://github.com/electron/minimal-repro.git . --quiet`, + { + cwd: dir, + }, + ); + + return async () => { + await fs.promises.rm(dir, { recursive: true, force: true }); + }; + }); + + it('creates forge.config.js and can successfully package the application', async () => { + await updatePackageJSON(dir, async (packageJSON) => { + packageJSON.name = 'Name'; + packageJSON.productName = 'ProductName'; + + return packageJSON; + }); + + // FIXME: the install here will use the production version of Electron Forge + // instead of the contents of this monorepo. + await api.import({ dir }); + + expect(fs.existsSync(path.join(dir, 'forge.config.js'))).toEqual(true); + + await api.package({ dir }); + + const outDirContents = fs.readdirSync(path.join(dir, 'out')); + expect(outDirContents).toHaveLength(1); + expect(outDirContents[0]).toEqual( + `ProductName-${process.platform}-${process.arch}`, + ); + }); +}); diff --git a/packages/api/core/spec/slow/init.slow.verdaccio.spec.ts b/packages/api/core/spec/slow/init.slow.verdaccio.spec.ts new file mode 100644 index 0000000000..df6ce43417 --- /dev/null +++ b/packages/api/core/spec/slow/init.slow.verdaccio.spec.ts @@ -0,0 +1,301 @@ +import fs from 'node:fs'; +import path from 'node:path'; + +import { + ensureTestDirIsNonexistent, + expectLintToPass, +} from '@electron-forge/test-utils'; +import semver from 'semver'; +import { beforeAll, beforeEach, describe, expect, it } from 'vitest'; + +import { api } from '../../src/api/index'; + +describe('init', () => { + let dir: string; + + beforeEach(async () => { + dir = await ensureTestDirIsNonexistent(); + return async () => { + await fs.promises.rm(dir, { recursive: true, force: true }); + }; + }); + + it('works (base case)', async () => { + await api.init({ + dir, + }); + expect(fs.existsSync(dir)).toEqual(true); + expect(fs.existsSync(path.join(dir, 'package.json'))).toEqual(true); + expect(fs.existsSync(path.join(dir, '.git'))).toEqual(true); + expect(fs.existsSync(path.resolve(dir, 'node_modules/electron'))).toEqual( + true, + ); + expect( + fs.existsSync( + path.resolve(dir, 'node_modules/electron-squirrel-startup'), + ), + ).toEqual(true); + expect( + fs.existsSync(path.resolve(dir, 'node_modules/@electron-forge/cli')), + ).toEqual(true); + expect(fs.existsSync(path.join(dir, 'forge.config.js'))).toEqual(true); + }); + + describe('with electronVersion', () => { + it('can define a specific Electron version with a version number', async () => { + await api.init({ + dir, + electronVersion: 'v38.0.0', + }); + const packageJSON = await import(path.resolve(dir, 'package.json')); + expect(packageJSON.devDependencies.electron).toEqual('38.0.0'); + }); + + it('can define a specific Electron nightly version with a version number', async () => { + await api.init({ + dir, + electronVersion: '40.0.0-nightly.20251020', + }); + const packageJSON = await import(path.resolve(dir, 'package.json')); + expect( + semver.valid(packageJSON.devDependencies['electron-nightly']), + ).not.toBeNull(); + expect(packageJSON.devDependencies.electron).not.toBeDefined(); + }); + + it('can define a specific Electron prerelease version with the beta tag', async () => { + await api.init({ + dir, + electronVersion: 'beta', + }); + const packageJSON = await import(path.resolve(dir, 'package.json')); + const prereleaseTag = semver.prerelease( + packageJSON.devDependencies.electron, + ); + expect(prereleaseTag).toEqual( + expect.arrayContaining([expect.stringMatching(/alpha|beta/)]), + ); + }); + + it('can define a specific Electron nightly version with the nightly tag', async () => { + await api.init({ + dir, + electronVersion: 'nightly', + }); + const packageJSON = await import(path.resolve(dir, 'package.json')); + expect( + semver.valid(packageJSON.devDependencies['electron-nightly']), + ).not.toBeNull(); + expect(packageJSON.devDependencies.electron).not.toBeDefined(); + }); + }); + + describe('with skipGit', () => { + it('should not initialize a git repo if passed the skipGit option', async () => { + await api.init({ + dir, + skipGit: true, + }); + expect(fs.existsSync(path.join(dir, '.git'))).toEqual(false); + }); + }); + + describe('with custom template', () => { + it('adds all files correctly', async () => { + await api.init({ + dir, + template: path.resolve(__dirname, '../fixture/custom_init'), + }); + + // folder exists + expect(fs.existsSync(dir)).toEqual(true); + + // check package.json + expect(fs.existsSync(path.join(dir, 'package.json'))).toEqual(true); + const packageJSON = JSON.parse( + fs.readFileSync(path.join(dir, 'package.json'), 'utf-8'), + ); + + // dependencies installed + expect(packageJSON.dependencies).toHaveProperty('semver'); + expect(packageJSON.dependencies.semver).toEqual('7.7.3'); + // devDependencies installed + expect(packageJSON.devDependencies).toHaveProperty('@types/semver'); + expect(packageJSON.devDependencies['@types/semver']).toEqual('7.7.1'); + + // dotfiles copied over + expect(fs.existsSync(path.join(dir, '.bar'))).toEqual(true); + + // deep files copied over + expect(fs.existsSync(path.join(dir, 'src/foo.js'))).toBe(true); + expect(fs.existsSync(path.join(dir, 'src/index.html'))).toBe(true); + + // should pass linting + await expectLintToPass(dir); + }); + + describe('without a required Forge version)', () => { + it('should fail in initializing', async () => { + await expect( + api.init({ + dir, + template: path.resolve( + __dirname, + '../fixture/template-sans-forge-version', + ), + }), + ).rejects.toThrow(/it does not specify its required Forge version\.$/); + }); + }); + + describe('with a non-matching Forge version', () => { + it('should fail in initializing', async () => { + await expect( + api.init({ + dir, + template: path.resolve( + __dirname, + '../fixture/template-nonmatching-forge-version', + ), + }), + ).rejects.toThrow( + /is not compatible with this version of Electron Forge/, + ); + }); + }); + + describe('with a nonexistent template', () => { + it('should fail in initializing', async () => { + await expect( + api.init({ + dir, + template: 'does-not-exist', + }), + ).rejects.toThrow('Failed to locate custom template'); + }); + }); + }); + + describe('in an existing directory', () => { + // Use a separate dir here and only clear it after all tests in this block have run + let persistentDir: string; + beforeAll(async () => { + persistentDir = await ensureTestDirIsNonexistent(); + await api.init({ dir: persistentDir }); + return async () => { + await fs.promises.rm(persistentDir, { recursive: true, force: true }); + }; + }); + + it('should fail without the force flag', async () => { + await expect(api.init({ dir: persistentDir })).rejects.toThrow( + `The specified path: "${persistentDir}" is not empty. Please ensure it is empty before initializing a new project`, + ); + }); + + it('should pass with the force flag', async () => { + await api.init({ + dir: persistentDir, + force: true, + }); + }); + }); + + describe.todo('with CI files enabled'); + + describe('package managers', () => { + describe('with npm', () => { + beforeAll(() => { + const originalPM = process.env.NODE_INSTALLER; + process.env.NODE_INSTALLER = 'npm'; + + process.env.COREPACK_ENABLE_STRICT = '0'; + + return () => { + process.env.NODE_INSTALLER = originalPM; + }; + }); + + it('initializes with package-lock.json', async () => { + await api.init({ dir }); + + expect(fs.existsSync(path.join(dir, 'package-lock.json'))).toBe(true); + expect(fs.existsSync(path.join(dir, 'yarn.lock'))).toBe(false); + expect(fs.existsSync(path.join(dir, 'pnpm-lock.yaml'))).toBe(false); + }); + }); + + // NOTE: we basically run all tests via Yarn Berry anyways + // due to the `packageManager` entry in this monorepo. + describe('with yarn (berry)', () => { + beforeAll(() => { + const originalPM = process.env.NODE_INSTALLER; + process.env.NODE_INSTALLER = 'yarn'; + return () => { + process.env.NODE_INSTALLER = originalPM; + }; + }); + it('initializes with correct nodeLinker value', async () => { + await api.init({ dir }); + + expect( + fs.readFileSync(path.join(dir, '.yarnrc.yml'), 'utf-8'), + ).toContain('nodeLinker: node-modules'); + + // If `nodeLinker: node-modules`, we can expect node_modules to be instantiated properly + expect( + fs + .statSync(path.join(dir, 'node_modules', 'electron')) + .isSymbolicLink(), + ).toBe(false); + expect( + fs + .statSync(path.join(dir, 'node_modules', '@electron-forge', 'cli')) + .isSymbolicLink(), + ).toBe(false); + + expect(fs.existsSync(path.join(dir, 'package-lock.json'))).toBe(false); + expect(fs.existsSync(path.join(dir, 'yarn.lock'))).toBe(true); + expect(fs.existsSync(path.join(dir, 'pnpm-lock.yaml'))).toBe(false); + }); + }); + + describe('with pnpm', () => { + beforeAll(() => { + const originalPM = process.env.NODE_INSTALLER; + process.env.NODE_INSTALLER = 'pnpm'; + + // disable corepack strict to allow pnpm to be used + process.env.COREPACK_ENABLE_STRICT = '0'; + + return () => { + process.env.NODE_INSTALLER = originalPM; + }; + }); + + it('initializes with correct node-linker value', async () => { + await api.init({ dir }); + + expect(fs.readFileSync(path.join(dir, '.npmrc'), 'utf-8')).toContain( + 'node-linker = hoisted', + ); + + // If `node-linker = hoisted`, we can expect node_modules to be instantiated properly + expect( + fs + .statSync(path.join(dir, 'node_modules', 'electron')) + .isSymbolicLink(), + ).toBe(false); + expect( + fs + .statSync(path.join(dir, 'node_modules', '@electron-forge', 'cli')) + .isSymbolicLink(), + ).toBe(false); + + expect(fs.existsSync(path.join(dir, 'package-lock.json'))).toBe(false); + expect(fs.existsSync(path.join(dir, 'yarn.lock'))).toBe(false); + expect(fs.existsSync(path.join(dir, 'pnpm-lock.yaml'))).toBe(true); + }); + }); + }); +}); diff --git a/packages/api/core/spec/slow/make.slow.spec.ts b/packages/api/core/spec/slow/make.slow.spec.ts new file mode 100644 index 0000000000..5b24f077ac --- /dev/null +++ b/packages/api/core/spec/slow/make.slow.spec.ts @@ -0,0 +1,224 @@ +import fs from 'node:fs'; +import path from 'node:path'; + +import { createDefaultCertificate } from '@electron-forge/maker-appx'; +import { IForgeResolvableMaker } from '@electron-forge/shared-types'; +import { + ensureTestDirIsNonexistent, + updatePackageJSON, +} from '@electron-forge/test-utils'; +import { afterEach, beforeAll, describe, expect, it } from 'vitest'; + +import { api } from '../../src/api/index'; + +describe('Make', () => { + const dir = path.resolve(__dirname, '..', 'fixture', 'api-tester'); + let outDir: string; + let makeDir: string; + let devCert: string; + + beforeAll(async () => { + outDir = await ensureTestDirIsNonexistent(); + makeDir = path.join(outDir, 'make'); + await api.package({ dir, outDir }); + + if (process.platform === 'win32') { + await fs.promises.copyFile( + path.join(__dirname, '..', 'fixture', 'bogus-private-key.pvk'), + path.join(outDir, 'default.pvk'), + ); + devCert = await createDefaultCertificate('CN=Test Author', { + certFilePath: outDir, + }); + } + + return async () => { + await fs.promises.rm(outDir, { recursive: true, force: true }); + }; + }); + + afterEach(async () => { + await fs.promises.rm(makeDir, { recursive: true, force: true }); + }); + + it('makes from a custom outDir without errors', async () => { + await api.make({ dir, skipPackage: true, outDir }); + + // out/make/zip/darwin/arm64/api-tester-darwin-arm64-1.0.0.zip + const artifactPath = path.join( + outDir, + 'make', + 'zip', + process.platform, + process.arch, + `api-tester-${process.platform}-${process.arch}-1.0.0.zip`, + ); + + expect(fs.existsSync(artifactPath)).toBe(true); + + // spot check that the zip archive is greater than 50MB + const { size } = await fs.promises.stat(artifactPath); + expect(size).toBeGreaterThan(50 * 1024 * 1024); + }); + + it('throws an error when given an unrecognized platform', async () => { + 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'); + await expect( + api.make({ + dir, + overrideTargets: [ + { + name: makerPath, + } as IForgeResolvableMaker, + ], + skipPackage: true, + }), + ).rejects.toThrow(/incompatible with this version/); + }); + + it('throws an error when no makers are configured for the given platform', async () => { + await expect( + api.make({ + dir, + overrideTargets: [ + { + name: path.resolve(__dirname, '../fixture/maker-wrong-platform'), + } as IForgeResolvableMaker, + ], + platform: 'linux', + skipPackage: true, + }), + ).rejects.toThrow( + 'Could not find any make targets configured for the "linux" platform.', + ); + }); + + it.runIf(process.platform === 'darwin')( + 'makes Mac App Store targets', + async () => { + await expect( + api.make({ + dir, + outDir, + overrideTargets: [ + require.resolve('@electron-forge/maker-zip'), + require.resolve('@electron-forge/maker-dmg'), + ], + platform: 'mas', + }), + ).resolves.toHaveLength(2); + }, + ); + + describe('with Makers', () => { + if (process.platform !== 'win32') { + process.env.DISABLE_SQUIRREL_TEST = 'true'; + } + + function getMakers(good: boolean) { + const allMakers = [ + '@electron-forge/maker-appx', + '@electron-forge/maker-deb', + '@electron-forge/maker-dmg', + '@electron-forge/maker-flatpak', + '@electron-forge/maker-msix', + '@electron-forge/maker-rpm', + '@electron-forge/maker-snap', + '@electron-forge/maker-squirrel', + '@electron-forge/maker-wix', + '@electron-forge/maker-zip', + ]; + return allMakers + .map((maker) => require.resolve(maker)) + .filter((makerPath) => { + const MakerClass = require(makerPath).default; + const maker = new MakerClass(); + return ( + maker.isSupportedOnCurrentPlatform() === good && + maker.externalBinariesExist() === good + ); + }) + .map((makerPath) => () => { + const makerDefinition = { + name: makerPath, + platforms: [process.platform], + config: { + devCert, + }, + }; + + if (process.platform === 'win32') { + ( + makerDefinition.config as Record + ).makeVersionWinStoreCompatible = true; + } + + return makerDefinition; + }); + } + + const goodMakers = getMakers(true); + const badMakers = getMakers(false); + + const testMakeTarget = function ( + target: () => { name: string }, + shouldPass: boolean, + ) { + describe(`${path.basename(target().name)}`, async () => { + beforeAll(async () => { + const original = await updatePackageJSON(dir, async (packageJSON) => { + return { + ...packageJSON, + config: { + forge: { + packagerConfig: { + executableName: 'api-tester', + }, + makers: [target() as IForgeResolvableMaker], + }, + }, + }; + }); + + return async () => { + await updatePackageJSON(dir, (_packageJSON) => { + return original; + }); + }; + }); + + if (shouldPass) { + it(`makes the correct artifact`, async () => { + const outputs = await api.make({ dir, outDir, skipPackage: true }); + for (const outputResult of outputs) { + for (const output of outputResult.artifacts) { + expect(fs.existsSync(output)).toEqual(true); + expect(output).toContain(path.resolve(outDir, 'make')); + } + } + }); + } else { + it(`fails`, async () => { + await expect( + api.make({ dir, outDir, skipPackage: true }), + ).rejects.toThrow(); + }); + } + }); + }; + + for (const maker of goodMakers) { + testMakeTarget(maker, true); + } + + for (const maker of badMakers) { + testMakeTarget(maker, false); + } + }); +}); diff --git a/packages/api/core/spec/slow/package.slow.spec.ts b/packages/api/core/spec/slow/package.slow.spec.ts new file mode 100644 index 0000000000..48b7bfbe8b --- /dev/null +++ b/packages/api/core/spec/slow/package.slow.spec.ts @@ -0,0 +1,105 @@ +import fs from 'node:fs'; +import path from 'node:path'; + +import { + ensureTestDirIsNonexistent, + updatePackageJSON, +} from '@electron-forge/test-utils'; +import { readMetadata } from 'electron-installer-common'; +import { beforeAll, beforeEach, describe, expect, it } from 'vitest'; + +import { api } from '../../src/api/index'; +import { readRawPackageJson } from '../../src/util/read-package-json'; + +describe('Package', () => { + const dir = path.resolve(__dirname, '..', 'fixture', 'api-tester'); + let outDir: string; + beforeEach(async () => { + outDir = await ensureTestDirIsNonexistent(); + + return async () => { + await fs.promises.rm(outDir, { recursive: true, force: true }); + }; + }); + + it('can package an Electron app', async () => { + expect(fs.existsSync(outDir)).toEqual(false); + + await api.package({ dir, outDir }); + + // should respect outDir + expect(fs.existsSync(outDir)).toEqual(true); + + // should remove Forge config from packaged app's package.json + const cleanPackageJSON = await readMetadata({ + src: path.resolve( + outDir, + `api-tester-${process.platform}-${process.arch}`, + ), + logger: console.error, + }); + expect(cleanPackageJSON).not.toHaveProperty('config.forge'); + + // should leave the original Forge config intact + const normalPackageJSON = await readRawPackageJson(dir); + expect(normalPackageJSON).toHaveProperty('config.forge'); + }); + + describe('with packagerConfig.all', () => { + beforeAll(async () => { + const original = await updatePackageJSON(dir, async (packageJSON) => { + packageJSON.config = { + forge: { + packagerConfig: { + all: true, + }, + }, + }; + return packageJSON; + }); + + return async () => { + await updatePackageJSON(dir, async (_packageJSON) => { + return original; + }); + }; + }); + + it('throws an error when packagerConfig.all is set', async () => { + await expect(api.package({ dir })).rejects.toThrow( + /packagerConfig\.all is not supported by Electron Forge/, + ); + }); + }); + + describe('with prebuilt native module dependencies', () => { + beforeAll(async () => { + const original = await updatePackageJSON(dir, async (packageJSON) => { + // add ref-napi from root workspace + packageJSON.dependencies = { + ...packageJSON.dependencies, + 'ref-napi': 'file:../../../../../../node_modules/ref-napi', + }; + return packageJSON; + }); + + return async () => { + await updatePackageJSON(dir, async (_packageJSON) => { + return original; + }); + }; + }); + + beforeEach(async () => { + outDir = await ensureTestDirIsNonexistent(); + + return async () => { + await fs.promises.rm(outDir, { recursive: true, force: true }); + }; + }); + + it('can package without errors', async () => { + await api.package({ dir, outDir }); + }); + }); +}); diff --git a/packages/plugin/fuses/spec/FusesPlugin.slow.spec.ts b/packages/plugin/fuses/spec/FusesPlugin.slow.spec.ts index 52dabe5038..e7593125ac 100644 --- a/packages/plugin/fuses/spec/FusesPlugin.slow.spec.ts +++ b/packages/plugin/fuses/spec/FusesPlugin.slow.spec.ts @@ -45,6 +45,8 @@ describe('FusesPlugin', () => { recursive: true, force: true, }); + + await fs.promises.rm(path.join(appPath, 'package.json')); }); it('should flip Fuses', async () => { diff --git a/packages/plugin/fuses/spec/fixture/app/package.json b/packages/plugin/fuses/spec/fixture/app/package.json deleted file mode 100644 index 4dd149db47..0000000000 --- a/packages/plugin/fuses/spec/fixture/app/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "fuses-test-app", - "version": "1.0.0", - "main": "./src/main.js", - "scripts": { - "package": "electron-forge package" - }, - "dependencies": { - "@electron/fuses": "^1.6.1", - "fs-extra": "^10.0.0" - }, - "devDependencies": { - "@electron-forge/cli": "6.4.0", - "@electron-forge/plugin-fuses": "6.4.0", - "@electron-forge/shared-types": "6.4.0", - "electron": "35.7.5" - } -} diff --git a/packages/utils/core-utils/spec/electron-version.spec.ts b/packages/utils/core-utils/spec/electron-version.spec.ts index 0d3edc79e6..c164814bc2 100644 --- a/packages/utils/core-utils/spec/electron-version.spec.ts +++ b/packages/utils/core-utils/spec/electron-version.spec.ts @@ -2,7 +2,8 @@ import fs from 'node:fs/promises'; import os from 'node:os'; import path from 'node:path'; -import { afterAll, beforeAll, describe, expect, it } from 'vitest'; +import { ensureTestDirIsNonexistent } from '@electron-forge/test-utils'; +import { afterAll, beforeAll, beforeEach, describe, expect, it } from 'vitest'; import { devDeps, @@ -58,21 +59,30 @@ describe('updateElectronDependency', () => { }); describe('getElectronVersion', () => { + let dir: string; + beforeEach(async () => { + dir = await ensureTestDirIsNonexistent(); + + return async () => { + await fs.rm(dir, { recursive: true, force: true }); + }; + }); it('fails without devDependencies', async () => { - await expect(getElectronVersion('', {})).rejects.toThrow( + await expect(getElectronVersion(dir, {})).rejects.toThrow( 'does not have any devDependencies', ); }); it('fails without electron devDependencies', async () => - expect(getElectronVersion('', { devDependencies: {} })).rejects.toThrow( + expect(getElectronVersion(dir, { devDependencies: {} })).rejects.toThrow( 'Electron packages in devDependencies', )); it('fails with a non-exact version and no electron installed', async () => { const fixtureDir = path.resolve(fixturePath, 'dummy_app'); + await fs.cp(fixtureDir, dir, { recursive: true }); await expect( - getElectronVersion(fixtureDir, { + getElectronVersion(dir, { devDependencies: { electron: '^4.0.2' }, }), ).rejects.toThrow('Cannot find the package'); @@ -80,6 +90,7 @@ describe('getElectronVersion', () => { it('works with a non-exact version with electron installed', async () => { const fixtureDir = path.resolve(fixturePath, 'non-exact'); + await fs.cp(fixtureDir, dir, { recursive: true }); await expect( getElectronVersion(fixtureDir, { devDependencies: { electron: '^4.0.2' }, @@ -91,7 +102,7 @@ describe('getElectronVersion', () => { const packageJSON = { devDependencies: { 'electron-nightly': '5.0.0-nightly.20190107' }, }; - await expect(getElectronVersion('', packageJSON)).resolves.toEqual( + await expect(getElectronVersion(dir, packageJSON)).resolves.toEqual( '5.0.0-nightly.20190107', ); }); @@ -100,7 +111,9 @@ describe('getElectronVersion', () => { const packageJSON = { devDependencies: { electron: '1.0.0' }, }; - await expect(getElectronVersion('', packageJSON)).resolves.toEqual('1.0.0'); + await expect(getElectronVersion(dir, packageJSON)).resolves.toEqual( + '1.0.0', + ); }); describe('with yarn workspaces', () => { @@ -115,6 +128,7 @@ describe('getElectronVersion', () => { 'packages', 'subpackage', ); + await fs.cp(fixtureDir, dir, { recursive: true }); const packageJSON = { devDependencies: { electron: '^4.0.4' }, }; diff --git a/packages/utils/test-utils/package.json b/packages/utils/test-utils/package.json index 34bc4559d3..ceab892fe6 100644 --- a/packages/utils/test-utils/package.json +++ b/packages/utils/test-utils/package.json @@ -8,7 +8,8 @@ "main": "dist/index.js", "typings": "dist/index.d.ts", "dependencies": { - "@malept/cross-spawn-promise": "^2.0.0" + "@malept/cross-spawn-promise": "^2.0.0", + "fs-extra": "^10.0.0" }, "engines": { "node": ">= 16.4.0" diff --git a/packages/utils/test-utils/src/index.ts b/packages/utils/test-utils/src/index.ts index 85f894d0e0..66a627f2c5 100644 --- a/packages/utils/test-utils/src/index.ts +++ b/packages/utils/test-utils/src/index.ts @@ -1,8 +1,16 @@ -import fs from 'node:fs'; import os from 'node:os'; import path from 'node:path'; import { ExitError, spawn } from '@malept/cross-spawn-promise'; +import fs from 'fs-extra'; + +export type PackageJSON = Record & { + config?: { + forge?: Record; + }; + dependencies?: Record; + devDependencies?: Record; +}; async function runNPM(dir: string, ...args: string[]) { await spawn('npm', args, { cwd: dir }); @@ -63,3 +71,26 @@ export async function mockRequire(mockedUri: string, stub: any) { 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 + * in a subsequent call of this function. + * + * @param dir - The target directory containing the `package.json` file + * @param callback - A callback function that returns the value of the new `package.json` to be applied + * @returns The original `package.json` prior to mutation + */ +export async function updatePackageJSON( + dir: string, + callback: (packageJSON: PackageJSON) => Promise, +) { + const packageJSON = await fs.readJson(path.resolve(dir, 'package.json')); + const mutated = await callback(JSON.parse(JSON.stringify(packageJSON))); + await fs.promises.writeFile( + path.resolve(dir, 'package.json'), + JSON.stringify(mutated, null, 2), + 'utf-8', + ); + return packageJSON; +} diff --git a/tools/verdaccio/config.yaml b/tools/verdaccio/config.yaml new file mode 100644 index 0000000000..dc5e876e8d --- /dev/null +++ b/tools/verdaccio/config.yaml @@ -0,0 +1,53 @@ +# Verdaccio configuration for testing with local packages +# This allows tests to install @electron-forge/* packages from the monorepo +# while proxying everything else to the real npm registry. + +storage: ./storage + +web: + enable: false + +auth: + htpasswd: + file: ./htpasswd + # Allow unlimited users for testing + max_users: -1 + +# Upstream npm registry +uplinks: + npmjs: + url: https://registry.npmjs.org/ + cache: true + +packages: + # @electron-forge packages are served locally (no proxy) + '@electron-forge/*': + access: $all + publish: $all + # Don't proxy to npm - only serve local packages + # This ensures we use local versions during tests + + # All other scoped packages proxy to npm + '@*/*': + access: $all + publish: $all + proxy: npmjs + + # Non-scoped packages proxy to npm + '**': + access: $all + publish: $all + proxy: npmjs + +# Server settings +server: + keepAliveTimeout: 60 + +# Logging +log: + type: stdout + format: pretty + level: warn + +# Listen on localhost only +listen: 127.0.0.1:4873 diff --git a/tools/verdaccio/spawn-verdaccio.ts b/tools/verdaccio/spawn-verdaccio.ts new file mode 100644 index 0000000000..f1dacebda4 --- /dev/null +++ b/tools/verdaccio/spawn-verdaccio.ts @@ -0,0 +1,190 @@ +/** + * This script runs any command with a local Verdaccio instance that + * publishes local builds of all `@electron-forge/` packages to the + * proxy registry. + * + * This is useful to test the local build of Electron Forge prior + * to publishing the monorepo, and to wire up `init` tests against + * the latest and greatest. + * + * Usage: + * ts-node tools/verdaccio/spawn-verdaccio.ts [args...] + * + * Example: + * ts-node tools/verdaccio-spawn-verdaccio.ts yarn test:slow + */ + +import { ChildProcess, spawn } from 'node:child_process'; +import fs from 'node:fs'; +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, '../..'); +/** + * 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 LOCALHOST = '127.0.0.1'; +const VERDACCIO_PORT = 4873; +const VERDACCIO_URL = `http://${LOCALHOST}:${VERDACCIO_PORT}`; +const STORAGE_PATH = path.resolve(__dirname, 'storage'); + +const d = debug('electron-forge:verdaccio'); + +let verdaccioProcess: ChildProcess | null = null; + +/** + * Starts the Verdaccio server. + */ +async function startVerdaccio(): Promise { + console.log('🚀 Starting Verdaccio...'); + + // Clean up old storage + await fs.promises.rm(STORAGE_PATH, { recursive: true, force: true }); + await fs.promises.mkdir(STORAGE_PATH); + + return new Promise((resolve, reject) => { + verdaccioProcess = spawn('yarn', ['verdaccio', '--config', CONFIG_PATH], { + cwd: FORGE_ROOT_DIR, + // On Windows, detaching the child process will cause the Promise to hang + // On UNIX-based platforms, detatching it is necessary to successfully kill the Verdaccio server + detached: process.platform !== 'win32', + shell: process.platform === 'win32', + }); + + let started = false; + + verdaccioProcess.stdout?.on('data', (data: Buffer) => { + const output = data.toString(); + d(output); + if (output.includes('http address') && !started) { + started = true; + // Give it a moment to be fully ready + setTimeout(resolve, 500); + } + }); + + verdaccioProcess.stderr?.on('data', (data: Buffer) => { + const output = data.toString(); + console.error('[verdaccio]', output); + }); + + verdaccioProcess.on('error', reject); + verdaccioProcess.on('close', (code) => { + if (!started || code !== 0) { + reject(new Error(`Verdaccio exited with code ${code}`)); + } + }); + }); +} + +/** + * Kills the local Verdaccio instance. + */ +function stopVerdaccio(): void { + if (verdaccioProcess && verdaccioProcess.pid) { + console.log('🛑 Stopping Verdaccio...'); + // Kill the entire process group (negative PID) to ensure all child processes are terminated + try { + process.kill(-verdaccioProcess.pid, 'SIGTERM'); + } catch { + // Process may have already exited + verdaccioProcess.kill('SIGTERM'); + } + verdaccioProcess = null; + } +} + +/** + * Publishes all `@electron-forge/` packages to the localhost Verdaccio registry. + */ +async function publishPackages(): Promise { + console.log('📦 Publishing monorepo packages to Verdaccio registry...'); + + try { + await spawnPromise( + `yarn`, + [ + 'lerna', + 'publish', + 'from-package', + '--registry', + VERDACCIO_URL, + '--yes', + '--no-git-tag-version', + '--no-push', + ], + { + cwd: FORGE_ROOT_DIR, + stdio: 'inherit', + }, + ); + console.log('✅ All packages published to Verdaccio registry'); + } catch (error) { + const errorMessage = error instanceof Error ? error.message : String(error); + console.error('❌ Failed to publish packages:', errorMessage); + throw error; + } +} + +async function runCommand(args: string[]) { + console.log(`🏃 Running: ${args.join(' ')}`); + console.log(` Using registry: ${VERDACCIO_URL}`); + + await spawnPromise(args[0], args.slice(1), { + cwd: FORGE_ROOT_DIR, + stdio: 'inherit', + env: { + ...process.env, + // https://docs.npmjs.com/cli/v9/using-npm/config#registry + // https://pnpm.io/settings#registry + NPM_CONFIG_REGISTRY: VERDACCIO_URL, + // https://yarnpkg.com/configuration/yarnrc#npmRegistryServer + YARN_NPM_REGISTRY_SERVER: VERDACCIO_URL, + // https://yarnpkg.com/configuration/yarnrc#unsafeHttpWhitelist + YARN_UNSAFE_HTTP_WHITELIST: LOCALHOST, + }, + }); +} + +async function main(): Promise { + const args = process.argv.slice(2); + + if (args.length === 0) { + console.error( + 'Usage: ts-node tools/verdaccio/spawn-verdaccio.ts [args...]', + ); + console.error( + 'Example: ts-node tools/verdaccio/spawn-verdaccio.ts yarn test:slow', + ); + process.exit(1); + } + + // Handle signals + process.on('SIGINT', () => { + stopVerdaccio(); + process.exit(1); + }); + process.on('SIGTERM', () => { + stopVerdaccio(); + process.exit(1); + }); + + try { + await startVerdaccio(); + await publishPackages(); + await runCommand(args); + stopVerdaccio(); + process.exit(0); + } catch (error) { + console.error('❌ Error:', error); + stopVerdaccio(); + process.exit(1); + } +} + +main(); diff --git a/vitest.workspace.mts b/vitest.workspace.mts index 83454678c2..1a37b9bfac 100644 --- a/vitest.workspace.mts +++ b/vitest.workspace.mts @@ -5,7 +5,10 @@ export default defineWorkspace([ extends: './vitest.config.mts', test: { include: ['**/spec/**/*.spec.ts'], - exclude: ['**/spec/**/*.slow.spec.ts'], + exclude: [ + '**/spec/**/*.slow.spec.ts', + '**/spec/**/*.slow.verdaccio.spec.ts', + ], name: 'fast', }, }, @@ -18,4 +21,13 @@ export default defineWorkspace([ testTimeout: 160000, }, }, + { + extends: './vitest.config.mts', + test: { + include: ['**/spec/**/*.slow.verdaccio.spec.ts'], + name: 'slow-verdaccio', + hookTimeout: 160000, + testTimeout: 160000, + }, + }, ]); diff --git a/yarn.lock b/yarn.lock index 08f301d8d9..251dce106e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -782,6 +782,32 @@ __metadata: languageName: node linkType: hard +"@cypress/request@npm:3.0.9": + version: 3.0.9 + resolution: "@cypress/request@npm:3.0.9" + dependencies: + aws-sign2: "npm:~0.7.0" + aws4: "npm:^1.8.0" + caseless: "npm:~0.12.0" + combined-stream: "npm:~1.0.6" + extend: "npm:~3.0.2" + forever-agent: "npm:~0.6.1" + form-data: "npm:~4.0.4" + http-signature: "npm:~1.4.0" + is-typedarray: "npm:~1.0.0" + isstream: "npm:~0.1.2" + json-stringify-safe: "npm:~5.0.1" + mime-types: "npm:~2.1.19" + performance-now: "npm:^2.1.0" + qs: "npm:6.14.0" + safe-buffer: "npm:^5.1.2" + tough-cookie: "npm:^5.0.0" + tunnel-agent: "npm:^0.6.0" + uuid: "npm:^8.3.2" + checksum: 10c0/9ebcd3f3d49706e730671bcb0bb86488fe23a2079f12d44b6c762777118fc0286b5ce5c73fb6cacf0ae291fa89a7562ca8a2b43a2486e26906fd84a386ed6967 + languageName: node + linkType: hard + "@dsanders11/vscode-markdown-languageservice@npm:^0.3.0": version: 0.3.0 resolution: "@dsanders11/vscode-markdown-languageservice@npm:0.3.0" @@ -1416,6 +1442,7 @@ __metadata: resolution: "@electron-forge/test-utils@workspace:packages/utils/test-utils" dependencies: "@malept/cross-spawn-promise": "npm:^2.0.0" + fs-extra: "npm:^10.0.0" languageName: unknown linkType: soft @@ -1465,6 +1492,25 @@ __metadata: languageName: node linkType: hard +"@electron/get@npm:^2.0.0": + version: 2.0.3 + resolution: "@electron/get@npm:2.0.3" + dependencies: + debug: "npm:^4.1.1" + env-paths: "npm:^2.2.0" + fs-extra: "npm:^8.1.0" + global-agent: "npm:^3.0.0" + got: "npm:^11.8.5" + progress: "npm:^2.0.3" + semver: "npm:^6.2.0" + sumchecker: "npm:^3.0.1" + dependenciesMeta: + global-agent: + optional: true + checksum: 10c0/148957d531bac50c29541515f2483c3e5c9c6ba9f0269a5d536540d2b8d849188a89588f18901f3a84c2b4fd376d1e0c5ea2159eb2d17bda68558f57df19015e + languageName: node + linkType: hard + "@electron/get@npm:^3.0.0": version: 3.0.0 resolution: "@electron/get@npm:3.0.0" @@ -3635,6 +3681,13 @@ __metadata: languageName: node linkType: hard +"@pinojs/redact@npm:^0.4.0": + version: 0.4.0 + resolution: "@pinojs/redact@npm:0.4.0" + checksum: 10c0/4b311ba17ee0cf154ff9c39eb063ec04cd0d0017cb3750efcdf06c2d485df3e1095e13e872175993568c5568c23e4508dd877c981bbc9c5ae5e384d569efcdff + languageName: node + linkType: hard + "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -3642,13 +3695,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.27.4" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - "@rollup/rollup-android-arm-eabi@npm:4.52.4": version: 4.52.4 resolution: "@rollup/rollup-android-arm-eabi@npm:4.52.4" @@ -3656,10 +3702,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-android-arm64@npm:4.27.4" - conditions: os=android & cpu=arm64 +"@rollup/rollup-android-arm-eabi@npm:4.53.3": + version: 4.53.3 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.53.3" + conditions: os=android & cpu=arm languageName: node linkType: hard @@ -3670,10 +3716,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-darwin-arm64@npm:4.27.4" - conditions: os=darwin & cpu=arm64 +"@rollup/rollup-android-arm64@npm:4.53.3": + version: 4.53.3 + resolution: "@rollup/rollup-android-arm64@npm:4.53.3" + conditions: os=android & cpu=arm64 languageName: node linkType: hard @@ -3684,10 +3730,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-darwin-x64@npm:4.27.4" - conditions: os=darwin & cpu=x64 +"@rollup/rollup-darwin-arm64@npm:4.53.3": + version: 4.53.3 + resolution: "@rollup/rollup-darwin-arm64@npm:4.53.3" + conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -3698,10 +3744,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.27.4" - conditions: os=freebsd & cpu=arm64 +"@rollup/rollup-darwin-x64@npm:4.53.3": + version: 4.53.3 + resolution: "@rollup/rollup-darwin-x64@npm:4.53.3" + conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -3712,10 +3758,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-freebsd-x64@npm:4.27.4" - conditions: os=freebsd & cpu=x64 +"@rollup/rollup-freebsd-arm64@npm:4.53.3": + version: 4.53.3 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.53.3" + conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard @@ -3726,10 +3772,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.27.4" - conditions: os=linux & cpu=arm & libc=glibc +"@rollup/rollup-freebsd-x64@npm:4.53.3": + version: 4.53.3 + resolution: "@rollup/rollup-freebsd-x64@npm:4.53.3" + conditions: os=freebsd & cpu=x64 languageName: node linkType: hard @@ -3740,10 +3786,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.27.4" - conditions: os=linux & cpu=arm & libc=musl +"@rollup/rollup-linux-arm-gnueabihf@npm:4.53.3": + version: 4.53.3 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.53.3" + conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard @@ -3754,10 +3800,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.27.4" - conditions: os=linux & cpu=arm64 & libc=glibc +"@rollup/rollup-linux-arm-musleabihf@npm:4.53.3": + version: 4.53.3 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.53.3" + conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard @@ -3768,10 +3814,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.27.4" - conditions: os=linux & cpu=arm64 & libc=musl +"@rollup/rollup-linux-arm64-gnu@npm:4.53.3": + version: 4.53.3 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.53.3" + conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard @@ -3782,6 +3828,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm64-musl@npm:4.53.3": + version: 4.53.3 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.53.3" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-loong64-gnu@npm:4.52.4": version: 4.52.4 resolution: "@rollup/rollup-linux-loong64-gnu@npm:4.52.4" @@ -3789,10 +3842,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.4" - conditions: os=linux & cpu=ppc64 & libc=glibc +"@rollup/rollup-linux-loong64-gnu@npm:4.53.3": + version: 4.53.3 + resolution: "@rollup/rollup-linux-loong64-gnu@npm:4.53.3" + conditions: os=linux & cpu=loong64 & libc=glibc languageName: node linkType: hard @@ -3803,10 +3856,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.27.4" - conditions: os=linux & cpu=riscv64 & libc=glibc +"@rollup/rollup-linux-ppc64-gnu@npm:4.53.3": + version: 4.53.3 + resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.53.3" + conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard @@ -3817,6 +3870,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-riscv64-gnu@npm:4.53.3": + version: 4.53.3 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.53.3" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-riscv64-musl@npm:4.52.4": version: 4.52.4 resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.52.4" @@ -3824,10 +3884,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.27.4" - conditions: os=linux & cpu=s390x & libc=glibc +"@rollup/rollup-linux-riscv64-musl@npm:4.53.3": + version: 4.53.3 + resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.53.3" + conditions: os=linux & cpu=riscv64 & libc=musl languageName: node linkType: hard @@ -3838,10 +3898,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.27.4" - conditions: os=linux & cpu=x64 & libc=glibc +"@rollup/rollup-linux-s390x-gnu@npm:4.53.3": + version: 4.53.3 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.53.3" + conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard @@ -3852,10 +3912,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.27.4" - conditions: os=linux & cpu=x64 & libc=musl +"@rollup/rollup-linux-x64-gnu@npm:4.53.3": + version: 4.53.3 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.53.3" + conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard @@ -3866,6 +3926,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-x64-musl@npm:4.53.3": + version: 4.53.3 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.53.3" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-openharmony-arm64@npm:4.52.4": version: 4.52.4 resolution: "@rollup/rollup-openharmony-arm64@npm:4.52.4" @@ -3873,10 +3940,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.27.4" - conditions: os=win32 & cpu=arm64 +"@rollup/rollup-openharmony-arm64@npm:4.53.3": + version: 4.53.3 + resolution: "@rollup/rollup-openharmony-arm64@npm:4.53.3" + conditions: os=openharmony & cpu=arm64 languageName: node linkType: hard @@ -3887,10 +3954,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.27.4" - conditions: os=win32 & cpu=ia32 +"@rollup/rollup-win32-arm64-msvc@npm:4.53.3": + version: 4.53.3 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.53.3" + conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -3901,6 +3968,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-ia32-msvc@npm:4.53.3": + version: 4.53.3 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.53.3" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@rollup/rollup-win32-x64-gnu@npm:4.52.4": version: 4.52.4 resolution: "@rollup/rollup-win32-x64-gnu@npm:4.52.4" @@ -3908,9 +3982,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.27.4" +"@rollup/rollup-win32-x64-gnu@npm:4.53.3": + version: 4.53.3 + resolution: "@rollup/rollup-win32-x64-gnu@npm:4.53.3" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -3922,6 +3996,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-x64-msvc@npm:4.53.3": + version: 4.53.3 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.53.3" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@rtsao/scc@npm:^1.1.0": version: 1.1.0 resolution: "@rtsao/scc@npm:1.1.0" @@ -4052,7 +4133,7 @@ __metadata: languageName: node linkType: hard -"@sindresorhus/is@npm:^4.0.0": +"@sindresorhus/is@npm:4.6.0, @sindresorhus/is@npm:^4.0.0": version: 4.6.0 resolution: "@sindresorhus/is@npm:4.6.0" checksum: 10c0/33b6fb1d0834ec8dd7689ddc0e2781c2bfd8b9c4e4bacbcb14111e0ae00621f2c264b8a7d36541799d74888b5dccdf422a891a5cb5a709ace26325eedc81e22e @@ -4655,7 +4736,7 @@ __metadata: languageName: node linkType: hard -"@szmarczak/http-timer@npm:^4.0.5": +"@szmarczak/http-timer@npm:4.0.6, @szmarczak/http-timer@npm:^4.0.5": version: 4.0.6 resolution: "@szmarczak/http-timer@npm:4.0.6" dependencies: @@ -4835,13 +4916,6 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:1.0.6, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.5": - version: 1.0.6 - resolution: "@types/estree@npm:1.0.6" - checksum: 10c0/cdfd751f6f9065442cd40957c07fd80361c962869aa853c1c2fd03e101af8b9389d8ff4955a43a6fcfa223dd387a089937f95be0f3eec21ca527039fd2d9859a - languageName: node - linkType: hard - "@types/estree@npm:1.0.8": version: 1.0.8 resolution: "@types/estree@npm:1.0.8" @@ -4849,6 +4923,13 @@ __metadata: languageName: node linkType: hard +"@types/estree@npm:^1.0.0, @types/estree@npm:^1.0.5": + version: 1.0.6 + resolution: "@types/estree@npm:1.0.6" + checksum: 10c0/cdfd751f6f9065442cd40957c07fd80361c962869aa853c1c2fd03e101af8b9389d8ff4955a43a6fcfa223dd387a089937f95be0f3eec21ca527039fd2d9859a + languageName: node + linkType: hard + "@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^4.17.18": version: 4.17.31 resolution: "@types/express-serve-static-core@npm:4.17.31" @@ -5099,6 +5180,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^22.7.7": + version: 22.19.1 + resolution: "@types/node@npm:22.19.1" + dependencies: + undici-types: "npm:~6.21.0" + checksum: 10c0/6edd93aea86da740cb7872626839cd6f4a67a049d3a3a6639cb592c620ec591408a30989ab7410008d1a0b2d4985ce50f1e488e79c033e4476d3bec6833b0a2f + languageName: node + linkType: hard + "@types/normalize-package-data@npm:^2.4.0": version: 2.4.1 resolution: "@types/normalize-package-data@npm:2.4.1" @@ -5157,7 +5247,7 @@ __metadata: languageName: node linkType: hard -"@types/responselike@npm:*, @types/responselike@npm:^1.0.0": +"@types/responselike@npm:*, @types/responselike@npm:1.0.0, @types/responselike@npm:^1.0.0": version: 1.0.0 resolution: "@types/responselike@npm:1.0.0" dependencies: @@ -5229,13 +5319,20 @@ __metadata: languageName: node linkType: hard -"@types/unist@npm:*, @types/unist@npm:^2.0.0": +"@types/unist@npm:*": version: 2.0.6 resolution: "@types/unist@npm:2.0.6" checksum: 10c0/8690789328e8e10c487334341fcf879fd49f8987c98ce49849f9871052f95d87477735171bb661e6f551bdb95235e015dfdad1867ca1d9b5b88a053f72ac40eb languageName: node linkType: hard +"@types/unist@npm:^2.0.0": + version: 2.0.11 + resolution: "@types/unist@npm:2.0.11" + checksum: 10c0/24dcdf25a168f453bb70298145eb043cfdbb82472db0bc0b56d6d51cd2e484b9ed8271d4ac93000a80da568f2402e9339723db262d0869e2bf13bc58e081768d + languageName: node + linkType: hard + "@types/which@npm:^2.0.0": version: 2.0.1 resolution: "@types/which@npm:2.0.1" @@ -5396,6 +5493,239 @@ __metadata: languageName: node linkType: hard +"@verdaccio/auth@npm:8.0.0-next-8.28": + version: 8.0.0-next-8.28 + resolution: "@verdaccio/auth@npm:8.0.0-next-8.28" + dependencies: + "@verdaccio/config": "npm:8.0.0-next-8.28" + "@verdaccio/core": "npm:8.0.0-next-8.28" + "@verdaccio/loaders": "npm:8.0.0-next-8.18" + "@verdaccio/signature": "npm:8.0.0-next-8.20" + debug: "npm:4.4.3" + lodash: "npm:4.17.21" + verdaccio-htpasswd: "npm:13.0.0-next-8.28" + checksum: 10c0/88cb92fbf02069b6ee3de7c03d9b0f86ef76d5b7b09d249b7085c0034a556f8fafeacc175f00e2c8f34b4f565ad050375e0b1024b601c166e041ef4bca2808f2 + languageName: node + linkType: hard + +"@verdaccio/config@npm:8.0.0-next-8.28": + version: 8.0.0-next-8.28 + resolution: "@verdaccio/config@npm:8.0.0-next-8.28" + dependencies: + "@verdaccio/core": "npm:8.0.0-next-8.28" + debug: "npm:4.4.3" + js-yaml: "npm:4.1.1" + lodash: "npm:4.17.21" + checksum: 10c0/c8e1e483b0fc403899f73e67c37a0b9ac7b978e5a142e3aabc3d979a93f46f0632411257521a65a32382d09afa1c89f22fb2b150c9b1f7008155b7192e671ac1 + languageName: node + linkType: hard + +"@verdaccio/core@npm:8.0.0-next-8.21": + version: 8.0.0-next-8.21 + resolution: "@verdaccio/core@npm:8.0.0-next-8.21" + dependencies: + ajv: "npm:8.17.1" + http-errors: "npm:2.0.0" + http-status-codes: "npm:2.3.0" + minimatch: "npm:7.4.6" + process-warning: "npm:1.0.0" + semver: "npm:7.7.2" + checksum: 10c0/fc05d91633ff56d82e8b781e92af8500f263fa4eab1691a97cf24362be3c275ecf6ef330551b42b426886bfb4958994be49e380d85eba911101622d41524f2d6 + languageName: node + linkType: hard + +"@verdaccio/core@npm:8.0.0-next-8.28": + version: 8.0.0-next-8.28 + resolution: "@verdaccio/core@npm:8.0.0-next-8.28" + dependencies: + ajv: "npm:8.17.1" + http-errors: "npm:2.0.0" + http-status-codes: "npm:2.3.0" + minimatch: "npm:7.4.6" + process-warning: "npm:1.0.0" + semver: "npm:7.7.3" + checksum: 10c0/ab778e1b3c1e84a42e3be8d36ea3afac140122a4e71088171f4c81a6682e1ab2db8f473de406d5ffe7becb2ec051b82ddc078cc6af8c920ce954ff577a939427 + languageName: node + linkType: hard + +"@verdaccio/file-locking@npm:10.3.1": + version: 10.3.1 + resolution: "@verdaccio/file-locking@npm:10.3.1" + dependencies: + lockfile: "npm:1.0.4" + checksum: 10c0/c70a8f889dc9998b32691cb5dc232df2757eb4380da7a38bc0c386e0f0c2079a8aa13b6998d0c497f137953dd4dd58d2ecd08f00d4e98c9d5b266e928fa71200 + languageName: node + linkType: hard + +"@verdaccio/file-locking@npm:13.0.0-next-8.6": + version: 13.0.0-next-8.6 + resolution: "@verdaccio/file-locking@npm:13.0.0-next-8.6" + dependencies: + lockfile: "npm:1.0.4" + checksum: 10c0/291b14232b9041d3392a5ced9b1e4bea4914ef624b8d3f3061391af158560b1a3a78e0c23f18776a8d71890946783442d2caf729de68c5a10f0a5adb2f86be17 + languageName: node + linkType: hard + +"@verdaccio/hooks@npm:8.0.0-next-8.28": + version: 8.0.0-next-8.28 + resolution: "@verdaccio/hooks@npm:8.0.0-next-8.28" + dependencies: + "@verdaccio/core": "npm:8.0.0-next-8.28" + "@verdaccio/logger": "npm:8.0.0-next-8.28" + debug: "npm:4.4.3" + got-cjs: "npm:12.5.4" + handlebars: "npm:4.7.8" + checksum: 10c0/5ba76a67da11e47a2d6e1b9befd3aabfa37889c3671c8333b7718c0ead4e53856e353153057dc1142078007f62c9b56f8d96bca6bc8bb834e35593aec803d9ba + languageName: node + linkType: hard + +"@verdaccio/loaders@npm:8.0.0-next-8.18": + version: 8.0.0-next-8.18 + resolution: "@verdaccio/loaders@npm:8.0.0-next-8.18" + dependencies: + "@verdaccio/core": "npm:8.0.0-next-8.28" + debug: "npm:4.4.3" + lodash: "npm:4.17.21" + checksum: 10c0/09a9c815731b19d035393b56b391b97bf4490eb4662cbadc148eeb589f8e31d0fc3390a3e7f9e4153501210afe3f65c7af1f949eb8382232a379bfb57c4726e5 + languageName: node + linkType: hard + +"@verdaccio/local-storage-legacy@npm:11.1.1": + version: 11.1.1 + resolution: "@verdaccio/local-storage-legacy@npm:11.1.1" + dependencies: + "@verdaccio/core": "npm:8.0.0-next-8.21" + "@verdaccio/file-locking": "npm:10.3.1" + "@verdaccio/streams": "npm:10.2.1" + async: "npm:3.2.6" + debug: "npm:4.4.1" + lodash: "npm:4.17.21" + lowdb: "npm:1.0.0" + mkdirp: "npm:1.0.4" + checksum: 10c0/8b0f2e2f7e7a95e411bf8e3b18a5d8abb09aac88450c70e871d546111e41bfc4ffddf3458f446b2bbddf56ed8aeb3d8fef2952b9f1f492bb09ecc748542e89b9 + languageName: node + linkType: hard + +"@verdaccio/logger-commons@npm:8.0.0-next-8.28": + version: 8.0.0-next-8.28 + resolution: "@verdaccio/logger-commons@npm:8.0.0-next-8.28" + dependencies: + "@verdaccio/core": "npm:8.0.0-next-8.28" + "@verdaccio/logger-prettify": "npm:8.0.0-next-8.4" + colorette: "npm:2.0.20" + debug: "npm:4.4.3" + checksum: 10c0/70a090bfa186dc01fe927777d9c6b1bc6e593d69e94b3df6dcfc8fe2efc1b264dab5a7735f97f8ccc55884453248ec22a1e36610ff7e7ef856c4a45894563a43 + languageName: node + linkType: hard + +"@verdaccio/logger-prettify@npm:8.0.0-next-8.4": + version: 8.0.0-next-8.4 + resolution: "@verdaccio/logger-prettify@npm:8.0.0-next-8.4" + dependencies: + colorette: "npm:2.0.20" + dayjs: "npm:1.11.13" + lodash: "npm:4.17.21" + on-exit-leak-free: "npm:2.1.2" + pino-abstract-transport: "npm:1.2.0" + sonic-boom: "npm:3.8.1" + checksum: 10c0/5a6fb12236b18a7586832f8054173e12f98045626398a542b7c5bc8f456955abad96cfdbb10c98c829c715fcafa47934d546bc7c54d5ed1e15d2728b8bb0fbd5 + languageName: node + linkType: hard + +"@verdaccio/logger@npm:8.0.0-next-8.28": + version: 8.0.0-next-8.28 + resolution: "@verdaccio/logger@npm:8.0.0-next-8.28" + dependencies: + "@verdaccio/logger-commons": "npm:8.0.0-next-8.28" + pino: "npm:9.14.0" + checksum: 10c0/304334b349eda71d7a3e25628766e21e7c2bc4e9c4fc4d33195f0124f7eabe9ae8adbbdc592f8ac50195af74d84563c27ab6f0f72442d44be8d69cc0838bfab8 + languageName: node + linkType: hard + +"@verdaccio/middleware@npm:8.0.0-next-8.28": + version: 8.0.0-next-8.28 + resolution: "@verdaccio/middleware@npm:8.0.0-next-8.28" + dependencies: + "@verdaccio/config": "npm:8.0.0-next-8.28" + "@verdaccio/core": "npm:8.0.0-next-8.28" + "@verdaccio/url": "npm:13.0.0-next-8.28" + debug: "npm:4.4.3" + express: "npm:4.21.2" + express-rate-limit: "npm:5.5.1" + lodash: "npm:4.17.21" + lru-cache: "npm:7.18.3" + checksum: 10c0/18c5978c9787aeab363ec6f867b0f1f3fb11cae0a9ec0d5ce4c7fecc67d067681a1bed9c76fbd6bca35840c7c1a89a1e43de43a107d6555cf8e2890caf2f2a0e + languageName: node + linkType: hard + +"@verdaccio/search-indexer@npm:8.0.0-next-8.5": + version: 8.0.0-next-8.5 + resolution: "@verdaccio/search-indexer@npm:8.0.0-next-8.5" + checksum: 10c0/6cf328c80a8afac43c128c72e86cdac7426949d4d477516bb1db9b2733311169f902ab32c5dff11de9367e7c2b3338d211222f51a3f521eadce6828ce365cc29 + languageName: node + linkType: hard + +"@verdaccio/signature@npm:8.0.0-next-8.20": + version: 8.0.0-next-8.20 + resolution: "@verdaccio/signature@npm:8.0.0-next-8.20" + dependencies: + "@verdaccio/config": "npm:8.0.0-next-8.28" + "@verdaccio/core": "npm:8.0.0-next-8.28" + debug: "npm:4.4.3" + jsonwebtoken: "npm:9.0.2" + checksum: 10c0/ffb84af64423afd298e68c90ccf2ecfd2a09524cb639fb48d7a657070e53467ca208bfcce82c7872c1bbef6d71a3f3354b5384514e5fa256af21d0a3a6387610 + languageName: node + linkType: hard + +"@verdaccio/streams@npm:10.2.1": + version: 10.2.1 + resolution: "@verdaccio/streams@npm:10.2.1" + checksum: 10c0/0f1ab96b5c92fa1839dbb602ae1e90cb5ee2d8b6b01945ce0ccdccd6828111c8457b2b70926c880bc425b778b9892036ee263b9496c68cbd3a3b23fe8d083c42 + languageName: node + linkType: hard + +"@verdaccio/tarball@npm:13.0.0-next-8.28": + version: 13.0.0-next-8.28 + resolution: "@verdaccio/tarball@npm:13.0.0-next-8.28" + dependencies: + "@verdaccio/core": "npm:8.0.0-next-8.28" + "@verdaccio/url": "npm:13.0.0-next-8.28" + debug: "npm:4.4.3" + gunzip-maybe: "npm:1.4.2" + tar-stream: "npm:3.1.7" + checksum: 10c0/8402ae25e3c00ea7977511d0de7d80ecd48b7ba9e6ce10594a14feaf836d6f0c94ac3f08d7836a67e5a5f5621623e16e5873b3b9d6b5b47f3ebf903eaec05dfc + languageName: node + linkType: hard + +"@verdaccio/ui-theme@npm:8.0.0-next-8.28": + version: 8.0.0-next-8.28 + resolution: "@verdaccio/ui-theme@npm:8.0.0-next-8.28" + checksum: 10c0/da0775309661ac4cf4bbe9efaad6e3b8c38ea8d82865bdb5fe914e16981890bea480a330f6d75c476ac5a7a5706ffa907973eeda0e2a70fe73227669b3017665 + languageName: node + linkType: hard + +"@verdaccio/url@npm:13.0.0-next-8.28": + version: 13.0.0-next-8.28 + resolution: "@verdaccio/url@npm:13.0.0-next-8.28" + dependencies: + "@verdaccio/core": "npm:8.0.0-next-8.28" + debug: "npm:4.4.3" + validator: "npm:13.15.23" + checksum: 10c0/0ccf111094b21b379f3c0a0ebcd79f0e9e8316d870b0b12ba78fb1f15765ffbf8844148b50108eac1a01cdf7a1b7002b405fb518d5c29985590c975c1736616c + languageName: node + linkType: hard + +"@verdaccio/utils@npm:8.1.0-next-8.28": + version: 8.1.0-next-8.28 + resolution: "@verdaccio/utils@npm:8.1.0-next-8.28" + dependencies: + "@verdaccio/core": "npm:8.0.0-next-8.28" + lodash: "npm:4.17.21" + minimatch: "npm:7.4.6" + checksum: 10c0/3f32cc3b92352b86432142c0272980225ea9291c94f65eaba44386b8a17170e629e523e0801dcfb485571221a606f8c061bca6817882b784f6f4e39bb1c5fc44 + languageName: node + linkType: hard + "@vitest/expect@npm:3.1.3": version: 3.1.3 resolution: "@vitest/expect@npm:3.1.3" @@ -5680,6 +6010,15 @@ __metadata: languageName: node linkType: hard +"@yarnpkg/types@npm:^4.0.1": + version: 4.0.1 + resolution: "@yarnpkg/types@npm:4.0.1" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/90226789475680ba599833571dd76c0718dd5b4c5022481263ef309d6a628f6246671cd6ca86e49c966ddefa7aca6ccef82240dc1476d2cea702ea5bee2a6b72 + languageName: node + linkType: hard + "@zkochan/js-yaml@npm:0.0.7": version: 0.0.7 resolution: "@zkochan/js-yaml@npm:0.0.7" @@ -5691,7 +6030,7 @@ __metadata: languageName: node linkType: hard -"JSONStream@npm:^1.3.5": +"JSONStream@npm:1.3.5, JSONStream@npm:^1.3.5": version: 1.3.5 resolution: "JSONStream@npm:1.3.5" dependencies: @@ -5866,6 +6205,18 @@ __metadata: languageName: node linkType: hard +"ajv@npm:8.17.1": + version: 8.17.1 + resolution: "ajv@npm:8.17.1" + dependencies: + fast-deep-equal: "npm:^3.1.3" + fast-uri: "npm:^3.0.1" + json-schema-traverse: "npm:^1.0.0" + require-from-string: "npm:^2.0.2" + checksum: 10c0/ec3ba10a573c6b60f94639ffc53526275917a2df6810e4ab5a6b959d87459f9ef3f00d5e7865b82677cb7d21590355b34da14d1d0b9c32d75f95a187e76fff35 + languageName: node + linkType: hard + "ajv@npm:^6.10.0, ajv@npm:^6.12.4, ajv@npm:^6.12.5": version: 6.12.6 resolution: "ajv@npm:6.12.6" @@ -6027,6 +6378,13 @@ __metadata: languageName: node linkType: hard +"apache-md5@npm:1.1.8": + version: 1.1.8 + resolution: "apache-md5@npm:1.1.8" + checksum: 10c0/423aa1baddcedc42e2fdf52efcf7fae2e7de9535e6ca7dd4a049f49fb5ec9b6a4469f327e02268088ed3dacdbec6f1ea4132941e2d75899c4e412421e6ffcbfc + languageName: node + linkType: hard + "appdmg@npm:^0.6.4": version: 0.6.4 resolution: "appdmg@npm:0.6.4" @@ -6282,6 +6640,22 @@ __metadata: languageName: node linkType: hard +"asn1@npm:~0.2.3": + version: 0.2.6 + resolution: "asn1@npm:0.2.6" + dependencies: + safer-buffer: "npm:~2.1.0" + checksum: 10c0/00c8a06c37e548762306bcb1488388d2f76c74c36f70c803f0c081a01d3bdf26090fc088cd812afc5e56a6d49e33765d451a5f8a68ab9c2b087eba65d2e980e0 + languageName: node + linkType: hard + +"assert-plus@npm:1.0.0, assert-plus@npm:^1.0.0": + version: 1.0.0 + resolution: "assert-plus@npm:1.0.0" + checksum: 10c0/b194b9d50c3a8f872ee85ab110784911e696a4d49f7ee6fc5fb63216dedbefd2c55999c70cb2eaeb4cf4a0e0338b44e9ace3627117b5bf0d42460e9132f21b91 + languageName: node + linkType: hard + "assertion-error@npm:^2.0.1": version: 2.0.1 resolution: "assertion-error@npm:2.0.1" @@ -6305,6 +6679,13 @@ __metadata: languageName: node linkType: hard +"async@npm:3.2.6": + version: 3.2.6 + resolution: "async@npm:3.2.6" + checksum: 10c0/36484bb15ceddf07078688d95e27076379cc2f87b10c03b6dd8a83e89475a3c8df5848859dd06a4c95af1e4c16fc973de0171a77f18ea00be899aca2a4f85e70 + languageName: node + linkType: hard + "async@npm:^1.4.2": version: 1.5.2 resolution: "async@npm:1.5.2" @@ -6333,6 +6714,13 @@ __metadata: languageName: node linkType: hard +"atomic-sleep@npm:^1.0.0": + version: 1.0.0 + resolution: "atomic-sleep@npm:1.0.0" + checksum: 10c0/e329a6665512736a9bbb073e1761b4ec102f7926cce35037753146a9db9c8104f5044c1662e4a863576ce544fb8be27cd2be6bc8c1a40147d03f31eb1cfb6e8a + languageName: node + linkType: hard + "author-regex@npm:^1.0.0": version: 1.0.0 resolution: "author-regex@npm:1.0.0" @@ -6356,6 +6744,20 @@ __metadata: languageName: node linkType: hard +"aws-sign2@npm:~0.7.0": + version: 0.7.0 + resolution: "aws-sign2@npm:0.7.0" + checksum: 10c0/021d2cc5547d4d9ef1633e0332e746a6f447997758b8b68d6fb33f290986872d2bff5f0c37d5832f41a7229361f093cd81c40898d96ed153493c0fb5cd8575d2 + languageName: node + linkType: hard + +"aws4@npm:^1.8.0": + version: 1.13.2 + resolution: "aws4@npm:1.13.2" + checksum: 10c0/c993d0d186d699f685d73113733695d648ec7d4b301aba2e2a559d0cd9c1c902308cc52f4095e1396b23fddbc35113644e7f0a6a32753636306e41e3ed6f1e79 + languageName: node + linkType: hard + "axios@npm:^1.8.3": version: 1.12.2 resolution: "axios@npm:1.12.2" @@ -6367,6 +6769,18 @@ __metadata: languageName: node linkType: hard +"b4a@npm:^1.6.4": + version: 1.7.3 + resolution: "b4a@npm:1.7.3" + peerDependencies: + react-native-b4a: "*" + peerDependenciesMeta: + react-native-b4a: + optional: true + checksum: 10c0/ac16d186e00fa0d16de1f1a4af413953bc762d50d5a0e382aaa744a13886600313b7293403ad77fc83f6b1489c3fc2610494d1026754a51d1b7cdac2115a7598 + languageName: node + linkType: hard + "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" @@ -6381,6 +6795,18 @@ __metadata: languageName: node linkType: hard +"bare-events@npm:^2.7.0": + version: 2.8.2 + resolution: "bare-events@npm:2.8.2" + peerDependencies: + bare-abort-controller: "*" + peerDependenciesMeta: + bare-abort-controller: + optional: true + checksum: 10c0/53fef240cf2cdcca62f78b6eead90ddb5a59b0929f414b13a63764c2b4f9de98ea8a578d033b04d64bb7b86dfbc402e937984e69950855cc3754c7b63da7db21 + languageName: node + linkType: hard + "base32-encode@npm:^0.1.0 || ^1.0.0": version: 1.2.0 resolution: "base32-encode@npm:1.2.0" @@ -6404,6 +6830,22 @@ __metadata: languageName: node linkType: hard +"bcrypt-pbkdf@npm:^1.0.0": + version: 1.0.2 + resolution: "bcrypt-pbkdf@npm:1.0.2" + dependencies: + tweetnacl: "npm:^0.14.3" + checksum: 10c0/ddfe85230b32df25aeebfdccfbc61d3bc493ace49c884c9c68575de1f5dcf733a5d7de9def3b0f318b786616b8d85bad50a28b1da1750c43e0012c93badcc148 + languageName: node + linkType: hard + +"bcryptjs@npm:2.4.3": + version: 2.4.3 + resolution: "bcryptjs@npm:2.4.3" + checksum: 10c0/b969467087ed7a01ff905a1c6a0c45014ec586248a448ea08370c8ed8bb314bda16a870ca23e0961d7d23bdce1a04c76fa70a9d680be814fa9ac7d8fc61870a3 + languageName: node + linkType: hard + "before-after-hook@npm:^2.2.0": version: 2.2.2 resolution: "before-after-hook@npm:2.2.2" @@ -6553,6 +6995,15 @@ __metadata: languageName: node linkType: hard +"browserify-zlib@npm:^0.1.4": + version: 0.1.4 + resolution: "browserify-zlib@npm:0.1.4" + dependencies: + pako: "npm:~0.2.0" + checksum: 10c0/0cde7ca5d33d43125649330fd75c056397e53731956a2593c4a2529f4e609a8e6abdb2b8e1921683abf5645375b92cfb2a21baa42fe3c9fc3e2556d32043af93 + languageName: node + linkType: hard + "browserslist@npm:^4.21.10": version: 4.23.3 resolution: "browserslist@npm:4.23.3" @@ -6574,7 +7025,7 @@ __metadata: languageName: node linkType: hard -"buffer-equal-constant-time@npm:^1.0.1": +"buffer-equal-constant-time@npm:1.0.1, buffer-equal-constant-time@npm:^1.0.1": version: 1.0.1 resolution: "buffer-equal-constant-time@npm:1.0.1" checksum: 10c0/fb2294e64d23c573d0dd1f1e7a466c3e978fe94a4e0f8183937912ca374619773bef8e2aceb854129d2efecbbc515bbd0cc78d2734a3e3031edb0888531bbc8e @@ -6608,6 +7059,16 @@ __metadata: languageName: node linkType: hard +"buffer@npm:^6.0.3": + version: 6.0.3 + resolution: "buffer@npm:6.0.3" + dependencies: + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.2.1" + checksum: 10c0/2a905fbbcde73cc5d8bd18d1caa23715d5f83a5935867c2329f0ac06104204ba7947be098fe1317fbd8830e26090ff8e764f08cd14fefc977bb248c3487bcbd0 + languageName: node + linkType: hard + "builtins@npm:^5.0.0, builtins@npm:^5.0.1": version: 5.0.1 resolution: "builtins@npm:5.0.1" @@ -6710,6 +7171,13 @@ __metadata: languageName: node linkType: hard +"cacheable-lookup@npm:6.1.0": + version: 6.1.0 + resolution: "cacheable-lookup@npm:6.1.0" + checksum: 10c0/fe922b24e9868ac65cbd3b4ccd7449063d572431471aab71cbca49a2b33839c7c888b237b0922ae6b8f4ddf25d61debe204e473195d2e77a835099b8953aeb0a + languageName: node + linkType: hard + "cacheable-lookup@npm:^5.0.3": version: 5.0.4 resolution: "cacheable-lookup@npm:5.0.4" @@ -6717,7 +7185,7 @@ __metadata: languageName: node linkType: hard -"cacheable-request@npm:^7.0.2": +"cacheable-request@npm:7.0.2, cacheable-request@npm:^7.0.2": version: 7.0.2 resolution: "cacheable-request@npm:7.0.2" dependencies: @@ -6829,6 +7297,13 @@ __metadata: languageName: node linkType: hard +"caseless@npm:~0.12.0": + version: 0.12.0 + resolution: "caseless@npm:0.12.0" + checksum: 10c0/ccf64bcb6c0232cdc5b7bd91ddd06e23a4b541f138336d4725233ac538041fb2f29c2e86c3c4a7a61ef990b665348db23a047060b9414c3a6603e9fa61ad4626 + languageName: node + linkType: hard + "chai@npm:^5.2.0": version: 5.2.0 resolution: "chai@npm:5.2.0" @@ -7063,6 +7538,17 @@ __metadata: languageName: node linkType: hard +"clipanion@npm:4.0.0-rc.4": + version: 4.0.0-rc.4 + resolution: "clipanion@npm:4.0.0-rc.4" + dependencies: + typanion: "npm:^3.8.0" + peerDependencies: + typanion: "*" + checksum: 10c0/047b415b59a5e9777d00690fba563ccc850eca6bf27790a88d1deea3ecc8a89840ae9aed554ff284cc698a9f3f20256e43c25ff4a7c4c90a71e5e7d9dca61dd1 + languageName: node + linkType: hard + "cliui@npm:^7.0.2": version: 7.0.4 resolution: "cliui@npm:7.0.4" @@ -7174,6 +7660,13 @@ __metadata: languageName: node linkType: hard +"colorette@npm:2.0.20, colorette@npm:^2.0.20": + version: 2.0.20 + resolution: "colorette@npm:2.0.20" + checksum: 10c0/e94116ff33b0ff56f3b83b9ace895e5bf87c2a7a47b3401b8c3f3226e050d5ef76cf4072fb3325f9dc24d1698f9b730baf4e05eeaf861d74a1883073f4c98a40 + languageName: node + linkType: hard + "colorette@npm:^2.0.10": version: 2.0.19 resolution: "colorette@npm:2.0.19" @@ -7188,13 +7681,6 @@ __metadata: languageName: node linkType: hard -"colorette@npm:^2.0.20": - version: 2.0.20 - resolution: "colorette@npm:2.0.20" - checksum: 10c0/e94116ff33b0ff56f3b83b9ace895e5bf87c2a7a47b3401b8c3f3226e050d5ef76cf4072fb3325f9dc24d1698f9b730baf4e05eeaf861d74a1883073f4c98a40 - languageName: node - linkType: hard - "columnify@npm:1.6.0": version: 1.6.0 resolution: "columnify@npm:1.6.0" @@ -7205,7 +7691,7 @@ __metadata: languageName: node linkType: hard -"combined-stream@npm:^1.0.8": +"combined-stream@npm:^1.0.8, combined-stream@npm:~1.0.6": version: 1.0.8 resolution: "combined-stream@npm:1.0.8" dependencies: @@ -7287,7 +7773,7 @@ __metadata: languageName: node linkType: hard -"compressible@npm:^2.0.12, compressible@npm:~2.0.16": +"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" dependencies: @@ -7296,6 +7782,21 @@ __metadata: languageName: node linkType: hard +"compression@npm:1.8.1": + version: 1.8.1 + resolution: "compression@npm:1.8.1" + dependencies: + bytes: "npm:3.1.2" + compressible: "npm:~2.0.18" + debug: "npm:2.6.9" + negotiator: "npm:~0.6.4" + on-headers: "npm:~1.1.0" + safe-buffer: "npm:5.2.1" + vary: "npm:~1.1.2" + checksum: 10c0/85114b0b91c16594dc8c671cd9b05ef5e465066a60e5a4ed8b4551661303559a896ed17bb72c4234c04064e078f6ca86a34b8690349499a43f6fc4b844475da4 + languageName: node + linkType: hard + "compression@npm:^1.7.4": version: 1.7.4 resolution: "compression@npm:1.7.4" @@ -7474,6 +7975,13 @@ __metadata: languageName: node linkType: hard +"core-util-is@npm:1.0.2": + version: 1.0.2 + resolution: "core-util-is@npm:1.0.2" + checksum: 10c0/980a37a93956d0de8a828ce508f9b9e3317039d68922ca79995421944146700e4aaf490a6dbfebcb1c5292a7184600c7710b957d724be1e37b8254c6bc0fe246 + languageName: node + linkType: hard + "core-util-is@npm:~1.0.0": version: 1.0.3 resolution: "core-util-is@npm:1.0.3" @@ -7481,6 +7989,16 @@ __metadata: languageName: node linkType: hard +"cors@npm:2.8.5": + version: 2.8.5 + resolution: "cors@npm:2.8.5" + dependencies: + object-assign: "npm:^4" + vary: "npm:^1" + checksum: 10c0/373702b7999409922da80de4a61938aabba6929aea5b6fd9096fefb9e8342f626c0ebd7507b0e8b0b311380744cc985f27edebc0a26e0ddb784b54e1085de761 + languageName: node + linkType: hard + "cosmiconfig@npm:8.2.0": version: 8.2.0 resolution: "cosmiconfig@npm:8.2.0" @@ -7625,6 +8143,15 @@ __metadata: languageName: node linkType: hard +"dashdash@npm:^1.12.0": + version: 1.14.1 + resolution: "dashdash@npm:1.14.1" + dependencies: + assert-plus: "npm:^1.0.0" + checksum: 10c0/64589a15c5bd01fa41ff7007e0f2c6552c5ef2028075daa16b188a3721f4ba001841bf306dfc2eee6e2e6e7f76b38f5f17fb21fa847504192290ffa9e150118a + languageName: node + linkType: hard + "data-view-buffer@npm:^1.0.1": version: 1.0.1 resolution: "data-view-buffer@npm:1.0.1" @@ -7665,6 +8192,13 @@ __metadata: languageName: node linkType: hard +"dayjs@npm:1.11.13": + version: 1.11.13 + resolution: "dayjs@npm:1.11.13" + checksum: 10c0/a3caf6ac8363c7dade9d1ee797848ddcf25c1ace68d9fe8678ecf8ba0675825430de5d793672ec87b24a69bf04a1544b176547b2539982275d5542a7955f35b7 + languageName: node + linkType: hard + "debug@npm:2.6.9, debug@npm:^2.2.0": version: 2.6.9 resolution: "debug@npm:2.6.9" @@ -7686,16 +8220,19 @@ __metadata: languageName: node linkType: hard -"debug@npm:^3.2.7": - version: 3.2.7 - resolution: "debug@npm:3.2.7" +"debug@npm:4.4.1": + version: 4.4.1 + resolution: "debug@npm:4.4.1" dependencies: - ms: "npm:^2.1.1" - checksum: 10c0/37d96ae42cbc71c14844d2ae3ba55adf462ec89fd3a999459dec3833944cd999af6007ff29c780f1c61153bcaaf2c842d1e4ce1ec621e4fc4923244942e4a02a + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/d2b44bc1afd912b49bb7ebb0d50a860dc93a4dd7d946e8de94abc957bb63726b7dd5aa48c18c2386c379ec024c46692e15ed3ed97d481729f929201e671fcd55 languageName: node linkType: hard -"debug@npm:^4.4.1": +"debug@npm:4.4.3, debug@npm:^4.4.1": version: 4.4.3 resolution: "debug@npm:4.4.3" dependencies: @@ -7707,6 +8244,15 @@ __metadata: languageName: node linkType: hard +"debug@npm:^3.2.7": + version: 3.2.7 + resolution: "debug@npm:3.2.7" + dependencies: + ms: "npm:^2.1.1" + checksum: 10c0/37d96ae42cbc71c14844d2ae3ba55adf462ec89fd3a999459dec3833944cd999af6007ff29c780f1c61153bcaaf2c842d1e4ce1ec621e4fc4923244942e4a02a + languageName: node + linkType: hard + "decamelize-keys@npm:^1.1.0": version: 1.1.1 resolution: "decamelize-keys@npm:1.1.1" @@ -8087,6 +8633,18 @@ __metadata: languageName: node linkType: hard +"duplexify@npm:^3.5.0, duplexify@npm:^3.6.0": + version: 3.7.1 + resolution: "duplexify@npm:3.7.1" + dependencies: + end-of-stream: "npm:^1.0.0" + inherits: "npm:^2.0.1" + readable-stream: "npm:^2.0.0" + stream-shift: "npm:^1.0.0" + checksum: 10c0/59d1440c1b4e3a4db35ae96933392703ce83518db1828d06b9b6322920d6cbbf0b7159e88be120385fe459e77f1eb0c7622f26e9ec1f47c9ff05c2b35747dbd3 + languageName: node + linkType: hard + "duplexify@npm:^4.0.0": version: 4.1.2 resolution: "duplexify@npm:4.1.2" @@ -8106,6 +8664,16 @@ __metadata: languageName: node linkType: hard +"ecc-jsbn@npm:~0.1.1": + version: 0.1.2 + resolution: "ecc-jsbn@npm:0.1.2" + dependencies: + jsbn: "npm:~0.1.0" + safer-buffer: "npm:^2.1.0" + checksum: 10c0/6cf168bae1e2dad2e46561d9af9cbabfbf5ff592176ad4e9f0f41eaaf5fe5e10bb58147fe0a804de62b1ee9dad42c28810c88d652b21b6013c47ba8efa274ca1 + languageName: node + linkType: hard + "ecdsa-sig-formatter@npm:1.0.11, ecdsa-sig-formatter@npm:^1.0.11": version: 1.0.11 resolution: "ecdsa-sig-formatter@npm:1.0.11" @@ -8181,11 +8749,13 @@ __metadata: "@typescript-eslint/eslint-plugin": "npm:^8.0.0" "@typescript-eslint/parser": "npm:^8.0.0" "@vscode/sudo-prompt": "npm:^9.3.1" + "@yarnpkg/types": "npm:^4.0.1" chalk: "npm:^4.0.0" commander: "npm:^11.1.0" cross-spawn: "npm:^7.0.3" cross-zip: "npm:^4.0.0" debug: "npm:^4.3.1" + electron: "npm:^39.2.6" electron-installer-common: "npm:^0.10.2" electron-installer-debian: "npm:^3.2.0" electron-installer-dmg: "npm:^5.0.1" @@ -8228,6 +8798,7 @@ __metadata: 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" syncpack: "npm:^11.2.1" @@ -8235,6 +8806,7 @@ __metadata: typedoc: "npm:0.25.13" typescript: "npm:~5.4.5" username: "npm:^5.1.0" + verdaccio: "npm:^6.2.4" vite: "npm:^5.0.12" vitest: "npm:^3.1.3" webpack: "npm:^5.69.1" @@ -8253,6 +8825,8 @@ __metadata: built: true "@malept/electron-installer-flatpak": optional: true + electron: + built: true electron-installer-debian: optional: true electron-installer-dmg: @@ -8447,6 +9021,19 @@ __metadata: languageName: node linkType: hard +"electron@npm:^39.2.6": + version: 39.2.6 + resolution: "electron@npm:39.2.6" + dependencies: + "@electron/get": "npm:^2.0.0" + "@types/node": "npm:^22.7.7" + extract-zip: "npm:^2.0.1" + bin: + electron: cli.js + checksum: 10c0/d3a0f219eb4077e1a76aa6215202d3a22c1026497d79226e244fa3299a17ba0e62b97c2ddf40dfb9225cc089f5beb681dde9e5db3da3ab8f5686334e4b6888f4 + languageName: node + linkType: hard + "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -8491,6 +9078,15 @@ __metadata: languageName: node linkType: hard +"end-of-stream@npm:^1.0.0": + version: 1.4.5 + resolution: "end-of-stream@npm:1.4.5" + dependencies: + once: "npm:^1.4.0" + checksum: 10c0/b0701c92a10b89afb1cb45bf54a5292c6f008d744eb4382fa559d54775ff31617d1d7bc3ef617575f552e24fad2c7c1a1835948c66b3f3a4be0a6c1f35c883d8 + languageName: node + linkType: hard + "end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": version: 1.4.4 resolution: "end-of-stream@npm:1.4.4" @@ -8566,6 +9162,15 @@ __metadata: languageName: node linkType: hard +"envinfo@npm:7.15.0": + version: 7.15.0 + resolution: "envinfo@npm:7.15.0" + bin: + envinfo: dist/cli.js + checksum: 10c0/f03b8dba6713837fdc615bdcb767c269b740df5af2fc7c70124038ad4c123332d5939ec1d3d81fda2794fc3a2f6458a25761c0847a22ddff94fe827e6c30bf35 + languageName: node + linkType: hard + "err-code@npm:^2.0.2": version: 2.0.3 resolution: "err-code@npm:2.0.3" @@ -9578,7 +10183,16 @@ __metadata: languageName: node linkType: hard -"events@npm:3.3.0, events@npm:^3.2.0": +"events-universal@npm:^1.0.0": + version: 1.0.1 + resolution: "events-universal@npm:1.0.1" + dependencies: + bare-events: "npm:^2.7.0" + checksum: 10c0/a1d9a5e9f95843650f8ec240dd1221454c110189a9813f32cdf7185759b43f1f964367ac7dca4ebc69150b59043f2d77c7e122b0d03abf7c25477ea5494785a5 + languageName: node + linkType: hard + +"events@npm:3.3.0, events@npm:^3.2.0, events@npm:^3.3.0": version: 3.3.0 resolution: "events@npm:3.3.0" checksum: 10c0/d6b6f2adbccbcda74ddbab52ed07db727ef52e31a61ed26db9feb7dc62af7fc8e060defa65e5f8af9449b86b52cc1a1f6a79f2eafcf4e62add2b7a1fa4a432f6 @@ -9648,6 +10262,13 @@ __metadata: languageName: node linkType: hard +"express-rate-limit@npm:5.5.1": + version: 5.5.1 + resolution: "express-rate-limit@npm:5.5.1" + checksum: 10c0/0391cdb518acaabdae0517ab1fba32dce5b0813199be5b89e0ebb62399753b2ec7882571a8da1fd6a061354992aa8e00c947c2e03f850820bb47668195e2c8d6 + languageName: node + linkType: hard + "express-ws@npm:^5.0.2": version: 5.0.2 resolution: "express-ws@npm:5.0.2" @@ -9659,7 +10280,7 @@ __metadata: languageName: node linkType: hard -"express@npm:^4.17.1, express@npm:^4.17.3": +"express@npm:4.21.2, express@npm:^4.17.1, express@npm:^4.17.3": version: 4.21.2 resolution: "express@npm:4.21.2" dependencies: @@ -9698,7 +10319,7 @@ __metadata: languageName: node linkType: hard -"extend@npm:^3.0.2": +"extend@npm:^3.0.2, extend@npm:~3.0.2": version: 3.0.2 resolution: "extend@npm:3.0.2" checksum: 10c0/73bf6e27406e80aa3e85b0d1c4fd987261e628064e170ca781125c0b635a3dabad5e05adbf07595ea0cf1e6c5396cacb214af933da7cbaf24fe75ff14818e8f9 @@ -9716,7 +10337,7 @@ __metadata: languageName: node linkType: hard -"extract-zip@npm:^2.0.0": +"extract-zip@npm:^2.0.0, extract-zip@npm:^2.0.1": version: 2.0.1 resolution: "extract-zip@npm:2.0.1" dependencies: @@ -9733,6 +10354,20 @@ __metadata: languageName: node linkType: hard +"extsprintf@npm:1.3.0": + version: 1.3.0 + resolution: "extsprintf@npm:1.3.0" + checksum: 10c0/f75114a8388f0cbce68e277b6495dc3930db4dde1611072e4a140c24e204affd77320d004b947a132e9a3b97b8253017b2b62dce661975fb0adced707abf1ab5 + languageName: node + linkType: hard + +"extsprintf@npm:^1.2.0": + version: 1.4.1 + resolution: "extsprintf@npm:1.4.1" + checksum: 10c0/e10e2769985d0e9b6c7199b053a9957589d02e84de42832c295798cb422a025e6d4a92e0259c1fb4d07090f5bfde6b55fd9f880ac5855bd61d775f8ab75a7ab0 + languageName: node + linkType: hard + "fast-check@npm:^3.12.0": version: 3.22.0 resolution: "fast-check@npm:3.22.0" @@ -9749,6 +10384,13 @@ __metadata: languageName: node linkType: hard +"fast-fifo@npm:^1.2.0, fast-fifo@npm:^1.3.2": + version: 1.3.2 + resolution: "fast-fifo@npm:1.3.2" + checksum: 10c0/d53f6f786875e8b0529f784b59b4b05d4b5c31c651710496440006a398389a579c8dbcd2081311478b5bf77f4b0b21de69109c5a4eabea9d8e8783d1eb864e4c + languageName: node + linkType: hard + "fast-glob@npm:^3.2.7": version: 3.2.11 resolution: "fast-glob@npm:3.2.11" @@ -9802,6 +10444,13 @@ __metadata: languageName: node linkType: hard +"fast-uri@npm:^3.0.1": + version: 3.1.0 + resolution: "fast-uri@npm:3.1.0" + checksum: 10c0/44364adca566f70f40d1e9b772c923138d47efeac2ae9732a872baafd77061f26b097ba2f68f0892885ad177becd065520412b8ffeec34b16c99433c5b9e2de7 + languageName: node + linkType: hard + "fast-xml-parser@npm:4.4.1": version: 4.4.1 resolution: "fast-xml-parser@npm:4.4.1" @@ -10075,6 +10724,13 @@ __metadata: languageName: node linkType: hard +"forever-agent@npm:~0.6.1": + version: 0.6.1 + resolution: "forever-agent@npm:0.6.1" + checksum: 10c0/364f7f5f7d93ab661455351ce116a67877b66f59aca199559a999bd39e3cfadbfbfacc10415a915255e2210b30c23febe9aec3ca16bf2d1ff11c935a1000e24c + languageName: node + linkType: hard + "fork-ts-checker-webpack-plugin@npm:^7.2.13": version: 7.2.13 resolution: "fork-ts-checker-webpack-plugin@npm:7.2.13" @@ -10102,6 +10758,13 @@ __metadata: languageName: node linkType: hard +"form-data-encoder@npm:1.7.2": + version: 1.7.2 + resolution: "form-data-encoder@npm:1.7.2" + checksum: 10c0/56553768037b6d55d9de524f97fe70555f0e415e781cb56fc457a68263de3d40fadea2304d4beef2d40b1a851269bd7854e42c362107071892cb5238debe9464 + languageName: node + linkType: hard + "form-data@npm:^2.5.0": version: 2.5.5 resolution: "form-data@npm:2.5.5" @@ -10142,6 +10805,19 @@ __metadata: languageName: node linkType: hard +"form-data@npm:~4.0.4": + version: 4.0.5 + resolution: "form-data@npm:4.0.5" + 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.12" + checksum: 10c0/dd6b767ee0bbd6d84039db12a0fa5a2028160ffbfaba1800695713b46ae974a5f6e08b3356c3195137f8530dcd9dfcb5d5ae1eeff53d0db1e5aad863b619ce3b + languageName: node + linkType: hard + "forwarded@npm:0.2.0": version: 0.2.0 resolution: "forwarded@npm:0.2.0" @@ -10598,7 +11274,7 @@ __metadata: languageName: node linkType: hard -"get-stream@npm:^6.0.0": +"get-stream@npm:^6.0.0, get-stream@npm:^6.0.1": version: 6.0.1 resolution: "get-stream@npm:6.0.1" checksum: 10c0/49825d57d3fd6964228e6200a58169464b8e8970489b3acdc24906c782fb7f01f9f56f8e6653c4a50713771d6658f7cfe051e5eb8c12e334138c9c918b296341 @@ -10626,6 +11302,13 @@ __metadata: languageName: node linkType: hard +"get-symbol-from-current-process-h@npm:^1.0.2": + version: 1.0.2 + resolution: "get-symbol-from-current-process-h@npm:1.0.2" + checksum: 10c0/f33109e08aef7029b16f18032dce669e92efb21992946d7b575e494f32907c3d2c353685e00398b9202c332aab140e444e9333c93f2b81aa662bde3f59e3a25a + languageName: node + linkType: hard + "get-tsconfig@npm:^4.8.1": version: 4.9.0 resolution: "get-tsconfig@npm:4.9.0" @@ -10635,6 +11318,15 @@ __metadata: languageName: node linkType: hard +"getpass@npm:^0.1.1": + version: 0.1.7 + resolution: "getpass@npm:0.1.7" + dependencies: + assert-plus: "npm:^1.0.0" + checksum: 10c0/c13f8530ecf16fc509f3fa5cd8dd2129ffa5d0c7ccdf5728b6022d52954c2d24be3706b4cdf15333eec52f1fbb43feb70a01dabc639d1d10071e371da8aaa52f + languageName: node + linkType: hard + "git-raw-commits@npm:^3.0.0": version: 3.0.0 resolution: "git-raw-commits@npm:3.0.0" @@ -10931,6 +11623,26 @@ __metadata: languageName: node linkType: hard +"got-cjs@npm:12.5.4": + version: 12.5.4 + resolution: "got-cjs@npm:12.5.4" + dependencies: + "@sindresorhus/is": "npm:4.6.0" + "@szmarczak/http-timer": "npm:4.0.6" + "@types/responselike": "npm:1.0.0" + cacheable-lookup: "npm:6.1.0" + cacheable-request: "npm:7.0.2" + decompress-response: "npm:^6.0.0" + form-data-encoder: "npm:1.7.2" + get-stream: "npm:^6.0.1" + http2-wrapper: "npm:^2.1.10" + lowercase-keys: "npm:2.0.0" + p-cancelable: "npm:2.1.1" + responselike: "npm:2.0.1" + checksum: 10c0/cfbee2722fdf5d23463a0bf4f259c67ffe1423cb91b3a77e683296dfaa4bdce295dd7496aee5f2a09d5da2c6fabad0bd0efd48a34783150e242e8e8517ac1bf0 + languageName: node + linkType: hard + "got@npm:^11.7.0, got@npm:^11.8.5": version: 11.8.5 resolution: "got@npm:11.8.5" @@ -10950,7 +11662,7 @@ __metadata: 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.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": +"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" checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 @@ -10981,6 +11693,22 @@ __metadata: languageName: node linkType: hard +"gunzip-maybe@npm:1.4.2": + version: 1.4.2 + resolution: "gunzip-maybe@npm:1.4.2" + dependencies: + browserify-zlib: "npm:^0.1.4" + is-deflate: "npm:^1.0.0" + is-gzip: "npm:^1.0.0" + peek-stream: "npm:^1.1.0" + pumpify: "npm:^1.3.3" + through2: "npm:^2.0.3" + bin: + gunzip-maybe: bin.js + checksum: 10c0/42798a8061759885c2084e1804e51313d14f2dc9cf6c137e222953ec802f914e592d6f9dbf6ad67f4e78eb036e86db017d9c7c93bb23e90cd5ae09326296ed77 + languageName: node + linkType: hard + "handle-thing@npm:^2.0.0": version: 2.0.1 resolution: "handle-thing@npm:2.0.1" @@ -10988,6 +11716,24 @@ __metadata: languageName: node linkType: hard +"handlebars@npm:4.7.8": + version: 4.7.8 + resolution: "handlebars@npm:4.7.8" + dependencies: + minimist: "npm:^1.2.5" + neo-async: "npm:^2.6.2" + source-map: "npm:^0.6.1" + uglify-js: "npm:^3.1.4" + wordwrap: "npm:^1.0.0" + dependenciesMeta: + uglify-js: + optional: true + bin: + handlebars: bin/handlebars + checksum: 10c0/7aff423ea38a14bb379316f3857fe0df3c5d66119270944247f155ba1f08e07a92b340c58edaa00cfe985c21508870ee5183e0634dcb53dd405f35c93ef7f10d + languageName: node + linkType: hard + "handlebars@npm:^4.7.7": version: 4.7.7 resolution: "handlebars@npm:4.7.7" @@ -11343,6 +12089,24 @@ __metadata: languageName: node linkType: hard +"http-signature@npm:~1.4.0": + version: 1.4.0 + resolution: "http-signature@npm:1.4.0" + dependencies: + assert-plus: "npm:^1.0.0" + jsprim: "npm:^2.0.2" + sshpk: "npm:^1.18.0" + checksum: 10c0/b9806f5a9ed82a146589837d175c43b596b1cc8c9431665e83d47c152aa8a4629dd1b1e050f8f56e7f17f62cf97b58e888775093310441ddee5f105f28646b2b + languageName: node + linkType: hard + +"http-status-codes@npm:2.3.0": + version: 2.3.0 + resolution: "http-status-codes@npm:2.3.0" + checksum: 10c0/c2412188929e8eed6623eef468c62d0c3c082919c03e9b74fd79cfd060d11783dba44603e38a3cee52d26563fe32005913eaf6120aa8ba907da1238f3eaad5fe + languageName: node + linkType: hard + "http2-wrapper@npm:^1.0.0-beta.5.2": version: 1.0.3 resolution: "http2-wrapper@npm:1.0.3" @@ -11353,7 +12117,17 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:^5.0.0": +"http2-wrapper@npm:^2.1.10": + version: 2.2.1 + resolution: "http2-wrapper@npm:2.2.1" + dependencies: + quick-lru: "npm:^5.1.1" + resolve-alpn: "npm:^1.2.0" + checksum: 10c0/7207201d3c6e53e72e510c9b8912e4f3e468d3ecc0cf3bf52682f2aac9cd99358b896d1da4467380adc151cf97c412bedc59dc13dae90c523f42053a7449eedb + languageName: node + linkType: hard + +"https-proxy-agent@npm:5.0.1, https-proxy-agent@npm:^5.0.0": version: 5.0.1 resolution: "https-proxy-agent@npm:5.0.1" dependencies: @@ -11425,7 +12199,7 @@ __metadata: languageName: node linkType: hard -"ieee754@npm:^1.1.13, ieee754@npm:^1.1.4": +"ieee754@npm:^1.1.13, ieee754@npm:^1.1.4, ieee754@npm:^1.2.1": version: 1.2.1 resolution: "ieee754@npm:1.2.1" checksum: 10c0/b0782ef5e0935b9f12883a2e2aa37baa75da6e66ce6515c168697b42160807d9330de9a32ec1ed73149aea02e0d822e572bca6f1e22bdcbd2149e13b050b17bb @@ -11880,6 +12654,13 @@ __metadata: languageName: node linkType: hard +"is-deflate@npm:^1.0.0": + version: 1.0.0 + resolution: "is-deflate@npm:1.0.0" + checksum: 10c0/35f7ffcbef3549dd8a4d8df5dc09b4f4656a0fc88326e8b5201cda54114a9c2d8efb689d87c16f3f35c95bd71dcf13dc790d62b7504745b42c53ab4b40238f5a + languageName: node + linkType: hard + "is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": version: 2.2.1 resolution: "is-docker@npm:2.2.1" @@ -11944,6 +12725,13 @@ __metadata: languageName: node linkType: hard +"is-gzip@npm:^1.0.0": + version: 1.0.0 + resolution: "is-gzip@npm:1.0.0" + checksum: 10c0/cbc1db080c636a6fb0f7346e3076f8276a29a9d8b52ae67c1971a8131c43f308e98ed227d1a6f49970e6c6ebabee0568e60aed7a3579dd4e1817cddf2faaf9b7 + languageName: node + linkType: hard + "is-interactive@npm:^1.0.0": version: 1.0.0 resolution: "is-interactive@npm:1.0.0" @@ -12069,6 +12857,13 @@ __metadata: languageName: node linkType: hard +"is-promise@npm:^2.1.0": + version: 2.2.2 + resolution: "is-promise@npm:2.2.2" + checksum: 10c0/2dba959812380e45b3df0fb12e7cb4d4528c989c7abb03ececb1d1fd6ab1cbfee956ca9daa587b9db1d8ac3c1e5738cf217bdb3dfd99df8c691be4c00ae09069 + languageName: node + linkType: hard + "is-property@npm:^1.0.0, is-property@npm:^1.0.2": version: 1.0.2 resolution: "is-property@npm:1.0.2" @@ -12223,6 +13018,13 @@ __metadata: languageName: node linkType: hard +"is-typedarray@npm:~1.0.0": + version: 1.0.0 + resolution: "is-typedarray@npm:1.0.0" + checksum: 10c0/4c096275ba041a17a13cca33ac21c16bc4fd2d7d7eb94525e7cd2c2f2c1a3ab956e37622290642501ff4310601e413b675cf399ad6db49855527d2163b3eeeec + languageName: node + linkType: hard + "is-unicode-supported@npm:^0.1.0": version: 0.1.0 resolution: "is-unicode-supported@npm:0.1.0" @@ -12316,6 +13118,13 @@ __metadata: languageName: node linkType: hard +"isstream@npm:~0.1.2": + version: 0.1.2 + resolution: "isstream@npm:0.1.2" + checksum: 10c0/a6686a878735ca0a48e0d674dd6d8ad31aedfaf70f07920da16ceadc7577b46d67179a60b313f2e6860cb097a2c2eb3cbd0b89e921ae89199a59a17c3273d66f + languageName: node + linkType: hard + "jackspeak@npm:^2.3.5": version: 2.3.6 resolution: "jackspeak@npm:2.3.6" @@ -12409,6 +13218,17 @@ __metadata: languageName: node linkType: hard +"js-yaml@npm:4.1.1": + version: 4.1.1 + resolution: "js-yaml@npm:4.1.1" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/561c7d7088c40a9bb53cc75becbfb1df6ae49b34b5e6e5a81744b14ae8667ec564ad2527709d1a6e7d5e5fa6d483aa0f373a50ad98d42fde368ec4a190d4fae7 + languageName: node + linkType: hard + "js-yaml@npm:^3.10.0, js-yaml@npm:^3.12.2, js-yaml@npm:^3.13.1": version: 3.14.1 resolution: "js-yaml@npm:3.14.1" @@ -12421,6 +13241,13 @@ __metadata: languageName: node linkType: hard +"jsbn@npm:~0.1.0": + version: 0.1.1 + resolution: "jsbn@npm:0.1.1" + checksum: 10c0/e046e05c59ff880ee4ef68902dbdcb6d2f3c5d60c357d4d68647dc23add556c31c0e5f41bdb7e69e793dd63468bd9e085da3636341048ef577b18f5b713877c0 + languageName: node + linkType: hard + "json-bigint@npm:^1.0.0": version: 1.0.0 resolution: "json-bigint@npm:1.0.0" @@ -12472,6 +13299,13 @@ __metadata: languageName: node linkType: hard +"json-schema@npm:0.4.0": + version: 0.4.0 + resolution: "json-schema@npm:0.4.0" + checksum: 10c0/d4a637ec1d83544857c1c163232f3da46912e971d5bf054ba44fdb88f07d8d359a462b4aec46f2745efbc57053365608d88bc1d7b1729f7b4fc3369765639ed3 + languageName: node + linkType: hard + "json-stable-stringify-without-jsonify@npm:^1.0.1": version: 1.0.1 resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" @@ -12486,7 +13320,7 @@ __metadata: languageName: node linkType: hard -"json-stringify-safe@npm:^5.0.1": +"json-stringify-safe@npm:^5.0.1, json-stringify-safe@npm:~5.0.1": version: 5.0.1 resolution: "json-stringify-safe@npm:5.0.1" checksum: 10c0/7dbf35cd0411d1d648dceb6d59ce5857ec939e52e4afc37601aa3da611f0987d5cee5b38d58329ceddf3ed48bd7215229c8d52059ab01f2444a338bf24ed0f37 @@ -12566,6 +13400,36 @@ __metadata: languageName: node linkType: hard +"jsonwebtoken@npm:9.0.2": + version: 9.0.2 + resolution: "jsonwebtoken@npm:9.0.2" + dependencies: + jws: "npm:^3.2.2" + lodash.includes: "npm:^4.3.0" + lodash.isboolean: "npm:^3.0.3" + lodash.isinteger: "npm:^4.0.4" + lodash.isnumber: "npm:^3.0.3" + lodash.isplainobject: "npm:^4.0.6" + lodash.isstring: "npm:^4.0.1" + lodash.once: "npm:^4.0.0" + ms: "npm:^2.1.1" + semver: "npm:^7.5.4" + checksum: 10c0/d287a29814895e866db2e5a0209ce730cbc158441a0e5a70d5e940eb0d28ab7498c6bf45029cc8b479639bca94056e9a7f254e2cdb92a2f5750c7f358657a131 + languageName: node + linkType: hard + +"jsprim@npm:^2.0.2": + version: 2.0.2 + resolution: "jsprim@npm:2.0.2" + dependencies: + assert-plus: "npm:1.0.0" + extsprintf: "npm:1.3.0" + json-schema: "npm:0.4.0" + verror: "npm:1.10.0" + checksum: 10c0/677be2d41df536c92c6d0114a492ef197084018cfbb1a3e10b1fa1aad889564b2e3a7baa6af7949cc2d73678f42368b0be165a26bd4e4de6883a30dd6a24e98d + languageName: node + linkType: hard + "jsx-ast-utils@npm:^2.4.1 || ^3.0.0": version: 3.3.3 resolution: "jsx-ast-utils@npm:3.3.3" @@ -12597,24 +13461,45 @@ __metadata: languageName: node linkType: hard -"jwa@npm:^2.0.1": - version: 2.0.1 - resolution: "jwa@npm:2.0.1" +"jwa@npm:^1.4.2": + version: 1.4.2 + resolution: "jwa@npm:1.4.2" dependencies: buffer-equal-constant-time: "npm:^1.0.1" ecdsa-sig-formatter: "npm:1.0.11" safe-buffer: "npm:^5.0.1" - checksum: 10c0/ab3ebc6598e10dc11419d4ed675c9ca714a387481466b10e8a6f3f65d8d9c9237e2826f2505280a739cf4cbcf511cb288eeec22b5c9c63286fc5a2e4f97e78cf + checksum: 10c0/210a544a42ca22203e8fc538835205155ba3af6a027753109f9258bdead33086bac3c25295af48ac1981f87f9c5f941bc8f70303670f54ea7dcaafb53993d92c + languageName: node + linkType: hard + +"jwa@npm:^2.0.0": + version: 2.0.0 + resolution: "jwa@npm:2.0.0" + dependencies: + buffer-equal-constant-time: "npm:1.0.1" + ecdsa-sig-formatter: "npm:1.0.11" + safe-buffer: "npm:^5.0.1" + checksum: 10c0/6baab823b93c038ba1d2a9e531984dcadbc04e9eb98d171f4901b7a40d2be15961a359335de1671d78cb6d987f07cbe5d350d8143255977a889160c4d90fcc3c + languageName: node + linkType: hard + +"jws@npm:^3.2.2": + version: 3.2.3 + resolution: "jws@npm:3.2.3" + dependencies: + jwa: "npm:^1.4.2" + safe-buffer: "npm:^5.0.1" + checksum: 10c0/9fdf9d6783b1892ef413ef373cd351eacc847ba01deec6fbfea96830e93241863ccbee66f3b749fc2310c59b6db2209d3f4b52931c0c259b52b17de20715917f languageName: node linkType: hard "jws@npm:^4.0.0": - version: 4.0.1 - resolution: "jws@npm:4.0.1" + version: 4.0.0 + resolution: "jws@npm:4.0.0" dependencies: - jwa: "npm:^2.0.1" + jwa: "npm:^2.0.0" safe-buffer: "npm:^5.0.1" - checksum: 10c0/6be1ed93023aef570ccc5ea8d162b065840f3ef12f0d1bb3114cade844de7a357d5dc558201d9a65101e70885a6fa56b17462f520e6b0d426195510618a154d0 + checksum: 10c0/f1ca77ea5451e8dc5ee219cb7053b8a4f1254a79cb22417a2e1043c1eb8a569ae118c68f24d72a589e8a3dd1824697f47d6bd4fb4bebb93a3bdf53545e721661 languageName: node linkType: hard @@ -12971,6 +13856,15 @@ __metadata: languageName: node linkType: hard +"lockfile@npm:1.0.4": + version: 1.0.4 + resolution: "lockfile@npm:1.0.4" + dependencies: + signal-exit: "npm:^3.0.2" + checksum: 10c0/80b7777ceb43105d9e588733c3efc2514653a5e3a0dae3e61347a1f5381da34dcaa2caaa60c39ed5d4ad31c1735a4831e5639a0ba1c508bfea8dbc9c89777b37 + languageName: node + linkType: hard + "lodash.defaults@npm:^4.2.0": version: 4.2.0 resolution: "lodash.defaults@npm:4.2.0" @@ -12985,10 +13879,52 @@ __metadata: languageName: node linkType: hard -"lodash.ismatch@npm:^4.4.0": - version: 4.4.0 - resolution: "lodash.ismatch@npm:4.4.0" - checksum: 10c0/8f96a5dc4b8d3fc5a033dcb259d0c3148a1044fa4d02b4a0e8dce0fa1f2ef3ec4ac131e20b5cb2c985a4e9bcb1c37c0aa5af2cef70094959389617347b8fc645 +"lodash.includes@npm:^4.3.0": + version: 4.3.0 + resolution: "lodash.includes@npm:4.3.0" + checksum: 10c0/7ca498b9b75bf602d04e48c0adb842dfc7d90f77bcb2a91a2b2be34a723ad24bc1c8b3683ec6b2552a90f216c723cdea530ddb11a3320e08fa38265703978f4b + languageName: node + linkType: hard + +"lodash.isboolean@npm:^3.0.3": + version: 3.0.3 + resolution: "lodash.isboolean@npm:3.0.3" + checksum: 10c0/0aac604c1ef7e72f9a6b798e5b676606042401dd58e49f051df3cc1e3adb497b3d7695635a5cbec4ae5f66456b951fdabe7d6b387055f13267cde521f10ec7f7 + languageName: node + linkType: hard + +"lodash.isinteger@npm:^4.0.4": + version: 4.0.4 + resolution: "lodash.isinteger@npm:4.0.4" + checksum: 10c0/4c3e023a2373bf65bf366d3b8605b97ec830bca702a926939bcaa53f8e02789b6a176e7f166b082f9365bfec4121bfeb52e86e9040cb8d450e64c858583f61b7 + languageName: node + linkType: hard + +"lodash.ismatch@npm:^4.4.0": + version: 4.4.0 + resolution: "lodash.ismatch@npm:4.4.0" + checksum: 10c0/8f96a5dc4b8d3fc5a033dcb259d0c3148a1044fa4d02b4a0e8dce0fa1f2ef3ec4ac131e20b5cb2c985a4e9bcb1c37c0aa5af2cef70094959389617347b8fc645 + languageName: node + linkType: hard + +"lodash.isnumber@npm:^3.0.3": + version: 3.0.3 + resolution: "lodash.isnumber@npm:3.0.3" + checksum: 10c0/2d01530513a1ee4f72dd79528444db4e6360588adcb0e2ff663db2b3f642d4bb3d687051ae1115751ca9082db4fdef675160071226ca6bbf5f0c123dbf0aa12d + languageName: node + linkType: hard + +"lodash.isplainobject@npm:^4.0.6": + version: 4.0.6 + resolution: "lodash.isplainobject@npm:4.0.6" + checksum: 10c0/afd70b5c450d1e09f32a737bed06ff85b873ecd3d3d3400458725283e3f2e0bb6bf48e67dbe7a309eb371a822b16a26cca4a63c8c52db3fc7dc9d5f9dd324cbb + languageName: node + linkType: hard + +"lodash.isstring@npm:^4.0.1": + version: 4.0.1 + resolution: "lodash.isstring@npm:4.0.1" + checksum: 10c0/09eaf980a283f9eef58ef95b30ec7fee61df4d6bf4aba3b5f096869cc58f24c9da17900febc8ffd67819b4e29de29793190e88dc96983db92d84c95fa85d1c92 languageName: node linkType: hard @@ -12999,7 +13935,14 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.17.12, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4": +"lodash.once@npm:^4.0.0": + version: 4.1.1 + resolution: "lodash.once@npm:4.1.1" + checksum: 10c0/46a9a0a66c45dd812fcc016e46605d85ad599fe87d71a02f6736220554b52ffbe82e79a483ad40f52a8a95755b0d1077fba259da8bfb6694a7abbf4a48f1fc04 + languageName: node + linkType: hard + +"lodash@npm:4, lodash@npm:4.17.21, lodash@npm:^4.17.12, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c @@ -13066,6 +14009,19 @@ __metadata: languageName: node linkType: hard +"lowdb@npm:1.0.0": + version: 1.0.0 + resolution: "lowdb@npm:1.0.0" + dependencies: + graceful-fs: "npm:^4.1.3" + is-promise: "npm:^2.1.0" + lodash: "npm:4" + pify: "npm:^3.0.0" + steno: "npm:^0.4.1" + checksum: 10c0/a6b9184bec92a8f02718a6bf5941d87ba17e54cd4906cb8fcd00cf7ee52def678d36be5f5f11a26599e450911107fdc9b3e672b3e2838541aa58a649a88a40af + languageName: node + linkType: hard + "lower-case@npm:^2.0.2": version: 2.0.2 resolution: "lower-case@npm:2.0.2" @@ -13075,13 +14031,20 @@ __metadata: languageName: node linkType: hard -"lowercase-keys@npm:^2.0.0": +"lowercase-keys@npm:2.0.0, lowercase-keys@npm:^2.0.0": version: 2.0.0 resolution: "lowercase-keys@npm:2.0.0" checksum: 10c0/f82a2b3568910509da4b7906362efa40f5b54ea14c2584778ddb313226f9cbf21020a5db35f9b9a0e95847a9b781d548601f31793d736b22a2b8ae8eb9ab1082 languageName: node linkType: hard +"lru-cache@npm:7.18.3": + version: 7.18.3 + resolution: "lru-cache@npm:7.18.3" + checksum: 10c0/b3a452b491433db885beed95041eb104c157ef7794b9c9b4d647be503be91769d11206bb573849a16b4cc0d03cbd15ffd22df7960997788b74c1d399ac7a4fed + languageName: node + linkType: hard + "lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.2": version: 10.4.3 resolution: "lru-cache@npm:10.4.3" @@ -13694,7 +14657,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^2.0.8, mime-types@npm:^2.1.12, mime-types@npm:^2.1.25, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:^2.1.35, mime-types@npm:~2.1.17, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": +"mime-types@npm:^2.0.8, mime-types@npm:^2.1.12, mime-types@npm:^2.1.25, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:^2.1.35, mime-types@npm:~2.1.17, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -13712,7 +14675,7 @@ __metadata: languageName: node linkType: hard -"mime@npm:^3.0.0": +"mime@npm:3.0.0, mime@npm:^3.0.0": version: 3.0.0 resolution: "mime@npm:3.0.0" bin: @@ -13772,6 +14735,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:7.4.6": + version: 7.4.6 + resolution: "minimatch@npm:7.4.6" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/e587bf3d90542555a3d58aca94c549b72d58b0a66545dd00eef808d0d66e5d9a163d3084da7f874e83ca8cc47e91c670e6c6f6593a3e7bb27fcc0e6512e87c67 + languageName: node + linkType: hard + "minimatch@npm:9.0.3, minimatch@npm:^9.0.0, minimatch@npm:^9.0.1, minimatch@npm:^9.0.3": version: 9.0.3 resolution: "minimatch@npm:9.0.3" @@ -14007,6 +14979,15 @@ __metadata: languageName: node linkType: hard +"mkdirp@npm:1.0.4, mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: 10c0/46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf + languageName: node + linkType: hard + "mkdirp@npm:^0.5.1": version: 0.5.5 resolution: "mkdirp@npm:0.5.5" @@ -14018,15 +14999,6 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": - version: 1.0.4 - resolution: "mkdirp@npm:1.0.4" - bin: - mkdirp: bin/cmd.js - checksum: 10c0/46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf - languageName: node - linkType: hard - "modify-values@npm:^1.0.1": version: 1.0.1 resolution: "modify-values@npm:1.0.1" @@ -14179,15 +15151,6 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.3.7": - version: 3.3.8 - resolution: "nanoid@npm:3.3.8" - bin: - nanoid: bin/nanoid.cjs - checksum: 10c0/4b1bb29f6cfebf3be3bc4ad1f1296fb0a10a3043a79f34fbffe75d1621b4318319211cd420549459018ea3592f0d2f159247a6f874911d6d26eaaadda2478120 - languageName: node - linkType: hard - "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -14209,6 +15172,13 @@ __metadata: languageName: node linkType: hard +"negotiator@npm:~0.6.4": + version: 0.6.4 + resolution: "negotiator@npm:0.6.4" + checksum: 10c0/3e677139c7fb7628a6f36335bf11a885a62c21d5390204590a1a214a5631fcbe5ea74ef6a610b60afe84b4d975cbe0566a23f20ee17c77c73e74b80032108dea + languageName: node + linkType: hard + "neo-async@npm:^2.6.0, neo-async@npm:^2.6.2": version: 2.6.2 resolution: "neo-async@npm:2.6.2" @@ -14249,6 +15219,15 @@ __metadata: languageName: node linkType: hard +"node-addon-api@npm:^3.0.0": + version: 3.2.1 + resolution: "node-addon-api@npm:3.2.1" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/41f21c9d12318875a2c429befd06070ce367065a3ef02952cfd4ea17ef69fa14012732f510b82b226e99c254da8d671847ea018cad785f839a5366e02dd56302 + languageName: node + linkType: hard + "node-api-version@npm:^0.2.0": version: 0.2.0 resolution: "node-api-version@npm:0.2.0" @@ -14258,7 +15237,7 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^2.6.7": +"node-fetch@npm:^2.6.7, node-fetch@npm:cjs": version: 2.6.7 resolution: "node-fetch@npm:2.6.7" dependencies: @@ -14293,6 +15272,17 @@ __metadata: languageName: node linkType: hard +"node-gyp-build@npm:^4.2.1": + version: 4.8.4 + resolution: "node-gyp-build@npm:4.8.4" + bin: + node-gyp-build: bin.js + node-gyp-build-optional: optional.js + node-gyp-build-test: build-test.js + checksum: 10c0/444e189907ece2081fe60e75368784f7782cfddb554b60123743dfb89509df89f1f29c03bbfa16b3a3e0be3f48799a4783f487da6203245fa5bed239ba7407e1 + languageName: node + linkType: hard + "node-gyp@npm:^11.0.0, node-gyp@npm:latest": version: 11.4.2 resolution: "node-gyp@npm:11.4.2" @@ -14635,7 +15625,7 @@ __metadata: languageName: node linkType: hard -"object-assign@npm:^4.1.1": +"object-assign@npm:^4, object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" checksum: 10c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 @@ -14788,6 +15778,13 @@ __metadata: languageName: node linkType: hard +"on-exit-leak-free@npm:2.1.2, on-exit-leak-free@npm:^2.1.0": + version: 2.1.2 + resolution: "on-exit-leak-free@npm:2.1.2" + checksum: 10c0/faea2e1c9d696ecee919026c32be8d6a633a7ac1240b3b87e944a380e8a11dc9c95c4a1f8fb0568de7ab8db3823e790f12bda45296b1d111e341aad3922a0570 + languageName: node + linkType: hard + "on-finished@npm:2.4.1": version: 2.4.1 resolution: "on-finished@npm:2.4.1" @@ -14804,6 +15801,13 @@ __metadata: languageName: node linkType: hard +"on-headers@npm:~1.1.0": + version: 1.1.0 + resolution: "on-headers@npm:1.1.0" + checksum: 10c0/2c3b6b0d68ec9adbd561dc2d61c9b14da8ac03d8a2f0fd9e97bdf0600c887d5d97f664ff3be6876cf40cda6e3c587d73a4745e10b426ac50c7664fc5a0dfc0a1 + languageName: node + linkType: hard + "once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": version: 1.4.0 resolution: "once@npm:1.4.0" @@ -14917,7 +15921,7 @@ __metadata: languageName: node linkType: hard -"p-cancelable@npm:^2.0.0": +"p-cancelable@npm:2.1.1, p-cancelable@npm:^2.0.0": version: 2.1.1 resolution: "p-cancelable@npm:2.1.1" checksum: 10c0/8c6dc1f8dd4154fd8b96a10e55a3a832684c4365fb9108056d89e79fbf21a2465027c04a59d0d797b5ffe10b54a61a32043af287d5c4860f1e996cbdbc847f01 @@ -15158,6 +16162,13 @@ __metadata: languageName: node linkType: hard +"pako@npm:~0.2.0": + version: 0.2.9 + resolution: "pako@npm:0.2.9" + checksum: 10c0/79c1806ebcf325b60ae599e4d7227c2e346d7b829dc20f5cf24cef07c934079dc3a61c5b3c8278a2f7a190c4a613e343ea11e5302dbe252efd11712df4b6b041 + languageName: node + linkType: hard + "param-case@npm:^3.0.4": version: 3.0.4 resolution: "param-case@npm:3.0.4" @@ -15404,6 +16415,17 @@ __metadata: languageName: node linkType: hard +"peek-stream@npm:^1.1.0": + version: 1.1.3 + resolution: "peek-stream@npm:1.1.3" + dependencies: + buffer-from: "npm:^1.0.0" + duplexify: "npm:^3.5.0" + through2: "npm:^2.0.3" + checksum: 10c0/3c35d1951b8640036f93b1b5628a90f849e49ca4f2e6aba393ff4978413931d9c491c83f71a92f878d5ea4c670af0bba04dfcfb79b310ead22601db7c1420e36 + languageName: node + linkType: hard + "pend@npm:~1.2.0": version: 1.2.0 resolution: "pend@npm:1.2.0" @@ -15411,6 +16433,13 @@ __metadata: languageName: node linkType: hard +"performance-now@npm:^2.1.0": + version: 2.1.0 + resolution: "performance-now@npm:2.1.0" + checksum: 10c0/22c54de06f269e29f640e0e075207af57de5052a3d15e360c09b9a8663f393f6f45902006c1e71aa8a5a1cdfb1a47fe268826f8496d6425c362f00f5bc3e85d9 + languageName: node + linkType: hard + "picocolors@npm:^1.0.0, picocolors@npm:^1.0.1": version: 1.1.0 resolution: "picocolors@npm:1.1.0" @@ -15483,6 +16512,53 @@ __metadata: languageName: node linkType: hard +"pino-abstract-transport@npm:1.2.0": + version: 1.2.0 + resolution: "pino-abstract-transport@npm:1.2.0" + dependencies: + readable-stream: "npm:^4.0.0" + split2: "npm:^4.0.0" + checksum: 10c0/b4ab59529b7a91f488440147fc58ee0827a6c1c5ca3627292339354b1381072c1a6bfa9b46d03ad27872589e8477ecf74da12cf286e1e6b665ac64a3b806bf07 + languageName: node + linkType: hard + +"pino-abstract-transport@npm:^2.0.0": + version: 2.0.0 + resolution: "pino-abstract-transport@npm:2.0.0" + dependencies: + split2: "npm:^4.0.0" + checksum: 10c0/02c05b8f2ffce0d7c774c8e588f61e8b77de8ccb5f8125afd4a7325c9ea0e6af7fb78168999657712ae843e4462bb70ac550dfd6284f930ee57f17f486f25a9f + languageName: node + linkType: hard + +"pino-std-serializers@npm:^7.0.0": + version: 7.0.0 + resolution: "pino-std-serializers@npm:7.0.0" + checksum: 10c0/73e694d542e8de94445a03a98396cf383306de41fd75ecc07085d57ed7a57896198508a0dec6eefad8d701044af21eb27253ccc352586a03cf0d4a0bd25b4133 + languageName: node + linkType: hard + +"pino@npm:9.14.0": + version: 9.14.0 + resolution: "pino@npm:9.14.0" + dependencies: + "@pinojs/redact": "npm:^0.4.0" + atomic-sleep: "npm:^1.0.0" + on-exit-leak-free: "npm:^2.1.0" + pino-abstract-transport: "npm:^2.0.0" + pino-std-serializers: "npm:^7.0.0" + process-warning: "npm:^5.0.0" + quick-format-unescaped: "npm:^4.0.3" + real-require: "npm:^0.2.0" + safe-stable-stringify: "npm:^2.3.1" + sonic-boom: "npm:^4.0.1" + thread-stream: "npm:^3.0.0" + bin: + pino: bin.js + checksum: 10c0/9a10d9bf820a585eae9bc270fb4e55c895e48280d54adbbb4063ec061694b22d8809c80203cf5fe9f920a54c832b0b8dfb67cb28a04baa13abebaf261a9c9f3e + languageName: node + linkType: hard + "pirates@npm:^4.0.1": version: 4.0.5 resolution: "pirates@npm:4.0.5" @@ -15547,18 +16623,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.4.43": - version: 8.4.49 - resolution: "postcss@npm:8.4.49" - dependencies: - nanoid: "npm:^3.3.7" - picocolors: "npm:^1.1.1" - source-map-js: "npm:^1.2.1" - checksum: 10c0/f1b3f17aaf36d136f59ec373459f18129908235e65dbdc3aee5eef8eba0756106f52de5ec4682e29a2eab53eb25170e7e871b3e4b52a8f1de3d344a514306be3 - languageName: node - linkType: hard - -"postcss@npm:^8.5.3": +"postcss@npm:^8.4.43, postcss@npm:^8.5.3": version: 8.5.6 resolution: "postcss@npm:8.5.6" dependencies: @@ -15645,6 +16710,27 @@ __metadata: languageName: node linkType: hard +"process-warning@npm:1.0.0": + version: 1.0.0 + resolution: "process-warning@npm:1.0.0" + checksum: 10c0/43ec4229d64eb5c58340c8aacade49eb5f6fd513eae54140abf365929ca20987f0a35c5868125e2b583cad4de8cd257beb5667d9cc539d9190a7a4c3014adf22 + languageName: node + linkType: hard + +"process-warning@npm:^5.0.0": + version: 5.0.0 + resolution: "process-warning@npm:5.0.0" + checksum: 10c0/941f48863d368ec161e0b5890ba0c6af94170078f3d6b5e915c19b36fb59edb0dc2f8e834d25e0d375a8bf368a49d490f080508842168832b93489d17843ec29 + languageName: node + linkType: hard + +"process@npm:^0.11.10": + version: 0.11.10 + resolution: "process@npm:0.11.10" + checksum: 10c0/40c3ce4b7e6d4b8c3355479df77aeed46f81b279818ccdc500124e6a5ab882c0cc81ff7ea16384873a95a74c4570b01b120f287abbdd4c877931460eca6084b3 + languageName: node + linkType: hard + "proggy@npm:^3.0.0": version: 3.0.0 resolution: "proggy@npm:3.0.0" @@ -15753,6 +16839,16 @@ __metadata: languageName: node linkType: hard +"pump@npm:^2.0.0": + version: 2.0.1 + resolution: "pump@npm:2.0.1" + dependencies: + end-of-stream: "npm:^1.1.0" + once: "npm:^1.3.1" + checksum: 10c0/f1fe8960f44d145f8617ea4c67de05392da4557052980314c8f85081aee26953bdcab64afad58a2b1df0e8ff7203e3710e848cbe81a01027978edc6e264db355 + languageName: node + linkType: hard + "pump@npm:^3.0.0": version: 3.0.0 resolution: "pump@npm:3.0.0" @@ -15763,6 +16859,17 @@ __metadata: languageName: node linkType: hard +"pumpify@npm:^1.3.3": + version: 1.5.1 + resolution: "pumpify@npm:1.5.1" + dependencies: + duplexify: "npm:^3.6.0" + inherits: "npm:^2.0.3" + pump: "npm:^2.0.0" + checksum: 10c0/0bcabf9e3dbf2d0cc1f9b84ac80d3c75386111caf8963bfd98817a1e2192000ac0ccc804ca6ccd5b2b8430fdb71347b20fb2f014fe3d41adbacb1b502a841c45 + languageName: node + linkType: hard + "punycode@npm:^2.1.0": version: 2.1.1 resolution: "punycode@npm:2.1.1" @@ -15793,6 +16900,15 @@ __metadata: languageName: node linkType: hard +"qs@npm:6.14.0": + version: 6.14.0 + resolution: "qs@npm:6.14.0" + dependencies: + side-channel: "npm:^1.1.0" + checksum: 10c0/8ea5d91bf34f440598ee389d4a7d95820e3b837d3fd9f433871f7924801becaa0cd3b3b4628d49a7784d06a8aea9bc4554d2b6d8d584e2d221dc06238a42909c + languageName: node + linkType: hard + "querystringify@npm:^2.1.1": version: 2.2.0 resolution: "querystringify@npm:2.2.0" @@ -15807,6 +16923,13 @@ __metadata: languageName: node linkType: hard +"quick-format-unescaped@npm:^4.0.3": + version: 4.0.4 + resolution: "quick-format-unescaped@npm:4.0.4" + checksum: 10c0/fe5acc6f775b172ca5b4373df26f7e4fd347975578199e7d74b2ae4077f0af05baa27d231de1e80e8f72d88275ccc6028568a7a8c9ee5e7368ace0e18eff93a4 + languageName: node + linkType: hard + "quick-lru@npm:^4.0.1": version: 4.0.1 resolution: "quick-lru@npm:4.0.1" @@ -16008,6 +17131,21 @@ __metadata: languageName: node linkType: hard +"readable-stream@npm:^2.0.0": + version: 2.3.8 + resolution: "readable-stream@npm:2.3.8" + dependencies: + core-util-is: "npm:~1.0.0" + inherits: "npm:~2.0.3" + isarray: "npm:~1.0.0" + process-nextick-args: "npm:~2.0.0" + safe-buffer: "npm:~5.1.1" + string_decoder: "npm:~1.1.1" + util-deprecate: "npm:~1.0.1" + checksum: 10c0/7efdb01f3853bc35ac62ea25493567bf588773213f5f4a79f9c365e1ad13bab845ac0dae7bc946270dc40c3929483228415e92a3fc600cc7e4548992f41ee3fa + languageName: node + linkType: hard + "readable-stream@npm:^2.0.1, readable-stream@npm:~2.3.6": version: 2.3.7 resolution: "readable-stream@npm:2.3.7" @@ -16034,6 +17172,19 @@ __metadata: languageName: node linkType: hard +"readable-stream@npm:^4.0.0": + version: 4.7.0 + resolution: "readable-stream@npm:4.7.0" + dependencies: + abort-controller: "npm:^3.0.0" + buffer: "npm:^6.0.3" + events: "npm:^3.3.0" + process: "npm:^0.11.10" + string_decoder: "npm:^1.3.0" + checksum: 10c0/fd86d068da21cfdb10f7a4479f2e47d9c0a9b0c862fc0c840a7e5360201580a55ac399c764b12a4f6fa291f8cee74d9c4b7562e0d53b3c4b2769f2c98155d957 + languageName: node + linkType: hard + "readdirp@npm:~3.6.0": version: 3.6.0 resolution: "readdirp@npm:3.6.0" @@ -16043,6 +17194,13 @@ __metadata: languageName: node linkType: hard +"real-require@npm:^0.2.0": + version: 0.2.0 + resolution: "real-require@npm:0.2.0" + checksum: 10c0/23eea5623642f0477412ef8b91acd3969015a1501ed34992ada0e3af521d3c865bb2fe4cdbfec5fe4b505f6d1ef6a03e5c3652520837a8c3b53decff7e74b6a0 + languageName: node + linkType: hard + "rechoir@npm:^0.8.0": version: 0.8.0 resolution: "rechoir@npm:0.8.0" @@ -16062,6 +17220,19 @@ __metadata: languageName: node linkType: hard +"ref-napi@npm:^3.0.3": + version: 3.0.3 + resolution: "ref-napi@npm:3.0.3" + dependencies: + debug: "npm:^4.1.1" + get-symbol-from-current-process-h: "npm:^1.0.2" + node-addon-api: "npm:^3.0.0" + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.2.1" + checksum: 10c0/03768cfe6134061c4afe8c5da6cc03ced9763ad1b8401895df2c5f6b10211dfd2bbcf31cca256e2abe9f2d4ddf08333590a6589b2ec5e68efacf70de2c0e2d7b + languageName: node + linkType: hard + "reflect.getprototypeof@npm:^1.0.6, reflect.getprototypeof@npm:^1.0.9": version: 1.0.9 resolution: "reflect.getprototypeof@npm:1.0.9" @@ -16165,7 +17336,7 @@ __metadata: languageName: node linkType: hard -"resolve-alpn@npm:^1.0.0": +"resolve-alpn@npm:^1.0.0, resolve-alpn@npm:^1.2.0": version: 1.2.1 resolution: "resolve-alpn@npm:1.2.1" checksum: 10c0/b70b29c1843bc39781ef946c8cd4482e6d425976599c0f9c138cec8209e4e0736161bf39319b01676a847000085dfdaf63583c6fb4427bf751a10635bd2aa0c4 @@ -16313,7 +17484,7 @@ __metadata: languageName: node linkType: hard -"responselike@npm:^2.0.0": +"responselike@npm:2.0.1, responselike@npm:^2.0.0": version: 2.0.1 resolution: "responselike@npm:2.0.1" dependencies: @@ -16440,28 +17611,32 @@ __metadata: linkType: hard "rollup@npm:^4.20.0": - version: 4.27.4 - resolution: "rollup@npm:4.27.4" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.27.4" - "@rollup/rollup-android-arm64": "npm:4.27.4" - "@rollup/rollup-darwin-arm64": "npm:4.27.4" - "@rollup/rollup-darwin-x64": "npm:4.27.4" - "@rollup/rollup-freebsd-arm64": "npm:4.27.4" - "@rollup/rollup-freebsd-x64": "npm:4.27.4" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.27.4" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.27.4" - "@rollup/rollup-linux-arm64-gnu": "npm:4.27.4" - "@rollup/rollup-linux-arm64-musl": "npm:4.27.4" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.27.4" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.27.4" - "@rollup/rollup-linux-s390x-gnu": "npm:4.27.4" - "@rollup/rollup-linux-x64-gnu": "npm:4.27.4" - "@rollup/rollup-linux-x64-musl": "npm:4.27.4" - "@rollup/rollup-win32-arm64-msvc": "npm:4.27.4" - "@rollup/rollup-win32-ia32-msvc": "npm:4.27.4" - "@rollup/rollup-win32-x64-msvc": "npm:4.27.4" - "@types/estree": "npm:1.0.6" + version: 4.53.3 + resolution: "rollup@npm:4.53.3" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.53.3" + "@rollup/rollup-android-arm64": "npm:4.53.3" + "@rollup/rollup-darwin-arm64": "npm:4.53.3" + "@rollup/rollup-darwin-x64": "npm:4.53.3" + "@rollup/rollup-freebsd-arm64": "npm:4.53.3" + "@rollup/rollup-freebsd-x64": "npm:4.53.3" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.53.3" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.53.3" + "@rollup/rollup-linux-arm64-gnu": "npm:4.53.3" + "@rollup/rollup-linux-arm64-musl": "npm:4.53.3" + "@rollup/rollup-linux-loong64-gnu": "npm:4.53.3" + "@rollup/rollup-linux-ppc64-gnu": "npm:4.53.3" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.53.3" + "@rollup/rollup-linux-riscv64-musl": "npm:4.53.3" + "@rollup/rollup-linux-s390x-gnu": "npm:4.53.3" + "@rollup/rollup-linux-x64-gnu": "npm:4.53.3" + "@rollup/rollup-linux-x64-musl": "npm:4.53.3" + "@rollup/rollup-openharmony-arm64": "npm:4.53.3" + "@rollup/rollup-win32-arm64-msvc": "npm:4.53.3" + "@rollup/rollup-win32-ia32-msvc": "npm:4.53.3" + "@rollup/rollup-win32-x64-gnu": "npm:4.53.3" + "@rollup/rollup-win32-x64-msvc": "npm:4.53.3" + "@types/estree": "npm:1.0.8" fsevents: "npm:~2.3.2" dependenciesMeta: "@rollup/rollup-android-arm-eabi": @@ -16484,27 +17659,35 @@ __metadata: optional: true "@rollup/rollup-linux-arm64-musl": optional: true - "@rollup/rollup-linux-powerpc64le-gnu": + "@rollup/rollup-linux-loong64-gnu": + optional: true + "@rollup/rollup-linux-ppc64-gnu": optional: true "@rollup/rollup-linux-riscv64-gnu": optional: true + "@rollup/rollup-linux-riscv64-musl": + optional: true "@rollup/rollup-linux-s390x-gnu": optional: true "@rollup/rollup-linux-x64-gnu": optional: true "@rollup/rollup-linux-x64-musl": optional: true + "@rollup/rollup-openharmony-arm64": + optional: true "@rollup/rollup-win32-arm64-msvc": optional: true "@rollup/rollup-win32-ia32-msvc": optional: true + "@rollup/rollup-win32-x64-gnu": + optional: true "@rollup/rollup-win32-x64-msvc": optional: true fsevents: optional: true bin: rollup: dist/bin/rollup - checksum: 10c0/1442650cfea5e4617ce14743784f6f578817e31db56f9c8aaf96a82daa9bc20b6ccd66c0d677dbf302a4da3e70664dc3bef11a1aec85e6aff3cecccb945b1d35 + checksum: 10c0/a21305aac72013083bd0dec92162b0f7f24cacf57c876ca601ec76e892895952c9ea592c1c07f23b8c125f7979c2b17f7fb565e386d03ee4c1f0952ac4ab0d75 languageName: node linkType: hard @@ -16682,7 +17865,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 @@ -16711,7 +17894,14 @@ __metadata: languageName: node linkType: hard -"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": +"safe-stable-stringify@npm:^2.3.1": + version: 2.5.0 + resolution: "safe-stable-stringify@npm:2.5.0" + checksum: 10c0/baea14971858cadd65df23894a40588ed791769db21bafb7fd7608397dbdce9c5aac60748abae9995e0fc37e15f2061980501e012cd48859740796bea2987f49 + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.0.2, safer-buffer@npm:^2.1.0, safer-buffer@npm:~2.1.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 @@ -16793,6 +17983,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:7.7.3": + version: 7.7.3 + resolution: "semver@npm:7.7.3" + bin: + semver: bin/semver.js + checksum: 10c0/4afe5c986567db82f44c8c6faef8fe9df2a9b1d98098fc1721f57c696c4c21cebd572f297fc21002f81889492345b8470473bc6f4aff5fb032a6ea59ea2bc45e + languageName: node + linkType: hard + "semver@npm:^6.2.0, semver@npm:^6.3.0, semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" @@ -17210,6 +18409,24 @@ __metadata: languageName: node linkType: hard +"sonic-boom@npm:3.8.1": + version: 3.8.1 + resolution: "sonic-boom@npm:3.8.1" + dependencies: + atomic-sleep: "npm:^1.0.0" + checksum: 10c0/9bf338f86147db50e116484f74f2e29a321a12733e0cefab3087c80dd32bf4df3d7407dbcafc13bc39ac269d9dd61dd6ef952354b9503392d4e1e7414f8e360e + languageName: node + linkType: hard + +"sonic-boom@npm:^4.0.1": + version: 4.2.0 + resolution: "sonic-boom@npm:4.2.0" + dependencies: + atomic-sleep: "npm:^1.0.0" + checksum: 10c0/ae897e6c2cd6d3cb7cdcf608bc182393b19c61c9413a85ce33ffd25891485589f39bece0db1de24381d0a38fc03d08c9862ded0c60f184f1b852f51f97af9684 + languageName: node + linkType: hard + "sort-keys@npm:^2.0.0": version: 2.0.0 resolution: "sort-keys@npm:2.0.0" @@ -17313,6 +18530,13 @@ __metadata: languageName: node linkType: hard +"split2@npm:^4.0.0": + version: 4.2.0 + resolution: "split2@npm:4.2.0" + checksum: 10c0/b292beb8ce9215f8c642bb68be6249c5a4c7f332fc8ecadae7be5cbdf1ea95addc95f0459ef2e7ad9d45fd1064698a097e4eb211c83e772b49bc0ee423e91534 + languageName: node + linkType: hard + "split@npm:^1.0.1": version: 1.0.1 resolution: "split@npm:1.0.1" @@ -17336,6 +18560,27 @@ __metadata: languageName: node linkType: hard +"sshpk@npm:^1.18.0": + version: 1.18.0 + resolution: "sshpk@npm:1.18.0" + dependencies: + asn1: "npm:~0.2.3" + assert-plus: "npm:^1.0.0" + bcrypt-pbkdf: "npm:^1.0.0" + dashdash: "npm:^1.12.0" + ecc-jsbn: "npm:~0.1.1" + getpass: "npm:^0.1.1" + jsbn: "npm:~0.1.0" + safer-buffer: "npm:^2.0.2" + tweetnacl: "npm:~0.14.0" + bin: + sshpk-conv: bin/sshpk-conv + sshpk-sign: bin/sshpk-sign + sshpk-verify: bin/sshpk-verify + checksum: 10c0/e516e34fa981cfceef45fd2e947772cc70dbd57523e5c608e2cd73752ba7f8a99a04df7c3ed751588e8d91956b6f16531590b35d3489980d1c54c38bebcd41b1 + languageName: node + linkType: hard + "ssri@npm:12.0.0, ssri@npm:^12.0.0": version: 12.0.0 resolution: "ssri@npm:12.0.0" @@ -17413,6 +18658,15 @@ __metadata: languageName: node linkType: hard +"steno@npm:^0.4.1": + version: 0.4.4 + resolution: "steno@npm:0.4.4" + dependencies: + graceful-fs: "npm:^4.1.3" + checksum: 10c0/026d42455aad66f0ab1ac8468dc75484a1df4ad7d8d62763a132afe009d087bb0730e57f628127c2f09dbfdc15e542d7fe9c7ca93e98202739621f8d251a8853 + languageName: node + linkType: hard + "stream-browserify@npm:3.0.0": version: 3.0.0 resolution: "stream-browserify@npm:3.0.0" @@ -17446,6 +18700,17 @@ __metadata: languageName: node linkType: hard +"streamx@npm:^2.15.0": + version: 2.23.0 + resolution: "streamx@npm:2.23.0" + dependencies: + events-universal: "npm:^1.0.0" + fast-fifo: "npm:^1.3.2" + text-decoder: "npm:^1.1.0" + checksum: 10c0/15708ce37818d588632fe1104e8febde573e33e8c0868bf583fce0703f3faf8d2a063c278e30df2270206811b69997f64eb78792099933a1fe757e786fbcbd44 + languageName: node + linkType: hard + "strict-event-emitter@npm:^0.5.1": version: 0.5.1 resolution: "strict-event-emitter@npm:0.5.1" @@ -17612,7 +18877,7 @@ __metadata: languageName: node linkType: hard -"string_decoder@npm:^1.1.1": +"string_decoder@npm:^1.1.1, string_decoder@npm:^1.3.0": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" dependencies: @@ -17833,6 +19098,17 @@ __metadata: languageName: node linkType: hard +"tar-stream@npm:3.1.7": + version: 3.1.7 + resolution: "tar-stream@npm:3.1.7" + dependencies: + b4a: "npm:^1.6.4" + fast-fifo: "npm:^1.2.0" + streamx: "npm:^2.15.0" + checksum: 10c0/a09199d21f8714bd729993ac49b6c8efcb808b544b89f23378ad6ffff6d1cb540878614ba9d4cfec11a64ef39e1a6f009a5398371491eb1fda606ffc7f70f718 + languageName: node + linkType: hard + "tar-stream@npm:~2.2.0": version: 2.2.0 resolution: "tar-stream@npm:2.2.0" @@ -17953,6 +19229,15 @@ __metadata: languageName: node linkType: hard +"text-decoder@npm:^1.1.0": + version: 1.2.3 + resolution: "text-decoder@npm:1.2.3" + dependencies: + b4a: "npm:^1.6.4" + checksum: 10c0/569d776b9250158681c83656ef2c3e0a5d5c660c27ca69f87eedef921749a4fbf02095e5f9a0f862a25cf35258379b06e31dee9c125c9f72e273b7ca1a6d1977 + languageName: node + linkType: hard + "text-extensions@npm:^1.0.0": version: 1.9.0 resolution: "text-extensions@npm:1.9.0" @@ -17967,7 +19252,16 @@ __metadata: languageName: node linkType: hard -"through2@npm:^2.0.0": +"thread-stream@npm:^3.0.0": + version: 3.1.0 + resolution: "thread-stream@npm:3.1.0" + dependencies: + real-require: "npm:^0.2.0" + checksum: 10c0/c36118379940b77a6ef3e6f4d5dd31e97b8210c3f7b9a54eb8fe6358ab173f6d0acfaf69b9c3db024b948c0c5fd2a7df93e2e49151af02076b35ada3205ec9a6 + languageName: node + linkType: hard + +"through2@npm:^2.0.0, through2@npm:^2.0.3": version: 2.0.5 resolution: "through2@npm:2.0.5" dependencies: @@ -18070,6 +19364,24 @@ __metadata: languageName: node linkType: hard +"tldts-core@npm:^6.1.86": + version: 6.1.86 + resolution: "tldts-core@npm:6.1.86" + checksum: 10c0/8133c29375f3f99f88fce5f4d62f6ecb9532b106f31e5423b27c1eb1b6e711bd41875184a456819ceaed5c8b94f43911b1ad57e25c6eb86e1fc201228ff7e2af + languageName: node + linkType: hard + +"tldts@npm:^6.1.32": + version: 6.1.86 + resolution: "tldts@npm:6.1.86" + dependencies: + tldts-core: "npm:^6.1.86" + bin: + tldts: bin/cli.js + checksum: 10c0/27ae7526d9d78cb97b2de3f4d102e0b4321d1ccff0648a7bb0e039ed54acbce86bacdcd9cd3c14310e519b457854e7bafbef1f529f58a1e217a737ced63f0940 + languageName: node + linkType: hard + "tmp-promise@npm:^3.0.2": version: 3.0.3 resolution: "tmp-promise@npm:3.0.3" @@ -18141,6 +19453,15 @@ __metadata: languageName: node linkType: hard +"tough-cookie@npm:^5.0.0": + version: 5.1.2 + resolution: "tough-cookie@npm:5.1.2" + dependencies: + tldts: "npm:^6.1.32" + checksum: 10c0/5f95023a47de0f30a902bba951664b359725597d8adeabc66a0b93a931c3af801e1e697dae4b8c21a012056c0ea88bd2bf4dfe66b2adcf8e2f42cd9796fe0626 + languageName: node + linkType: hard + "tr46@npm:~0.0.3": version: 0.0.3 resolution: "tr46@npm:0.0.3" @@ -18318,6 +19639,29 @@ __metadata: languageName: node linkType: hard +"tunnel-agent@npm:^0.6.0": + version: 0.6.0 + resolution: "tunnel-agent@npm:0.6.0" + dependencies: + safe-buffer: "npm:^5.0.1" + checksum: 10c0/4c7a1b813e7beae66fdbf567a65ec6d46313643753d0beefb3c7973d66fcec3a1e7f39759f0a0b4465883499c6dc8b0750ab8b287399af2e583823e40410a17a + languageName: node + linkType: hard + +"tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0": + version: 0.14.5 + resolution: "tweetnacl@npm:0.14.5" + checksum: 10c0/4612772653512c7bc19e61923fbf42903f5e0389ec76a4a1f17195859d114671ea4aa3b734c2029ce7e1fa7e5cc8b80580f67b071ecf0b46b5636d030a0102a2 + languageName: node + linkType: hard + +"typanion@npm:^3.8.0": + version: 3.14.0 + resolution: "typanion@npm:3.14.0" + checksum: 10c0/8b03b19844e6955bfd906c31dc781bae6d7f1fb3ce4fe24b7501557013d4889ae5cefe671dafe98d87ead0adceb8afcb8bc16df7dc0bd2b7331bac96f3a7cae2 + languageName: node + linkType: hard + "type-check@npm:^0.4.0, type-check@npm:~0.4.0": version: 0.4.0 resolution: "type-check@npm:0.4.0" @@ -18686,6 +20030,13 @@ __metadata: languageName: node linkType: hard +"unix-crypt-td-js@npm:1.1.4": + version: 1.1.4 + resolution: "unix-crypt-td-js@npm:1.1.4" + checksum: 10c0/c4e3abd0d7ebcf39df7faff8be2cd137f477add743a2793c551682e04ec4e4f466e806a67e391d5a097229e4465b7cae4cb459990b9eb61dfe0b37d2388c6266 + languageName: node + linkType: hard + "unorm@npm:^1.4.1": version: 1.6.0 resolution: "unorm@npm:1.6.0" @@ -18845,13 +20196,99 @@ __metadata: languageName: node linkType: hard -"vary@npm:~1.1.2": +"validator@npm:13.15.23": + version: 13.15.23 + resolution: "validator@npm:13.15.23" + checksum: 10c0/22a05ec6a98d48d2b6fb34d43ce854af61d15842362d142e64cfca0325d4d0c2d1051d9f9d3a0f741e58ea888f73a35baf7a2a810f5aed0f89183bd5040f0177 + languageName: node + linkType: hard + +"vary@npm:^1, vary@npm:~1.1.2": version: 1.1.2 resolution: "vary@npm:1.1.2" checksum: 10c0/f15d588d79f3675135ba783c91a4083dcd290a2a5be9fcb6514220a1634e23df116847b1cc51f66bfb0644cf9353b2abb7815ae499bab06e46dd33c1a6bf1f4f languageName: node linkType: hard +"verdaccio-audit@npm:13.0.0-next-8.28": + version: 13.0.0-next-8.28 + resolution: "verdaccio-audit@npm:13.0.0-next-8.28" + dependencies: + "@verdaccio/config": "npm:8.0.0-next-8.28" + "@verdaccio/core": "npm:8.0.0-next-8.28" + express: "npm:4.21.2" + https-proxy-agent: "npm:5.0.1" + node-fetch: "npm:cjs" + checksum: 10c0/09e091eee29d588fa46bd3f90cf3ca4f58abe6d568a44f8ec5f5311b8f8fc0cd0dd952a4825a3815ba3b9fcf55f4c69b2dc02341cb17159a4dc6c877510ccfe1 + languageName: node + linkType: hard + +"verdaccio-htpasswd@npm:13.0.0-next-8.28": + version: 13.0.0-next-8.28 + resolution: "verdaccio-htpasswd@npm:13.0.0-next-8.28" + dependencies: + "@verdaccio/core": "npm:8.0.0-next-8.28" + "@verdaccio/file-locking": "npm:13.0.0-next-8.6" + apache-md5: "npm:1.1.8" + bcryptjs: "npm:2.4.3" + debug: "npm:4.4.3" + http-errors: "npm:2.0.0" + unix-crypt-td-js: "npm:1.1.4" + checksum: 10c0/b30d006feb36156a6559129122018baf9e0ce19e9b63de6755cf8ea06086556b3ea4f9a44641d913dd903ad8b9949f6701d55a5945580325a36436b2fc8e7d05 + languageName: node + linkType: hard + +"verdaccio@npm:^6.2.4": + version: 6.2.4 + resolution: "verdaccio@npm:6.2.4" + dependencies: + "@cypress/request": "npm:3.0.9" + "@verdaccio/auth": "npm:8.0.0-next-8.28" + "@verdaccio/config": "npm:8.0.0-next-8.28" + "@verdaccio/core": "npm:8.0.0-next-8.28" + "@verdaccio/hooks": "npm:8.0.0-next-8.28" + "@verdaccio/loaders": "npm:8.0.0-next-8.18" + "@verdaccio/local-storage-legacy": "npm:11.1.1" + "@verdaccio/logger": "npm:8.0.0-next-8.28" + "@verdaccio/middleware": "npm:8.0.0-next-8.28" + "@verdaccio/search-indexer": "npm:8.0.0-next-8.5" + "@verdaccio/signature": "npm:8.0.0-next-8.20" + "@verdaccio/streams": "npm:10.2.1" + "@verdaccio/tarball": "npm:13.0.0-next-8.28" + "@verdaccio/ui-theme": "npm:8.0.0-next-8.28" + "@verdaccio/url": "npm:13.0.0-next-8.28" + "@verdaccio/utils": "npm:8.1.0-next-8.28" + JSONStream: "npm:1.3.5" + async: "npm:3.2.6" + clipanion: "npm:4.0.0-rc.4" + compression: "npm:1.8.1" + cors: "npm:2.8.5" + debug: "npm:4.4.3" + envinfo: "npm:7.15.0" + express: "npm:4.21.2" + lodash: "npm:4.17.21" + lru-cache: "npm:7.18.3" + mime: "npm:3.0.0" + semver: "npm:7.7.3" + verdaccio-audit: "npm:13.0.0-next-8.28" + verdaccio-htpasswd: "npm:13.0.0-next-8.28" + bin: + verdaccio: bin/verdaccio + checksum: 10c0/a46822576b7ecbd10baaf7cf62e0aca1473038942fd3ad4bf12bded9558bc46f0004b02bb4c93e8e8a671b899cd8cc99d375b4d49d576c30e80df66d69d9ed40 + languageName: node + linkType: hard + +"verror@npm:1.10.0": + version: 1.10.0 + resolution: "verror@npm:1.10.0" + dependencies: + assert-plus: "npm:^1.0.0" + core-util-is: "npm:1.0.2" + extsprintf: "npm:^1.2.0" + checksum: 10c0/37ccdf8542b5863c525128908ac80f2b476eed36a32cb944de930ca1e2e78584cc435c4b9b4c68d0fc13a47b45ff364b4be43aa74f8804f9050140f660fb660d + languageName: node + linkType: hard + "version-guard@npm:^1.1.1": version: 1.1.1 resolution: "version-guard@npm:1.1.1"