From b240bbae3fb4d08e74f83be31278e08c023df0e1 Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 18 Dec 2024 17:11:09 +0100 Subject: [PATCH] wip --- .../fixtures/basic-nx-workspace.ts | 3 +- e2e/nx-verdaccio-e2e/project.json | 11 +- e2e/nx-verdaccio-e2e/setup/setup.ts | 85 +- .../plugin-create-nodes.e2e.test.ts.snap | 78 + .../test/plugin-create-nodes.e2e.test.ts | 517 ++- nx.json | 6 +- package-lock.json | 2929 +++++++++++------ projects/nx-verdaccio/package.json | 58 +- projects/nx-verdaccio/project.json | 58 - .../src/plugin/nx-verdaccio.plugin.ts | 45 +- .../nx-verdaccio/src/plugin/project-config.ts | 39 +- 11 files changed, 2369 insertions(+), 1460 deletions(-) delete mode 100644 projects/nx-verdaccio/project.json diff --git a/e2e/nx-verdaccio-e2e/fixtures/basic-nx-workspace.ts b/e2e/nx-verdaccio-e2e/fixtures/basic-nx-workspace.ts index 5b5d71d7..7ea8c55b 100644 --- a/e2e/nx-verdaccio-e2e/fixtures/basic-nx-workspace.ts +++ b/e2e/nx-verdaccio-e2e/fixtures/basic-nx-workspace.ts @@ -1,7 +1,6 @@ import { join } from 'node:path'; -export const REPO_NAME = 'nx-ts-repo'; +export const REPO_NAME = '__nx-ts-repo__'; export const envRoot = `tmp/environments/${process.env['NX_TASK_TARGET_PROJECT']}`; -export const workspaceRoot = join(envRoot, '__test__', REPO_NAME); export const projectName = 'pkg'; export const e2eProjectName = 'pkg-e2e'; diff --git a/e2e/nx-verdaccio-e2e/project.json b/e2e/nx-verdaccio-e2e/project.json index fbcbc683..4fbe0a24 100644 --- a/e2e/nx-verdaccio-e2e/project.json +++ b/e2e/nx-verdaccio-e2e/project.json @@ -4,10 +4,17 @@ "sourceRoot": "projects/nx-verdaccio-e2e/test", "projectType": "application", "tags": ["type:e2e", "type:e2e-vi", "npm-env"], - "implicitDependencies": ["nx-verdaccio"], + "implicitDependencies": ["@push-based/nx-verdaccio"], "targets": { "lint": {}, - "e2e": { + "nxv-env-setup": { + "cache": false, + "options": { + "skipInstall": true, + "postScript": "npx tsx --tsconfig e2e/nx-verdaccio-e2e/tsconfig.spec.json e2e/nx-verdaccio-e2e/setup/exec-global-setup.ts" + } + }, + "_e2e": { "executor": "@nx/vite:test", "inputs": ["default", "^production"], "outputs": ["{options.reportsDirectory}"], diff --git a/e2e/nx-verdaccio-e2e/setup/setup.ts b/e2e/nx-verdaccio-e2e/setup/setup.ts index 0ce1d53c..381a00ac 100644 --- a/e2e/nx-verdaccio-e2e/setup/setup.ts +++ b/e2e/nx-verdaccio-e2e/setup/setup.ts @@ -5,26 +5,24 @@ import { objectToCliArgs, updateJson, } from '@push-based/test-utils'; -import { dirname, join } from 'node:path'; -import { copyFile, mkdir } from 'node:fs/promises'; -import { - logger, - NxJsonConfiguration, - PluginConfiguration, - TargetConfiguration, -} from '@nx/devkit'; -import { PackageJson } from 'nx/src/utils/package-json'; +import {copyFile, lstat, mkdir, readdir} from 'fs/promises'; +import {join} from 'path'; +import {dirname, join} from 'node:path'; +import {copyFile, mkdir, symlink, readlink} from 'node:fs/promises'; +import {logger, NxJsonConfiguration, PluginConfiguration, TargetConfiguration,} from '@nx/devkit'; +import {PackageJson} from 'nx/src/utils/package-json'; export async function setup({ - envRoot, - projectName, - repoName, -}: { + envRoot, + projectName, + repoName, + }: { envRoot: string; repoName: string; projectName: string; }) { - await mkdir(envRoot, { recursive: true }); + // dedupe packages because symlink copy problems + await mkdir(envRoot, {recursive: true}); // setup nx environment for e2e tests logger.info(`Created nx workspace under ${envRoot}`); await executeProcess({ @@ -100,30 +98,41 @@ export async function setup({ ); logger.info(`Install @push-based/nx-verdaccio`); + await executeProcess({ + command: 'npm', + args: objectToCliArgs({ + _: ['install', '@push-based/nx-verdaccio'], + save: true, + }), + cwd: envRoot, + verbose: true, + }); await mkdir( join( getTestEnvironmentRoot(projectName), DEFAULT_TEST_FIXTURE_DIST, repoName ), - { recursive: true } + {recursive: true} ); await copyFile( join(getTestEnvironmentRoot(projectName), '.npmrc'), join(envRoot, '.npmrc') ); + await executeProcess({ command: 'npm', args: objectToCliArgs({ - _: ['install', '@push-based/nx-verdaccio'], - save: true, + _: ['dedupe'] }), - cwd: envRoot, verbose: true, + cwd: dirname(envRoot), }); + + } -export async function registerNxVerdaccioPlugin(envRoot: string) { +export async function registerNxVerdaccioPlugin(envRoot: string, options?: PluginConfiguration) { logger.info(`register nx-verdaccio plugin`); await updateJson(join(envRoot, 'nx.json'), (json) => registerPluginInNxJson(json, { @@ -133,11 +142,12 @@ export async function registerNxVerdaccioPlugin(envRoot: string) { targetNames: ['e2e'], }, }, + ...options }) ); } -function registerPluginInNxJson( +export function registerPluginInNxJson( nxJson: NxJsonConfiguration, pluginConfig: PluginConfiguration ) { @@ -162,3 +172,38 @@ function updatePackageJsonNxTargets( }, }; } + + +/** + * This function avoids issues with symlinks and other edge cases. + * + */ +export async function copyDirectory(src: string, dest: string, exclude: string[] = []) { + // Ensure the destination directory exists + await mkdir(dest, {recursive: true}); + + // Read the contents of the source directory + const entries = await readdir(src, {withFileTypes: true}); + + for (const entry of entries) { + const srcPath = join(src, entry.name); + const destPath = join(dest, entry.name); + + // Skip excluded directories or files + if (exclude.includes(entry.name)) continue; + + const stats = await lstat(srcPath); + + if (stats.isSymbolicLink()) { + // Handle symbolic links if necessary (copy the link itself or resolve it) + const linkTarget = await readlink(srcPath); + await symlink(linkTarget, destPath); + } else if (stats.isDirectory()) { + // Recursively copy directories + await copyDirectory(srcPath, destPath, exclude); + } else if (stats.isFile()) { + // Copy files + await copyFile(srcPath, destPath); + } + } +} diff --git a/e2e/nx-verdaccio-e2e/test/__snapshots__/plugin-create-nodes.e2e.test.ts.snap b/e2e/nx-verdaccio-e2e/test/__snapshots__/plugin-create-nodes.e2e.test.ts.snap index bf330bf7..b7ebb99b 100644 --- a/e2e/nx-verdaccio-e2e/test/__snapshots__/plugin-create-nodes.e2e.test.ts.snap +++ b/e2e/nx-verdaccio-e2e/test/__snapshots__/plugin-create-nodes.e2e.test.ts.snap @@ -1,5 +1,83 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html +exports[`in a fresh Nx workspace > nx-verdaccio plugin create-nodes-v2 > should add package targets to library project 1`] = ` +{ + "nxv-pkg-install": { + "configurations": {}, + "dependsOn": [ + { + "params": "forward", + "target": "nxv-pkg-publish", + }, + { + "params": "forward", + "projects": "dependencies", + "target": "nxv-pkg-install", + }, + ], + "executor": "@push-based/nx-verdaccio:pkg-install", + "options": {}, + "parallelism": true, + }, + "nxv-pkg-publish": { + "configurations": {}, + "dependsOn": [ + { + "params": "forward", + "target": "build", + }, + { + "params": "forward", + "projects": "dependencies", + "target": "nxv-pkg-publish", + }, + ], + "executor": "@push-based/nx-verdaccio:pkg-publish", + "options": {}, + "parallelism": true, + }, +} +`; + +exports[`in a fresh Nx workspace > with nx-verdaccio plugin installed > should add package targets to library project 1`] = ` +{ + "nxv-pkg-install": { + "configurations": {}, + "dependsOn": [ + { + "params": "forward", + "target": "nxv-pkg-publish", + }, + { + "params": "forward", + "projects": "dependencies", + "target": "nxv-pkg-install", + }, + ], + "executor": "@push-based/nx-verdaccio:pkg-install", + "options": {}, + "parallelism": true, + }, + "nxv-pkg-publish": { + "configurations": {}, + "dependsOn": [ + { + "params": "forward", + "target": "build", + }, + { + "params": "forward", + "projects": "dependencies", + "target": "nxv-pkg-publish", + }, + ], + "executor": "@push-based/nx-verdaccio:pkg-publish", + "options": {}, + "parallelism": true, + }, +} +`; + exports[`nx-verdaccio plugin create-nodes-v2 > should add package targets to library project 1`] = ` { "nxv-pkg-install": { diff --git a/e2e/nx-verdaccio-e2e/test/plugin-create-nodes.e2e.test.ts b/e2e/nx-verdaccio-e2e/test/plugin-create-nodes.e2e.test.ts index 2dc3ac38..98d457a3 100644 --- a/e2e/nx-verdaccio-e2e/test/plugin-create-nodes.e2e.test.ts +++ b/e2e/nx-verdaccio-e2e/test/plugin-create-nodes.e2e.test.ts @@ -1,303 +1,282 @@ -import type { Tree } from '@nx/devkit'; -import { join } from 'node:path'; -import { afterEach, expect } from 'vitest'; -import { - addJsLibToWorkspace, - materializeTree, - nxShowProjectJson, - registerPluginInWorkspace, -} from '@push-based/test-nx-utils'; -import { updateProjectConfiguration } from 'nx/src/generators/utils/project-configuration'; -import { - TARGET_ENVIRONMENT_BOOTSTRAP, - TARGET_ENVIRONMENT_SETUP, - TARGET_PACKAGE_INSTALL, - TARGET_PACKAGE_PUBLISH, - TARGET_ENVIRONMENT_VERDACCIO_START, - TARGET_ENVIRONMENT_INSTALL, - TARGET_ENVIRONMENT_VERDACCIO_STOP, -} from '@push-based/nx-verdaccio'; -import { teardownTestFolder } from '@push-based/test-utils'; +import type {Tree} from '@nx/devkit'; +import {join} from 'node:path'; +import {afterEach, beforeAll, expect} from 'vitest'; +import {nxShowProjectJson,} from '@push-based/test-nx-utils'; +import {copyDirectory, registerNxVerdaccioPlugin} from '../setup/setup'; +import {mkdir} from 'node:fs/promises'; +import {TARGET_PACKAGE_INSTALL, TARGET_PACKAGE_PUBLISH,} from '@push-based/nx-verdaccio'; +import {DEFAULT_TEST_FIXTURE_DIST, getTestEnvironmentRoot} from '@push-based/test-utils'; // eslint-disable-next-line @nx/enforce-module-boundaries -import { - TARGET_ENVIRONMENT_E2E, - TARGET_ENVIRONMENT_TEARDOWN, -} from '../../../projects/nx-verdaccio/src/plugin/targets/environment.targets'; +import {REPO_NAME} from "../fixtures/basic-nx-workspace"; -describe('nx-verdaccio plugin create-nodes-v2', () => { - let tree: Tree; - const projectA = 'lib-a'; - const projectB = 'lib-b'; - const projectAE2e = `${projectA}-e2e`; - const e2eProjectARoot = join('projects', projectAE2e); - const baseDir = `tmp/environments/${process.env['NX_TASK_TARGET_PROJECT']}/__test__/create-nodes-v2`; +describe('in a fresh Nx workspace', () => { - beforeEach(async () => { - tree = await addJsLibToWorkspace(projectA); - await addJsLibToWorkspace(projectB, tree); - await addJsLibToWorkspace(projectAE2e, tree); - updateProjectConfiguration(tree, projectAE2e, { - root: e2eProjectARoot, - projectType: 'application', - }); - }); - - afterEach(async () => { - // await teardownTestFolder(baseDir); - }); - it('should add package targets to library project', async () => { - const cwd = join(baseDir, 'add-pkg-targets'); - registerPluginInWorkspace(tree, { - plugin: '@push-based/nx-verdaccio', - options: { - environments: { - targetNames: ['e2e'], - }, - }, - }); - await materializeTree(tree, cwd); + const projectName = process.env['NX_TASK_TARGET_PROJECT']; + const envRoot = getTestEnvironmentRoot(projectName); + const basicNxReopPath = join(envRoot, DEFAULT_TEST_FIXTURE_DIST, REPO_NAME); + const baseDir = join(envRoot, DEFAULT_TEST_FIXTURE_DIST, 'create-nodes-v2'); - const { code, projectJson } = await nxShowProjectJson(cwd, projectA); - expect(code).toBe(0); + beforeAll(async () => { + await mkdir(baseDir, {recursive: true}); + await copyDirectory(basicNxReopPath, baseDir, []); + }) - expect(projectJson.targets).toStrictEqual({ - [TARGET_PACKAGE_INSTALL]: expect.objectContaining({ - dependsOn: [ - { - target: TARGET_PACKAGE_PUBLISH, - params: 'forward', - }, - { - target: TARGET_PACKAGE_INSTALL, - projects: 'dependencies', - params: 'forward', - }, - ], - executor: '@push-based/nx-verdaccio:pkg-install', - }), - [TARGET_PACKAGE_PUBLISH]: expect.objectContaining({ - dependsOn: [ - { - params: 'forward', - target: 'build', - }, - { - params: 'forward', - projects: 'dependencies', - target: 'nxv-pkg-publish', - }, - ], - executor: '@push-based/nx-verdaccio:pkg-publish', - }), - }); - - expect(projectJson.targets).toMatchSnapshot(); - }); - - it('should NOT add package targets to application project', async () => { - const cwd = join(baseDir, 'no-pkg-targets'); - registerPluginInWorkspace(tree, { - plugin: '@push-based/nx-verdaccio', - options: { - environments: { - targetNames: ['e2e'], - }, - }, - }); - await materializeTree(tree, cwd); - - const { projectJson } = await nxShowProjectJson(cwd, projectAE2e); - - expect(projectJson.targets).toStrictEqual( - expect.not.objectContaining({ - [TARGET_PACKAGE_INSTALL]: expect.any(Object), - [TARGET_PACKAGE_PUBLISH]: expect.any(Object), - }) - ); + afterEach(async () => { + // await teardownTestFolder(baseDir); }); + describe('with nx-verdaccio plugin installed', () => { - it('should add package targets to library project if some tag of options.packages.filterByTag match', async () => { - const cwd = join(baseDir, 'add-pkg-targets-filterByTag'); - registerPluginInWorkspace(tree, { - plugin: '@push-based/nx-verdaccio', - options: { - environments: { - targetNames: ['e2e'], - }, - packages: { - filterByTags: ['publish'], - }, - }, - }); - updateProjectConfiguration(tree, projectB, { - root: `projects/${projectB}`, - sourceRoot: 'projects/lib-b/src', - projectType: 'library', - tags: ['publish'], - }); - await materializeTree(tree, cwd); - - const { projectJson: projectJsonB } = await nxShowProjectJson( - cwd, - projectB - ); - expect(projectJsonB.name).toBe(projectB); - expect(projectJsonB.tags).toStrictEqual(['publish']); - expect(projectJsonB.targets).toStrictEqual( - expect.objectContaining({ - [TARGET_PACKAGE_INSTALL]: expect.any(Object), - [TARGET_PACKAGE_PUBLISH]: expect.any(Object), - }) - ); - - const { projectJson: projectJsonA } = await nxShowProjectJson( - cwd, - projectA - ); - expect(projectJsonA.name).toBe(projectA); - expect(projectJsonA.tags).toStrictEqual([]); - expect(projectJsonA.targets).toStrictEqual( - expect.not.objectContaining({ - [TARGET_PACKAGE_INSTALL]: expect.any(Object), - [TARGET_PACKAGE_PUBLISH]: expect.any(Object), - }) - ); - }); + beforeAll(async () => { + await registerNxVerdaccioPlugin(baseDir); + }) - it('should add environment targets to project with targetName e2e dynamically', async () => { - const cwd = join(baseDir, 'add-env-targets'); - registerPluginInWorkspace(tree, { - plugin: '@push-based/nx-verdaccio', - options: { - environments: { - targetNames: ['e2e'], - }, - }, - }); - updateProjectConfiguration(tree, projectAE2e, { - root: e2eProjectARoot, - projectType: 'application', - targets: { - e2e: {}, - }, - }); - await materializeTree(tree, cwd); + it('should add package targets to library project', async () => { - const { code, projectJson } = await nxShowProjectJson(cwd, projectAE2e); - expect(code).toBe(0); + const {code, projectJson} = await nxShowProjectJson(baseDir, 'pkg'); + expect(code).toBe(0); - expect(projectJson.targets).toStrictEqual( - expect.objectContaining({ - e2e: expect.objectContaining({ - configurations: {}, + expect(projectJson.targets).toStrictEqual({ + [TARGET_PACKAGE_INSTALL]: expect.objectContaining({ dependsOn: [ { + target: TARGET_PACKAGE_PUBLISH, params: 'forward', - target: TARGET_ENVIRONMENT_SETUP, }, - ], - }), - [TARGET_ENVIRONMENT_BOOTSTRAP]: expect.objectContaining({ - executor: '@push-based/nx-verdaccio:env-bootstrap', - }), - [TARGET_ENVIRONMENT_INSTALL]: expect.objectContaining({ - dependsOn: [ { - params: 'forward', - projects: 'dependencies', target: TARGET_PACKAGE_INSTALL, + projects: 'dependencies', + params: 'forward', }, ], - executor: 'nx:run-commands', - options: { - environmentRoot: expect.toMatchPath('tmp/environments/lib-a-e2e'), - command: expect.stringContaining( - 'echo "dependencies installed for' - ), - }, + executor: '@push-based/nx-verdaccio:pkg-install', }), - [TARGET_ENVIRONMENT_SETUP]: expect.objectContaining({ - cache: true, - executor: '@push-based/nx-verdaccio:env-setup', - options: {}, - inputs: [ - '{projectRoot}/project.json', - { - runtime: 'node --version', - }, - { - runtime: 'npm --version', - }, + [TARGET_PACKAGE_PUBLISH]: expect.objectContaining({ + dependsOn: [ { - externalDependencies: ['verdaccio'], + params: 'forward', + target: 'build', }, - '^production', - ], - outputs: [ - '{options.environmentRoot}/.npmrc', - '{options.environmentRoot}/package.json', - '{options.environmentRoot}/package-lock.json', - '{options.environmentRoot}/node_modules', - ], - }), - [TARGET_ENVIRONMENT_VERDACCIO_START]: expect.objectContaining({ - executor: '@nx/js:verdaccio', - options: expect.objectContaining({ - clear: true, - config: '.verdaccio/config.yml', - environmentDir: expect.toMatchPath('tmp/environments/lib-a-e2e'), - port: expect.any(Number), // random port number - projectName: 'lib-a-e2e', - storage: expect.toMatchPath('tmp/environments/lib-a-e2e/storage'), - }), - }), - [TARGET_ENVIRONMENT_VERDACCIO_STOP]: expect.objectContaining({ - executor: '@push-based/nx-verdaccio:kill-process', - options: { - filePath: expect.toMatchPath( - 'tmp/environments/verdaccio-registry.json' - ), - }, - }), - [TARGET_ENVIRONMENT_E2E]: expect.objectContaining({ - executor: '@push-based/nx-verdaccio:env-teardown', - dependsOn: [ { params: 'forward', - target: 'e2e', + projects: 'dependencies', + target: 'nxv-pkg-publish', }, ], + executor: '@push-based/nx-verdaccio:pkg-publish', }), - [TARGET_ENVIRONMENT_TEARDOWN]: expect.objectContaining({ - executor: '@push-based/nx-verdaccio:env-teardown', - }), - }) - ); - }); + }); + + expect(projectJson.targets).toMatchSnapshot(); + }); +/* + it('should NOT add package targets to application project', async () => { + const cwd = join(baseDir, 'no-pkg-targets'); + registerPluginInWorkspace(tree, { + plugin: '@push-based/nx-verdaccio', + options: { + environments: { + targetNames: ['e2e'], + }, + }, + }); + await materializeTree(tree, cwd); + + const {projectJson} = await nxShowProjectJson(cwd, 'pkg-e2e'); + + expect(projectJson.targets).toStrictEqual( + expect.not.objectContaining({ + [TARGET_PACKAGE_INSTALL]: expect.any(Object), + [TARGET_PACKAGE_PUBLISH]: expect.any(Object), + }) + ); + }); + + it('should add package targets to library project if some tag of options.packages.filterByTag match', async () => { + const cwd = join(baseDir, 'add-pkg-targets-filterByTag'); + registerPluginInWorkspace(tree, { + plugin: '@push-based/nx-verdaccio', + options: { + environments: { + targetNames: ['e2e'], + }, + packages: { + filterByTags: ['publish'], + }, + }, + }); + updateProjectConfiguration(tree, projectB, { + root: `projects/${projectB}`, + sourceRoot: 'projects/lib-b/src', + projectType: 'library', + tags: ['publish'], + }); + await materializeTree(tree, cwd); - it('should NOT add environment targets to project without targetName e2e', async () => { - const cwd = join(baseDir, 'no-env-targets'); - registerPluginInWorkspace(tree, { - plugin: '@push-based/nx-verdaccio', - options: { - environments: { - targetNames: ['e2e'], + const {projectJson: projectJsonB} = await nxShowProjectJson( + cwd, + projectB + ); + expect(projectJsonB.name).toBe(projectB); + expect(projectJsonB.tags).toStrictEqual(['publish']); + expect(projectJsonB.targets).toStrictEqual( + expect.objectContaining({ + [TARGET_PACKAGE_INSTALL]: expect.any(Object), + [TARGET_PACKAGE_PUBLISH]: expect.any(Object), + }) + ); + + const {projectJson: projectJsonA} = await nxShowProjectJson( + cwd, + 'pkg' + ); + expect(projectJsonA.name).toBe('pkg'); + expect(projectJsonA.tags).toStrictEqual([]); + expect(projectJsonA.targets).toStrictEqual( + expect.not.objectContaining({ + [TARGET_PACKAGE_INSTALL]: expect.any(Object), + [TARGET_PACKAGE_PUBLISH]: expect.any(Object), + }) + ); + }); + + it('should add environment targets to project with targetName e2e dynamically', async () => { + const cwd = join(baseDir, 'add-env-targets'); + registerPluginInWorkspace(tree, { + plugin: '@push-based/nx-verdaccio', + options: { + environments: { + targetNames: ['e2e'], + }, + }, + }); + updateProjectConfiguration(tree, 'pkg-e2e', { + root: e2eProjectARoot, + projectType: 'application', + targets: { + e2e: {}, }, - }, + }); + await materializeTree(tree, cwd); + + const {code, projectJson} = await nxShowProjectJson(cwd, 'pkg-e2e'); + expect(code).toBe(0); + + expect(projectJson.targets).toStrictEqual( + expect.objectContaining({ + e2e: expect.objectContaining({ + configurations: {}, + dependsOn: [ + { + params: 'forward', + target: TARGET_ENVIRONMENT_SETUP, + }, + ], + }), + [TARGET_ENVIRONMENT_BOOTSTRAP]: expect.objectContaining({ + executor: '@push-based/nx-verdaccio:env-bootstrap', + }), + [TARGET_ENVIRONMENT_INSTALL]: expect.objectContaining({ + dependsOn: [ + { + params: 'forward', + projects: 'dependencies', + target: TARGET_PACKAGE_INSTALL, + }, + ], + executor: 'nx:run-commands', + options: { + environmentRoot: expect.toMatchPath('tmp/environments/lib-a-e2e'), + command: expect.stringContaining( + 'echo "dependencies installed for' + ), + }, + }), + [TARGET_ENVIRONMENT_SETUP]: expect.objectContaining({ + cache: true, + executor: '@push-based/nx-verdaccio:env-setup', + options: {}, + inputs: [ + '{projectRoot}/project.json', + { + runtime: 'node --version', + }, + { + runtime: 'npm --version', + }, + { + externalDependencies: ['verdaccio'], + }, + '^production', + ], + outputs: [ + '{options.environmentRoot}/.npmrc', + '{options.environmentRoot}/package.json', + '{options.environmentRoot}/package-lock.json', + '{options.environmentRoot}/node_modules', + ], + }), + [TARGET_ENVIRONMENT_VERDACCIO_START]: expect.objectContaining({ + executor: '@nx/js:verdaccio', + options: expect.objectContaining({ + clear: true, + config: '.verdaccio/config.yml', + environmentDir: expect.toMatchPath('tmp/environments/lib-a-e2e'), + port: expect.any(Number), // random port number + projectName: 'lib-a-e2e', + storage: expect.toMatchPath('tmp/environments/lib-a-e2e/storage'), + }), + }), + [TARGET_ENVIRONMENT_VERDACCIO_STOP]: expect.objectContaining({ + executor: '@push-based/nx-verdaccio:kill-process', + options: { + filePath: expect.toMatchPath( + 'tmp/environments/verdaccio-registry.json' + ), + }, + }), + [TARGET_ENVIRONMENT_E2E]: expect.objectContaining({ + executor: '@push-based/nx-verdaccio:env-teardown', + dependsOn: [ + { + params: 'forward', + target: 'e2e', + }, + ], + }), + [TARGET_ENVIRONMENT_TEARDOWN]: expect.objectContaining({ + executor: '@push-based/nx-verdaccio:env-teardown', + }), + }) + ); }); - await materializeTree(tree, cwd); - const { projectJson } = await nxShowProjectJson(cwd, projectAE2e); + it('should NOT add environment targets to project without targetName e2e', async () => { + const cwd = join(baseDir, 'no-env-targets'); + registerPluginInWorkspace(tree, { + plugin: '@push-based/nx-verdaccio', + options: { + environments: { + targetNames: ['e2e'], + }, + }, + }); + await materializeTree(tree, cwd); + + const {projectJson} = await nxShowProjectJson(cwd, 'pkg-e2e'); + + expect(projectJson.targets).toStrictEqual( + expect.not.objectContaining({ + [TARGET_ENVIRONMENT_BOOTSTRAP]: expect.any(Object), + [TARGET_ENVIRONMENT_INSTALL]: expect.any(Object), + [TARGET_ENVIRONMENT_SETUP]: expect.any(Object), + [TARGET_ENVIRONMENT_VERDACCIO_START]: expect.any(Object), + [TARGET_ENVIRONMENT_VERDACCIO_STOP]: expect.any(Object), + }) + ); + }); + */ - expect(projectJson.targets).toStrictEqual( - expect.not.objectContaining({ - [TARGET_ENVIRONMENT_BOOTSTRAP]: expect.any(Object), - [TARGET_ENVIRONMENT_INSTALL]: expect.any(Object), - [TARGET_ENVIRONMENT_SETUP]: expect.any(Object), - [TARGET_ENVIRONMENT_VERDACCIO_START]: expect.any(Object), - [TARGET_ENVIRONMENT_VERDACCIO_STOP]: expect.any(Object), - }) - ); }); + }); diff --git a/nx.json b/nx.json index fb2eb13c..57ddef60 100644 --- a/nx.json +++ b/nx.json @@ -88,14 +88,14 @@ }, "plugins": [ { - "plugin": "@push-based/nx-verdaccio", - "exclude": ["examples/e2e/cli-e2e-original/**"], + "plugin": "./projects/nx-verdaccio/src/plugin/nx-verdaccio.plugin.ts", + "include": ["e2e/nx-verdaccio-e2e/**"], "options": { "packages": { "filterByTags": ["publishable"] }, "environments": { - "targetNames": ["e2e", "e2e-static"] + "targetNames": ["_e2e", "_e2e-static"] } } }, diff --git a/package-lock.json b/package-lock.json index df1852f2..66d3d4b8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2058,1055 +2058,1477 @@ "tslib": "^2.4.0" } }, - "node_modules/@esbuild/darwin-arm64": { + "node_modules/@esbuild/aix-ppc64": { "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", "cpu": [ - "arm64" + "ppc64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "darwin" + "aix" ], "engines": { "node": ">=12" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", + "node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "node": ">=12" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.11.1", + "node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=12" } }, - "node_modules/@eslint/config-array": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", - "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], "dev": true, + "license": "MIT", "optional": true, - "peer": true, - "dependencies": { - "@eslint/object-schema": "^2.1.4", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, + "os": [ + "android" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=12" } }, - "node_modules/@eslint/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "cpu": [ + "arm64" + ], "dev": true, + "license": "MIT", "optional": true, - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@eslint/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], "dev": true, + "license": "MIT", "optional": true, - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "os": [ + "darwin" + ], "engines": { - "node": "*" + "node": ">=12" } }, - "node_modules/@eslint/core": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", - "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], "dev": true, + "license": "MIT", "optional": true, - "peer": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=12" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=12" } }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "*" + "node": ">=12" } }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/@eslint/js": { - "version": "8.57.1", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=12" } }, - "node_modules/@eslint/object-schema": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", - "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], "dev": true, + "license": "MIT", "optional": true, - "peer": true, + "os": [ + "linux" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=12" } }, - "node_modules/@eslint/plugin-kit": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.1.tgz", - "integrity": "sha512-HFZ4Mp26nbWk9d/BpvP0YNL6W4UoZF0VFcTw/aPPA8RpOxeFQgK+ClABGgAUXs9Y/RGX/l1vOmrqz1MQt9MNuw==", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], "dev": true, + "license": "MIT", "optional": true, - "peer": true, - "dependencies": { - "levn": "^0.4.1" - }, + "os": [ + "linux" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=12" } }, - "node_modules/@humanfs/core": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.0.tgz", - "integrity": "sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==", + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], "dev": true, + "license": "MIT", "optional": true, - "peer": true, + "os": [ + "linux" + ], "engines": { - "node": ">=18.18.0" + "node": ">=12" } }, - "node_modules/@humanfs/node": { - "version": "0.16.5", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.5.tgz", - "integrity": "sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==", + "node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], "dev": true, + "license": "MIT", "optional": true, - "peer": true, - "dependencies": { - "@humanfs/core": "^0.19.0", - "@humanwhocodes/retry": "^0.3.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, + "os": [ + "linux" + ], "engines": { - "node": ">=10.10.0" + "node": ">=12" } }, - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": "*" + "node": ">=12" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", + "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "node": ">=18" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], "dev": true, + "license": "MIT", "optional": true, - "peer": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "node": ">=12" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], "engines": { "node": ">=12" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/@jest/console": { - "version": "29.7.0", + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/@jest/core": { - "version": "29.7.0", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@jest/core/node_modules/ansi-regex": { - "version": "5.0.1", + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@jest/core/node_modules/strip-ansi": { - "version": "6.0.1", + "node_modules/@eslint/config-array": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz", + "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "optional": true, + "peer": true, "dependencies": { - "ansi-regex": "^5.0.1" + "@eslint/object-schema": "^2.1.5", + "debug": "^4.3.1", + "minimatch": "^3.1.2" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@jest/environment": { - "version": "29.7.0", + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@jest/expect": { - "version": "29.7.0", + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "MIT", + "license": "ISC", + "optional": true, + "peer": true, "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "*" } }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", + "node_modules/@eslint/core": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.1.tgz", + "integrity": "sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==", "dev": true, - "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3" + "license": "Apache-2.0", + "optional": true, + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.15" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@jest/globals": { - "version": "29.7.0", + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@jest/reporters": { - "version": "29.7.0", + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", "dev": true, "license": "MIT", "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" + "type-fest": "^0.20.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "node": ">=8" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@jest/reporters/node_modules/ansi-regex": { - "version": "5.0.1", + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@jest/reporters/node_modules/strip-ansi": { - "version": "6.0.1", + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "ansi-regex": "^5.0.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/@jest/schemas": { - "version": "29.6.3", + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@jest/source-map": { - "version": "29.6.3", + "node_modules/@eslint/js": { + "version": "8.57.1", "dev": true, "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@jest/test-result": { - "version": "29.7.0", + "node_modules/@eslint/object-schema": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz", + "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==", "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, + "license": "Apache-2.0", + "optional": true, + "peer": true, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", + "node_modules/@eslint/plugin-kit": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz", + "integrity": "sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "optional": true, + "peer": true, "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" + "levn": "^0.4.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@jest/transform": { - "version": "29.7.0", + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, + "license": "Apache-2.0", + "optional": true, + "peer": true, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18.18.0" } }, - "node_modules/@jest/types": { - "version": "29.6.3", + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "optional": true, + "peer": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18.18.0" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "optional": true, + "peer": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, "engines": { - "node": ">=6.0.0" + "node": ">=10.10.0" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", "dev": true, "license": "MIT", - "engines": { - "node": ">=6.0.0" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=6.0.0" + "node": "*" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@jsonjoy.com/base64": { - "version": "1.1.2", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", "dev": true, "license": "Apache-2.0", "engines": { - "node": ">=10.0" + "node": ">=12.22" }, "funding": { "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@jsonjoy.com/json-pack": { - "version": "1.1.0", + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", "dev": true, "license": "Apache-2.0", - "dependencies": { - "@jsonjoy.com/base64": "^1.1.1", - "@jsonjoy.com/util": "^1.1.2", - "hyperdyperid": "^1.2.0", - "thingies": "^1.20.0" - }, + "optional": true, + "peer": true, "engines": { - "node": ">=10.0" + "node": ">=18.18" }, "funding": { "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@jsonjoy.com/util": { - "version": "1.5.0", + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, - "peerDependencies": { - "tslib": "2" + "engines": { + "node": ">=12" } }, - "node_modules/@kwsites/file-exists": { - "version": "1.1.1", + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "debug": "^4.1.1" + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@kwsites/promise-deferred": { - "version": "1.1.1", + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/@mole-inc/bin-wrapper": { - "version": "8.0.1", + "node_modules/@jest/console": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "bin-check": "^4.1.0", - "bin-version-check": "^5.0.0", - "content-disposition": "^0.5.4", - "ext-name": "^5.0.0", - "file-type": "^17.1.6", - "filenamify": "^5.0.2", - "got": "^11.8.5", - "os-filter-obj": "^2.0.0" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@napi-rs/nice": { - "version": "1.0.1", + "node_modules/@jest/core": { + "version": "29.7.0", "dev": true, "license": "MIT", - "optional": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": ">= 10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" }, - "optionalDependencies": { - "@napi-rs/nice-android-arm-eabi": "1.0.1", - "@napi-rs/nice-android-arm64": "1.0.1", - "@napi-rs/nice-darwin-arm64": "1.0.1", - "@napi-rs/nice-darwin-x64": "1.0.1", - "@napi-rs/nice-freebsd-x64": "1.0.1", - "@napi-rs/nice-linux-arm-gnueabihf": "1.0.1", - "@napi-rs/nice-linux-arm64-gnu": "1.0.1", - "@napi-rs/nice-linux-arm64-musl": "1.0.1", - "@napi-rs/nice-linux-ppc64-gnu": "1.0.1", - "@napi-rs/nice-linux-riscv64-gnu": "1.0.1", - "@napi-rs/nice-linux-s390x-gnu": "1.0.1", - "@napi-rs/nice-linux-x64-gnu": "1.0.1", - "@napi-rs/nice-linux-x64-musl": "1.0.1", - "@napi-rs/nice-win32-arm64-msvc": "1.0.1", - "@napi-rs/nice-win32-ia32-msvc": "1.0.1", - "@napi-rs/nice-win32-x64-msvc": "1.0.1" + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@napi-rs/nice-darwin-arm64": { - "version": "1.0.1", - "cpu": [ - "arm64" - ], + "node_modules/@jest/core/node_modules/ansi-regex": { + "version": "5.0.1", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.4", + "node_modules/@jest/core/node_modules/strip-ansi": { + "version": "6.0.1", "dev": true, "license": "MIT", "dependencies": { - "@emnapi/core": "^1.1.0", - "@emnapi/runtime": "^1.1.0", - "@tybys/wasm-util": "^0.9.0" + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", + "node_modules/@jest/environment": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" }, "engines": { - "node": ">= 8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", + "node_modules/@jest/expect": { + "version": "29.7.0", "dev": true, "license": "MIT", + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, "engines": { - "node": ">= 8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", + "node_modules/@jest/expect-utils": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "jest-get-type": "^29.6.3" }, "engines": { - "node": ">= 8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nrwl/devkit": { - "version": "19.8.0", + "node_modules/@jest/fake-timers": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "19.8.0" + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nrwl/esbuild": { - "version": "19.8.0", + "node_modules/@jest/globals": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "@nx/esbuild": "19.8.0" - } - }, - "node_modules/@nrwl/eslint-plugin-nx": { - "version": "19.8.0", + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "@nx/eslint-plugin": "19.8.0" + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@nrwl/jest": { - "version": "19.8.0", + "node_modules/@jest/reporters/node_modules/ansi-regex": { + "version": "5.0.1", "dev": true, "license": "MIT", - "dependencies": { - "@nx/jest": "19.8.0" + "engines": { + "node": ">=8" } }, - "node_modules/@nrwl/js": { - "version": "19.8.0", + "node_modules/@jest/reporters/node_modules/strip-ansi": { + "version": "6.0.1", "dev": true, "license": "MIT", "dependencies": { - "@nx/js": "19.8.0" + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@nrwl/nx-plugin": { - "version": "19.8.0", + "node_modules/@jest/schemas": { + "version": "29.6.3", "dev": true, "license": "MIT", "dependencies": { - "@nx/plugin": "19.8.0" + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nrwl/tao": { - "version": "19.8.0", + "node_modules/@jest/source-map": { + "version": "29.6.3", "dev": true, "license": "MIT", "dependencies": { - "nx": "19.8.0", - "tslib": "^2.3.0" + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" }, - "bin": { - "tao": "index.js" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nrwl/vite": { - "version": "19.8.0", + "node_modules/@jest/test-result": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "@nx/vite": "19.8.0" + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nrwl/web": { - "version": "19.8.0", + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "@nx/web": "19.8.0" + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nrwl/workspace": { - "version": "19.8.0", + "node_modules/@jest/transform": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "@nx/workspace": "19.8.0" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nx/devkit": { - "version": "19.8.0", + "node_modules/@jest/types": { + "version": "29.6.3", "dev": true, "license": "MIT", "dependencies": { - "@nrwl/devkit": "19.8.0", - "ejs": "^3.1.7", - "enquirer": "~2.3.6", - "ignore": "^5.0.4", - "minimatch": "9.0.3", - "semver": "^7.5.3", - "tmp": "~0.2.1", - "tslib": "^2.3.0", - "yargs-parser": "21.1.1" + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" }, - "peerDependencies": { - "nx": ">= 17 <= 20" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nx/esbuild": { - "version": "19.8.0", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", "dev": true, "license": "MIT", "dependencies": { - "@nrwl/esbuild": "19.8.0", - "@nx/devkit": "19.8.0", - "@nx/js": "19.8.0", - "chalk": "^4.1.0", - "fast-glob": "3.2.7", - "fs-extra": "^11.1.0", - "tsconfig-paths": "^4.1.2", - "tslib": "^2.3.0" - }, - "peerDependencies": { - "esbuild": "~0.19.2" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, - "peerDependenciesMeta": { - "esbuild": { - "optional": true - } + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@nx/eslint": { - "version": "19.8.0", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", "dev": true, "license": "MIT", - "dependencies": { - "@nx/devkit": "19.8.0", - "@nx/js": "19.8.0", - "@nx/linter": "19.8.0", - "semver": "^7.5.3", - "tslib": "^2.3.0", - "typescript": "~5.4.2" - }, - "peerDependencies": { - "@zkochan/js-yaml": "0.0.7", - "eslint": "^8.0.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "@zkochan/js-yaml": { - "optional": true - } + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@nx/eslint-plugin": { - "version": "19.8.0", + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", "dev": true, "license": "MIT", "dependencies": { - "@eslint/compat": "^1.1.1", - "@nrwl/eslint-plugin-nx": "19.8.0", - "@nx/devkit": "19.8.0", - "@nx/js": "19.8.0", - "@typescript-eslint/type-utils": "^8.0.0", - "@typescript-eslint/utils": "^8.0.0", - "chalk": "^4.1.0", - "confusing-browser-globals": "^1.0.9", - "globals": "^15.9.0", - "jsonc-eslint-parser": "^2.1.0", - "semver": "^7.5.3", - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^6.13.2 || ^7.0.0 || ^8.0.0", - "eslint-config-prettier": "^9.0.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@nx/eslint-plugin/node_modules/@eslint/compat": { - "version": "1.2.0", + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=10.0" }, - "peerDependencies": { - "eslint": "^9.10.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" }, - "peerDependenciesMeta": { + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.1.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "^1.1.1", + "@jsonjoy.com/util": "^1.1.2", + "hyperdyperid": "^1.2.0", + "thingies": "^1.20.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.5.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@kwsites/file-exists": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1" + } + }, + "node_modules/@kwsites/promise-deferred": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@mole-inc/bin-wrapper": { + "version": "8.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "bin-check": "^4.1.0", + "bin-version-check": "^5.0.0", + "content-disposition": "^0.5.4", + "ext-name": "^5.0.0", + "file-type": "^17.1.6", + "filenamify": "^5.0.2", + "got": "^11.8.5", + "os-filter-obj": "^2.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/@napi-rs/nice": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@napi-rs/nice-android-arm-eabi": "1.0.1", + "@napi-rs/nice-android-arm64": "1.0.1", + "@napi-rs/nice-darwin-arm64": "1.0.1", + "@napi-rs/nice-darwin-x64": "1.0.1", + "@napi-rs/nice-freebsd-x64": "1.0.1", + "@napi-rs/nice-linux-arm-gnueabihf": "1.0.1", + "@napi-rs/nice-linux-arm64-gnu": "1.0.1", + "@napi-rs/nice-linux-arm64-musl": "1.0.1", + "@napi-rs/nice-linux-ppc64-gnu": "1.0.1", + "@napi-rs/nice-linux-riscv64-gnu": "1.0.1", + "@napi-rs/nice-linux-s390x-gnu": "1.0.1", + "@napi-rs/nice-linux-x64-gnu": "1.0.1", + "@napi-rs/nice-linux-x64-musl": "1.0.1", + "@napi-rs/nice-win32-arm64-msvc": "1.0.1", + "@napi-rs/nice-win32-ia32-msvc": "1.0.1", + "@napi-rs/nice-win32-x64-msvc": "1.0.1" + } + }, + "node_modules/@napi-rs/nice-darwin-arm64": { + "version": "1.0.1", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@emnapi/core": "^1.1.0", + "@emnapi/runtime": "^1.1.0", + "@tybys/wasm-util": "^0.9.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nrwl/devkit": { + "version": "19.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@nx/devkit": "19.8.0" + } + }, + "node_modules/@nrwl/esbuild": { + "version": "19.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@nx/esbuild": "19.8.0" + } + }, + "node_modules/@nrwl/eslint-plugin-nx": { + "version": "19.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@nx/eslint-plugin": "19.8.0" + } + }, + "node_modules/@nrwl/jest": { + "version": "19.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@nx/jest": "19.8.0" + } + }, + "node_modules/@nrwl/js": { + "version": "19.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@nx/js": "19.8.0" + } + }, + "node_modules/@nrwl/nx-plugin": { + "version": "19.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@nx/plugin": "19.8.0" + } + }, + "node_modules/@nrwl/tao": { + "version": "19.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "nx": "19.8.0", + "tslib": "^2.3.0" + }, + "bin": { + "tao": "index.js" + } + }, + "node_modules/@nrwl/vite": { + "version": "19.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@nx/vite": "19.8.0" + } + }, + "node_modules/@nrwl/web": { + "version": "19.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@nx/web": "19.8.0" + } + }, + "node_modules/@nrwl/workspace": { + "version": "19.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@nx/workspace": "19.8.0" + } + }, + "node_modules/@nx/devkit": { + "version": "19.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@nrwl/devkit": "19.8.0", + "ejs": "^3.1.7", + "enquirer": "~2.3.6", + "ignore": "^5.0.4", + "minimatch": "9.0.3", + "semver": "^7.5.3", + "tmp": "~0.2.1", + "tslib": "^2.3.0", + "yargs-parser": "21.1.1" + }, + "peerDependencies": { + "nx": ">= 17 <= 20" + } + }, + "node_modules/@nx/esbuild": { + "version": "19.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@nrwl/esbuild": "19.8.0", + "@nx/devkit": "19.8.0", + "@nx/js": "19.8.0", + "chalk": "^4.1.0", + "fast-glob": "3.2.7", + "fs-extra": "^11.1.0", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "esbuild": "~0.19.2" + }, + "peerDependenciesMeta": { + "esbuild": { + "optional": true + } + } + }, + "node_modules/@nx/eslint": { + "version": "19.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@nx/devkit": "19.8.0", + "@nx/js": "19.8.0", + "@nx/linter": "19.8.0", + "semver": "^7.5.3", + "tslib": "^2.3.0", + "typescript": "~5.4.2" + }, + "peerDependencies": { + "@zkochan/js-yaml": "0.0.7", + "eslint": "^8.0.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "@zkochan/js-yaml": { + "optional": true + } + } + }, + "node_modules/@nx/eslint-plugin": { + "version": "19.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint/compat": "^1.1.1", + "@nrwl/eslint-plugin-nx": "19.8.0", + "@nx/devkit": "19.8.0", + "@nx/js": "19.8.0", + "@typescript-eslint/type-utils": "^8.0.0", + "@typescript-eslint/utils": "^8.0.0", + "chalk": "^4.1.0", + "confusing-browser-globals": "^1.0.9", + "globals": "^15.9.0", + "jsonc-eslint-parser": "^2.1.0", + "semver": "^7.5.3", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.13.2 || ^7.0.0 || ^8.0.0", + "eslint-config-prettier": "^9.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/@nx/eslint-plugin/node_modules/@eslint/compat": { + "version": "1.2.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": "^9.10.0" + }, + "peerDependenciesMeta": { "eslint": { "optional": true } } }, "node_modules/@nx/eslint-plugin/node_modules/@eslint/eslintrc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", - "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", "dev": true, + "license": "MIT", "optional": true, "peer": true, "dependencies": { @@ -3132,6 +3554,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, + "license": "MIT", "optional": true, "peer": true, "engines": { @@ -3142,9 +3565,9 @@ } }, "node_modules/@nx/eslint-plugin/node_modules/@eslint/js": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.13.0.tgz", - "integrity": "sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==", + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz", + "integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==", "dev": true, "optional": true, "peer": true, @@ -3157,6 +3580,7 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, + "license": "Python-2.0", "optional": true, "peer": true }, @@ -3165,6 +3589,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "optional": true, "peer": true, "dependencies": { @@ -3173,33 +3598,33 @@ } }, "node_modules/@nx/eslint-plugin/node_modules/eslint": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.13.0.tgz", - "integrity": "sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==", + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.17.0.tgz", + "integrity": "sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==", "dev": true, "optional": true, "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.11.0", - "@eslint/config-array": "^0.18.0", - "@eslint/core": "^0.7.0", - "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.13.0", - "@eslint/plugin-kit": "^0.2.0", - "@humanfs/node": "^0.16.5", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.9.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.17.0", + "@eslint/plugin-kit": "^0.2.3", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.3.1", + "@humanwhocodes/retry": "^0.4.1", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.1.0", - "eslint-visitor-keys": "^4.1.0", - "espree": "^10.2.0", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -3213,8 +3638,7 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" @@ -3235,10 +3659,11 @@ } }, "node_modules/@nx/eslint-plugin/node_modules/eslint-scope": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz", - "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", "dev": true, + "license": "BSD-2-Clause", "optional": true, "peer": true, "dependencies": { @@ -3253,10 +3678,11 @@ } }, "node_modules/@nx/eslint-plugin/node_modules/eslint-visitor-keys": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", - "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, + "license": "Apache-2.0", "optional": true, "peer": true, "engines": { @@ -3267,16 +3693,17 @@ } }, "node_modules/@nx/eslint-plugin/node_modules/espree": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz", - "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, + "license": "BSD-2-Clause", "optional": true, "peer": true, "dependencies": { - "acorn": "^8.12.0", + "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.1.0" + "eslint-visitor-keys": "^4.2.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3337,6 +3764,7 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "optional": true, "peer": true, "dependencies": { @@ -3368,6 +3796,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "optional": true, "peer": true, "dependencies": { @@ -3482,7 +3911,9 @@ } }, "node_modules/@nx/nx-darwin-arm64": { - "version": "19.8.6", + "version": "19.8.0", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-19.8.0.tgz", + "integrity": "sha512-JWtBb6ndCdGE+RBIwKN85BZnX41lFGsFxnsmot71GeAj/g7Cb0PM2qcmxawoy8yLPTBGZhb+eHER3z3nDIqRog==", "cpu": [ "arm64" ], @@ -3496,12 +3927,13 @@ } }, "node_modules/@nx/nx-darwin-x64": { - "version": "19.8.6", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-19.8.6.tgz", - "integrity": "sha512-1ZmOXwJva14jCcTHM8jmsEBp33CCLng/tXK8/554ACwL3Kk4kbtdLfUjM/VEMZ3v3c1D7cJWxyYfTav5meumxg==", + "version": "19.8.0", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-19.8.0.tgz", + "integrity": "sha512-NcNaqbbStBkyahLaoKFtW6nEdjCjYT5ZOmGjc6UpAx1Y3pkk/FcIOYJRCBxwuOsRRsEAyeVcHPdYrouZmV+6Yw==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -3575,12 +4007,13 @@ } }, "node_modules/@nx/nx-linux-x64-gnu": { - "version": "19.8.6", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-19.8.6.tgz", - "integrity": "sha512-2/5WDr2wwWyvbqlB//ICWS5q3rRF4GyNX2NOp/tVkmh1RfDhH0ZAVZ/oJ7QvE1mKLQh0AM7bQBHsF5ikmMhUXw==", + "version": "19.8.0", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-19.8.0.tgz", + "integrity": "sha512-4uYuE+LvxOFXvi9z9ueJSVrME5D383SHNCjs6jYwc9KovCsmL5oPVXRieoE4/hYI4lrjly+CrAnPZU1P7ocBiw==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -4491,12 +4924,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.10.0", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.18.1.tgz", + "integrity": "sha512-jAhTdK/Qx2NJPNOTxXpMwlOiSymtR2j283TtPqXkKBdH8OAMmhiUfP0kJjc/qSE51Xrq02Gj9NY7MwK+UxVwHQ==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.10.0", - "@typescript-eslint/utils": "8.10.0", + "@typescript-eslint/typescript-estree": "8.18.1", + "@typescript-eslint/utils": "8.18.1", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -4507,16 +4941,16 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "8.10.0", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.18.1.tgz", + "integrity": "sha512-7uoAUsCj66qdNQNpH2G8MyTFlgerum8ubf21s3TSM3XmKXuIn+H2Sifh/ES2nPOPiYSRJWAk0fDkW0APBWcpfw==", "dev": true, - "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -4526,12 +4960,13 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.10.0", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.1.tgz", + "integrity": "sha512-z8U21WI5txzl2XYOW7i9hJhxoKKNG1kcU4RzyNvKrdZDmbjkmLBo8bgeiOJmA06kizLI76/CCBAAGlTlEeUfyg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "8.10.0", - "@typescript-eslint/visitor-keys": "8.10.0", + "@typescript-eslint/types": "8.18.1", + "@typescript-eslint/visitor-keys": "8.18.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -4546,19 +4981,18 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.10.0", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.1.tgz", + "integrity": "sha512-Vj0WLm5/ZsD013YeUKn+K0y8p1M0jPpxOkKdbD1wB0ns53a5piVY02zjf072TblEweAbcYiFiPoSMF3kp+VhhQ==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.10.0", - "eslint-visitor-keys": "^3.4.3" + "@typescript-eslint/types": "8.18.1", + "eslint-visitor-keys": "^4.2.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4568,10 +5002,23 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@typescript-eslint/type-utils/node_modules/fast-glob": { "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -4585,8 +5032,9 @@ }, "node_modules/@typescript-eslint/type-utils/node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -4596,8 +5044,9 @@ }, "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -4662,14 +5111,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.10.0", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.1.tgz", + "integrity": "sha512-8vikiIj2ebrC4WRdcAdDcmnu9Q/MXXwg+STf40BVfT8exDqBCUPdypvzcUPxEqRGKg9ALagZ0UWcYCtn+4W2iQ==", "dev": true, - "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.10.0", - "@typescript-eslint/types": "8.10.0", - "@typescript-eslint/typescript-estree": "8.10.0" + "@typescript-eslint/scope-manager": "8.18.1", + "@typescript-eslint/types": "8.18.1", + "@typescript-eslint/typescript-estree": "8.18.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4679,16 +5129,18 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.10.0", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.18.1.tgz", + "integrity": "sha512-HxfHo2b090M5s2+/9Z3gkBhI6xBH8OJCFjH9MhQ+nnoZqxU3wNxkLT+VWXWSFWc3UF3Z+CfPAyqdCTdoXtDPCQ==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.10.0", - "@typescript-eslint/visitor-keys": "8.10.0" + "@typescript-eslint/types": "8.18.1", + "@typescript-eslint/visitor-keys": "8.18.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4699,9 +5151,10 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "8.10.0", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.18.1.tgz", + "integrity": "sha512-7uoAUsCj66qdNQNpH2G8MyTFlgerum8ubf21s3TSM3XmKXuIn+H2Sifh/ES2nPOPiYSRJWAk0fDkW0APBWcpfw==", "dev": true, - "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -4711,12 +5164,13 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.10.0", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.1.tgz", + "integrity": "sha512-z8U21WI5txzl2XYOW7i9hJhxoKKNG1kcU4RzyNvKrdZDmbjkmLBo8bgeiOJmA06kizLI76/CCBAAGlTlEeUfyg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "8.10.0", - "@typescript-eslint/visitor-keys": "8.10.0", + "@typescript-eslint/types": "8.18.1", + "@typescript-eslint/visitor-keys": "8.18.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -4731,19 +5185,18 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.10.0", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.1.tgz", + "integrity": "sha512-Vj0WLm5/ZsD013YeUKn+K0y8p1M0jPpxOkKdbD1wB0ns53a5piVY02zjf072TblEweAbcYiFiPoSMF3kp+VhhQ==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.10.0", - "eslint-visitor-keys": "^3.4.3" + "@typescript-eslint/types": "8.18.1", + "eslint-visitor-keys": "^4.2.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4753,10 +5206,23 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/utils/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@typescript-eslint/utils/node_modules/fast-glob": { "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -4770,8 +5236,9 @@ }, "node_modules/@typescript-eslint/utils/node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -4781,8 +5248,9 @@ }, "node_modules/@typescript-eslint/utils/node_modules/minimatch": { "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -5002,11 +5470,6 @@ "url": "https://opencollective.com/verdaccio" } }, - "node_modules/@verdaccio/local-storage-legacy/node_modules/async": { - "version": "3.2.4", - "dev": true, - "license": "MIT" - }, "node_modules/@verdaccio/local-storage-legacy/node_modules/debug": { "version": "4.3.4", "dev": true, @@ -5589,7 +6052,9 @@ } }, "node_modules/acorn": { - "version": "8.13.0", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, "license": "MIT", "bin": { @@ -5807,7 +6272,9 @@ } }, "node_modules/async": { - "version": "3.2.6", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true, "license": "MIT" }, @@ -7123,7 +7590,9 @@ "license": "MIT" }, "node_modules/cross-spawn": { - "version": "7.0.3", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -8761,9 +9230,10 @@ } }, "node_modules/globals": { - "version": "15.11.0", + "version": "15.14.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", + "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", "dev": true, - "license": "MIT", "engines": { "node": ">=18" }, @@ -10030,7 +10500,9 @@ } }, "node_modules/jest-resolve/node_modules/resolve.exports": { - "version": "2.0.2", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", "dev": true, "license": "MIT", "engines": { @@ -10917,7 +11389,9 @@ } }, "node_modules/mime-db": { - "version": "1.53.0", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "license": "MIT", "engines": { @@ -10935,14 +11409,6 @@ "node": ">= 0.6" } }, - "node_modules/mime-types/node_modules/mime-db": { - "version": "1.52.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/mimic-fn": { "version": "2.1.0", "dev": true, @@ -11294,63 +11760,16 @@ "@nx/nx-win32-x64-msvc": "19.8.0" }, "peerDependencies": { - "@swc-node/register": "^1.8.0", - "@swc/core": "^1.3.85" - }, - "peerDependenciesMeta": { - "@swc-node/register": { - "optional": true - }, - "@swc/core": { - "optional": true - } - } - }, - "node_modules/nx/node_modules/@nx/nx-darwin-arm64": { - "version": "19.8.0", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/nx/node_modules/@nx/nx-darwin-x64": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-19.8.0.tgz", - "integrity": "sha512-NcNaqbbStBkyahLaoKFtW6nEdjCjYT5ZOmGjc6UpAx1Y3pkk/FcIOYJRCBxwuOsRRsEAyeVcHPdYrouZmV+6Yw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/nx/node_modules/@nx/nx-linux-x64-gnu": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-19.8.0.tgz", - "integrity": "sha512-4uYuE+LvxOFXvi9z9ueJSVrME5D383SHNCjs6jYwc9KovCsmL5oPVXRieoE4/hYI4lrjly+CrAnPZU1P7ocBiw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "@swc-node/register": "^1.8.0", + "@swc/core": "^1.3.85" + }, + "peerDependenciesMeta": { + "@swc-node/register": { + "optional": true + }, + "@swc/core": { + "optional": true + } } }, "node_modules/nx/node_modules/ansi-regex": { @@ -13230,7 +13649,9 @@ } }, "node_modules/strip-literal/node_modules/js-tokens": { - "version": "9.0.0", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", "dev": true, "license": "MIT" }, @@ -13382,368 +13803,742 @@ "engines": { "node": ">=10.18" }, - "peerDependencies": { - "tslib": "^2" + "peerDependencies": { + "tslib": "^2" + } + }, + "node_modules/thread-stream": { + "version": "2.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "real-require": "^0.2.0" + } + }, + "node_modules/through": { + "version": "2.3.8", + "dev": true, + "license": "MIT" + }, + "node_modules/through2": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/through2/node_modules/readable-stream": { + "version": "2.3.8", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/through2/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/through2/node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/tinybench": { + "version": "2.9.0", + "dev": true, + "license": "MIT" + }, + "node_modules/tinypool": { + "version": "0.8.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tmp": { + "version": "0.2.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/token-types": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/tree-dump": { + "version": "1.0.2", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/trim-repeated": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^5.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/trim-repeated/node_modules/escape-string-regexp": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-jest": { + "version": "29.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "bs-logger": "^0.2.6", + "ejs": "^3.1.10", + "fast-json-stable-stringify": "^2.1.0", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "^4.1.2", + "make-error": "^1.3.6", + "semver": "^7.6.3", + "yargs-parser": "^21.1.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/transform": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } } }, - "node_modules/thread-stream": { - "version": "2.7.0", + "node_modules/ts-node": { + "version": "10.9.1", "dev": true, "license": "MIT", "dependencies": { - "real-require": "^0.2.0" + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } } }, - "node_modules/through": { - "version": "2.3.8", - "dev": true, - "license": "MIT" - }, - "node_modules/through2": { - "version": "2.0.5", + "node_modules/tsconfig-paths": { + "version": "4.2.0", "dev": true, "license": "MIT", "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/through2/node_modules/readable-stream": { - "version": "2.3.8", + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", "dev": true, "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "engines": { + "node": ">=4" } }, - "node_modules/through2/node_modules/safe-buffer": { - "version": "5.1.2", + "node_modules/tslib": { + "version": "2.8.0", "dev": true, - "license": "MIT" + "license": "0BSD" }, - "node_modules/through2/node_modules/string_decoder": { - "version": "1.1.1", + "node_modules/tsx": { + "version": "4.19.1", "dev": true, "license": "MIT", "dependencies": { - "safe-buffer": "~5.1.0" + "esbuild": "~0.23.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" } }, - "node_modules/tinybench": { - "version": "2.9.0", - "dev": true, - "license": "MIT" - }, - "node_modules/tinypool": { - "version": "0.8.4", + "node_modules/tsx/node_modules/@esbuild/aix-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", + "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": ">=14.0.0" + "node": ">=18" } }, - "node_modules/tinyspy": { - "version": "2.2.1", + "node_modules/tsx/node_modules/@esbuild/android-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", + "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=14.0.0" + "node": ">=18" } }, - "node_modules/tmp": { - "version": "0.2.3", + "node_modules/tsx/node_modules/@esbuild/android-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", + "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=14.14" + "node": ">=18" } }, - "node_modules/tmpl": { - "version": "1.0.5", + "node_modules/tsx/node_modules/@esbuild/android-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", + "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "BSD-3-Clause" + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } }, - "node_modules/to-fast-properties": { - "version": "2.0.0", + "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { + "version": "0.23.1", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=4" + "node": ">=18" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", + "node_modules/tsx/node_modules/@esbuild/darwin-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", + "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=8.0" + "node": ">=18" } }, - "node_modules/toidentifier": { - "version": "1.0.1", + "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", + "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=0.6" + "node": ">=18" } }, - "node_modules/token-types": { - "version": "5.0.1", + "node_modules/tsx/node_modules/@esbuild/freebsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", + "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" + "node": ">=18" } }, - "node_modules/totalist": { - "version": "3.0.1", + "node_modules/tsx/node_modules/@esbuild/linux-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", + "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6" + "node": ">=18" } }, - "node_modules/tough-cookie": { - "version": "4.1.4", + "node_modules/tsx/node_modules/@esbuild/linux-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", + "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6" + "node": ">=18" } }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", + "node_modules/tsx/node_modules/@esbuild/linux-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", + "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 4.0.0" + "node": ">=18" } }, - "node_modules/tr46": { - "version": "3.0.0", + "node_modules/tsx/node_modules/@esbuild/linux-loong64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", + "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", + "cpu": [ + "loong64" + ], "dev": true, "license": "MIT", - "dependencies": { - "punycode": "^2.1.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/tree-dump": { - "version": "1.0.2", + "node_modules/tsx/node_modules/@esbuild/linux-mips64el": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", + "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", + "cpu": [ + "mips64el" + ], "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": ">=18" } }, - "node_modules/trim-repeated": { - "version": "2.0.0", + "node_modules/tsx/node_modules/@esbuild/linux-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", + "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", - "dependencies": { - "escape-string-regexp": "^5.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/trim-repeated/node_modules/escape-string-regexp": { - "version": "5.0.0", + "node_modules/tsx/node_modules/@esbuild/linux-riscv64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", + "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", + "cpu": [ + "riscv64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18" } }, - "node_modules/ts-api-utils": { - "version": "1.3.0", + "node_modules/tsx/node_modules/@esbuild/linux-s390x": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", + "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", + "cpu": [ + "s390x" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" + "node": ">=18" } }, - "node_modules/ts-jest": { - "version": "29.2.5", + "node_modules/tsx/node_modules/@esbuild/linux-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", + "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "bs-logger": "^0.2.6", - "ejs": "^3.1.10", - "fast-json-stable-stringify": "^2.1.0", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "^4.1.2", - "make-error": "^1.3.6", - "semver": "^7.6.3", - "yargs-parser": "^21.1.1" - }, - "bin": { - "ts-jest": "cli.js" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/transform": "^29.0.0", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", - "typescript": ">=4.3 <6" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/transform": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } + "node": ">=18" } }, - "node_modules/ts-node": { - "version": "10.9.1", + "node_modules/tsx/node_modules/@esbuild/netbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", + "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, - "node_modules/tsconfig-paths": { - "version": "4.2.0", + "node_modules/tsx/node_modules/@esbuild/openbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", + "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=6" + "node": ">=18" } }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", + "node_modules/tsx/node_modules/@esbuild/sunos-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", + "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": ">=4" + "node": ">=18" } }, - "node_modules/tslib": { - "version": "2.8.0", + "node_modules/tsx/node_modules/@esbuild/win32-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", + "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "0BSD" + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } }, - "node_modules/tsx": { - "version": "4.19.1", + "node_modules/tsx/node_modules/@esbuild/win32-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", + "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", - "dependencies": { - "esbuild": "~0.23.0", - "get-tsconfig": "^4.7.5" - }, - "bin": { - "tsx": "dist/cli.mjs" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" + "node": ">=18" } }, - "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { + "node_modules/tsx/node_modules/@esbuild/win32-x64": { "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", + "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", "cpu": [ - "arm64" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "darwin" + "win32" ], "engines": { "node": ">=18" diff --git a/projects/nx-verdaccio/package.json b/projects/nx-verdaccio/package.json index 12735906..4172ae89 100644 --- a/projects/nx-verdaccio/package.json +++ b/projects/nx-verdaccio/package.json @@ -16,5 +16,61 @@ "type": "commonjs", "main": "./src/index.js", "typings": "./src/index.d.ts", - "executors": "./executors.json" + "executors": "./executors.json", + "nx": { + "sourceRoot": "packages/pkg/src", + "projectType": "library", + "name": "nx-verdaccio", + "tags": ["publishable"], + "targets": { + "build": { + "executor": "@nx/js:tsc", + "outputs": ["{options.outputPath}"], + "options": { + "outputPath": "dist/nx-verdaccio", + "main": "src/index.ts", + "tsConfig": "tsconfig.lib.json", + "assets": [ + "src/*.md", + { + "input": "./src", + "glob": "**/!(*.ts)", + "output": "./src" + }, + { + "input": "./src", + "glob": "**/*.d.ts", + "output": "./src" + }, + { + "input": ".", + "glob": "executors.json", + "output": "." + } + ] + } + }, + "lint": { + "options": { + "lintFilePatterns": [ + "{projectRoot}/**/*.ts", + "{projectRoot}/package.json", + "{projectRoot}/generators.json" + ] + } + }, + "unit-test": { + "executor": "@nx/vite:test", + "options": { + "configFile": "vite.config.ts" + } + }, + "integration-test": { + "executor": "@nx/vite:test", + "options": { + "configFile": "vite.integration.config.ts" + } + } + } + } } diff --git a/projects/nx-verdaccio/project.json b/projects/nx-verdaccio/project.json deleted file mode 100644 index d20244bd..00000000 --- a/projects/nx-verdaccio/project.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "nx-verdaccio", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "projects/nx-verdaccio/src", - "projectType": "library", - "tags": ["publishable"], - "implicitDependencies": ["nx-verdaccio"], - "targets": { - "build": { - "executor": "@nx/js:tsc", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/projects/nx-verdaccio", - "main": "projects/nx-verdaccio/src/index.ts", - "tsConfig": "projects/nx-verdaccio/tsconfig.lib.json", - "assets": [ - "projects/nx-verdaccio/*.md", - { - "input": "./projects/nx-verdaccio/src", - "glob": "**/!(*.ts)", - "output": "./src" - }, - { - "input": "./projects/nx-verdaccio/src", - "glob": "**/*.d.ts", - "output": "./src" - }, - { - "input": "./projects/nx-verdaccio", - "glob": "executors.json", - "output": "." - } - ] - } - }, - "lint": { - "options": { - "lintFilePatterns": [ - "{projectRoot}/**/*.ts", - "{projectRoot}/package.json", - "{projectRoot}/generators.json" - ] - } - }, - "unit-test": { - "executor": "@nx/vite:test", - "options": { - "configFile": "projects/nx-verdaccio/vite.config.ts" - } - }, - "integration-test": { - "executor": "@nx/vite:test", - "options": { - "configFile": "projects/nx-verdaccio/vite.integration.config.ts" - } - } - } -} diff --git a/projects/nx-verdaccio/src/plugin/nx-verdaccio.plugin.ts b/projects/nx-verdaccio/src/plugin/nx-verdaccio.plugin.ts index d276d365..6a80f3ef 100644 --- a/projects/nx-verdaccio/src/plugin/nx-verdaccio.plugin.ts +++ b/projects/nx-verdaccio/src/plugin/nx-verdaccio.plugin.ts @@ -7,30 +7,24 @@ import { type ProjectConfiguration, readJsonFile, } from '@nx/devkit'; -import { readFile } from 'node:fs/promises'; -import { dirname, join } from 'node:path'; -import type { NxVerdaccioCreateNodeOptions } from './schema'; -import { - normalizeCreateNodesOptions, - type NormalizedCreateNodeOptions, -} from './normalize-create-nodes-options'; -import { hashObject } from 'nx/src/hasher/file-hasher'; -import { workspaceDataDirectory } from 'nx/src/utils/cache-directory'; -import { PLUGIN_NAME } from './constants'; -import { - getCacheRecord, - readTargetsCache, - setCacheRecord, - writeTargetsToCache, -} from './caching'; -import { createProjectConfiguration } from './targets/create-targets'; +import {dirname, join} from 'node:path'; +import type {NxVerdaccioCreateNodeOptions} from './schema'; +import {normalizeCreateNodesOptions, type NormalizedCreateNodeOptions,} from './normalize-create-nodes-options'; +import {hashObject} from 'nx/src/hasher/file-hasher'; +import {workspaceDataDirectory} from 'nx/src/utils/cache-directory'; +import {PLUGIN_NAME} from './constants'; +import {getCacheRecord, readTargetsCache, setCacheRecord, writeTargetsToCache,} from './caching'; +import {createProjectConfiguration} from './targets/create-targets'; +import {getPackageJsonNxConfig, getProjectConfig, getProjectJsonNxConfig} from "./project-config"; const PROJECT_JSON_FILE_GLOB = '**/project.json'; +const PACKAGE_JSON_FILE_GLOB = '**/package.json'; +const FILE_GLOB = `**/{project,package}.json`; export const createNodesV2: CreateNodesV2 = [ - PROJECT_JSON_FILE_GLOB, + FILE_GLOB, async (configFiles, options, context) => { - const optionsHash = hashObject({ options: options ?? {} }); + const optionsHash = hashObject({options: options ?? {}}); const nxVerdaccioEnvPluginCachePath = join( workspaceDataDirectory, `push-based--${PLUGIN_NAME}-${optionsHash}.hash` @@ -39,10 +33,13 @@ export const createNodesV2: CreateNodesV2 = [ try { return await createNodesFromFiles( async (projectConfigurationFile, internalOptions) => { - const projectConfiguration: ProjectConfiguration = await readFile( - join(process.cwd(), projectConfigurationFile), - 'utf8' - ).then(JSON.parse); + const isPkgJson = projectConfigurationFile.endsWith('package.json'); + if(isPkgJson) { + throw new Error('!!!!!!!!!!!!!!!!!!') + } + + const [primaryConfig, fallback] = isPkgJson ? [getPackageJsonNxConfig, getProjectJsonNxConfig] : [getProjectJsonNxConfig, getPackageJsonNxConfig]; + const projectConfiguration: ProjectConfiguration = await getProjectConfig(projectConfigurationFile, primaryConfig, fallback); if ( !('name' in projectConfiguration) || typeof projectConfiguration.name !== 'string' @@ -74,7 +71,7 @@ export const createNodesV2: CreateNodesV2 = [ ); } } - const { targets, namedInputs = {} } = cachedProjectConfiguration; + const {targets, namedInputs = {}} = cachedProjectConfiguration; return { projects: { [projectRoot]: { diff --git a/projects/nx-verdaccio/src/plugin/project-config.ts b/projects/nx-verdaccio/src/plugin/project-config.ts index 2ca8f2d8..2e58dd39 100644 --- a/projects/nx-verdaccio/src/plugin/project-config.ts +++ b/projects/nx-verdaccio/src/plugin/project-config.ts @@ -1,22 +1,33 @@ -import type { ProjectConfiguration } from '@nx/devkit'; -import { readFile } from 'node:fs/promises'; -import { dirname, join } from 'node:path'; +import type {ProjectConfiguration} from '@nx/devkit'; +import {readFile} from 'node:fs/promises'; +import {dirname, join} from 'node:path'; -export async function getProjectConfig(packageJsonFile: string) { - const { nx: pkgNxConfig = {} } = await readFile( +export async function getProjectJsonNxConfig(packageJsonFile: string) { + const projectConfig: ProjectConfiguration = await readFile( + join(process.cwd(), dirname(packageJsonFile), 'project.json'), + 'utf8' + ).then(JSON.parse); + if (!('name' in projectConfig) || typeof projectConfig.name !== 'string') { + throw new Error('Project name is required'); + } + return projectConfig; +} + +export async function getPackageJsonNxConfig(packageJsonFile: string) { + const {nx: pkgNxConfig = {}} = await readFile( join(process.cwd(), packageJsonFile), 'utf8' ).then(JSON.parse); + return pkgNxConfig; +} + +export async function getProjectConfig(projectConfigFile, getConfig:(projectConfigFile: string) => Promise, fallback: (projectConfigFile: string) => Promise) { + + const pkgNxConfig = await getConfig(projectConfigFile); + if (!('name' in pkgNxConfig) || typeof pkgNxConfig?.name !== 'string') { - // fallback to project.json - const projectConfig: ProjectConfiguration = await readFile( - join(process.cwd(), dirname(packageJsonFile), 'project.json'), - 'utf8' - ).then(JSON.parse); - if (!('name' in projectConfig) || typeof projectConfig.name !== 'string') { - throw new Error('Project name is required'); - } - return projectConfig; + return await fallback(projectConfigFile); } return pkgNxConfig; + }