diff --git a/.github/workflows/e2e-reusable.yml b/.github/workflows/e2e-reusable.yml index 597653a5a6..aa37b08c8e 100644 --- a/.github/workflows/e2e-reusable.yml +++ b/.github/workflows/e2e-reusable.yml @@ -153,7 +153,7 @@ jobs: run: pnpm install --frozen-lockfile - name: Cypress run - uses: cypress-io/github-action@v5.8.3 + uses: cypress-io/github-action@v6.6.1 with: install: false start: pnpm start @@ -172,6 +172,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} E2E_TESTS: true COMMIT_INFO_MESSAGE: 🌳 ${{ inputs.branch }} 🖥️ ${{ inputs.run-env }} 🤖 ${{ inputs.user }} 🗃️ ${{ inputs.spec }} + SHELL: /bin/sh # Check if all tests passed and set the output variable check_testing_matrix: diff --git a/.gitignore b/.gitignore index e9356134e5..0c3174e84e 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,3 @@ cypress/screenshots/* cypress/downloads/* *.swp CHANGELOG-*.md -packages/cli/oclif.manifest.json diff --git a/packages/cli/bin/n8n b/packages/cli/bin/n8n index 11e8b772ad..005cd983cf 100755 --- a/packages/cli/bin/n8n +++ b/packages/cli/bin/n8n @@ -44,7 +44,7 @@ if (process.env.NODEJS_PREFER_IPV4 === 'true') { require('dns').setDefaultResultOrder('ipv4first'); } -require('@oclif/command') - .run() - .then(require('@oclif/command/flush')) - .catch(require('@oclif/errors/handle')); +(async () => { + const oclif = await import('@oclif/core'); + await oclif.execute({}); +})(); diff --git a/packages/cli/package.json b/packages/cli/package.json index f17df468a7..782738a289 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -29,8 +29,6 @@ "format": "prettier --write . --ignore-path ../../.prettierignore", "lint": "eslint . --quiet", "lintfix": "eslint . --fix", - "postpack": "rm -f oclif.manifest.json", - "prepack": "OCLIF_TS_NODE=0 oclif-dev manifest", "start": "run-script-os", "start:default": "cd bin && ./n8n", "start:windows": "cd bin && n8n", @@ -59,12 +57,10 @@ "bin", "templates", "dist", - "oclif.manifest.json", "!dist/**/e2e.*" ], "devDependencies": { "@redocly/cli": "^1.6.0", - "@oclif/dev-cli": "^1.22.2", "@types/basic-auth": "^1.1.3", "@types/bcryptjs": "^2.4.2", "@types/compression": "1.0.1", @@ -101,10 +97,7 @@ "@n8n/n8n-nodes-langchain": "workspace:*", "@n8n/permissions": "workspace:*", "@n8n_io/license-sdk": "2.7.2", - "@oclif/command": "1.8.18", - "@oclif/config": "1.18.17", - "@oclif/core": "1.16.6", - "@oclif/errors": "1.3.6", + "@oclif/core": "3.18.1", "@rudderstack/rudder-sdk-node": "1.0.6", "@sentry/integrations": "7.87.0", "@sentry/node": "7.87.0", diff --git a/packages/cli/src/commands/BaseCommand.ts b/packages/cli/src/commands/BaseCommand.ts index b7456a69b5..61aab82702 100644 --- a/packages/cli/src/commands/BaseCommand.ts +++ b/packages/cli/src/commands/BaseCommand.ts @@ -1,7 +1,7 @@ import 'reflect-metadata'; -import { Command } from '@oclif/command'; -import { ExitError } from '@oclif/errors'; import { Container } from 'typedi'; +import { Command } from '@oclif/core'; +import { ExitError } from '@oclif/core/lib/errors'; import { ApplicationError, ErrorReporterProxy as ErrorReporter, sleep } from 'n8n-workflow'; import { BinaryDataService, InstanceSettings, ObjectStoreService } from 'n8n-core'; import type { AbstractServer } from '@/AbstractServer'; diff --git a/packages/cli/src/commands/audit.ts b/packages/cli/src/commands/audit.ts index eb027ae0fa..2414c09fc7 100644 --- a/packages/cli/src/commands/audit.ts +++ b/packages/cli/src/commands/audit.ts @@ -1,12 +1,13 @@ -import { flags } from '@oclif/command'; +import { Container } from 'typedi'; +import { Flags } from '@oclif/core'; +import { ApplicationError } from 'n8n-workflow'; + import { SecurityAuditService } from '@/security-audit/SecurityAudit.service'; import { RISK_CATEGORIES } from '@/security-audit/constants'; import config from '@/config'; import type { Risk } from '@/security-audit/types'; import { BaseCommand } from './BaseCommand'; -import { Container } from 'typedi'; import { InternalHooks } from '@/InternalHooks'; -import { ApplicationError } from 'n8n-workflow'; export class SecurityAudit extends BaseCommand { static description = 'Generate a security audit report for this n8n instance'; @@ -18,20 +19,20 @@ export class SecurityAudit extends BaseCommand { ]; static flags = { - help: flags.help({ char: 'h' }), - categories: flags.string({ + help: Flags.help({ char: 'h' }), + categories: Flags.string({ default: RISK_CATEGORIES.join(','), description: 'Comma-separated list of categories to include in the audit', }), // eslint-disable-next-line @typescript-eslint/naming-convention - 'days-abandoned-workflow': flags.integer({ + 'days-abandoned-workflow': Flags.integer({ default: config.getEnv('security.audit.daysAbandonedWorkflow'), description: 'Days for a workflow to be considered abandoned if not executed', }), }; async run() { - const { flags: auditFlags } = this.parse(SecurityAudit); + const { flags: auditFlags } = await this.parse(SecurityAudit); const categories = auditFlags.categories?.split(',').filter((c): c is Risk.Category => c !== '') ?? diff --git a/packages/cli/src/commands/db/revert.ts b/packages/cli/src/commands/db/revert.ts index 428216e5b2..b4c99a5057 100644 --- a/packages/cli/src/commands/db/revert.ts +++ b/packages/cli/src/commands/db/revert.ts @@ -1,4 +1,4 @@ -import { Command, flags } from '@oclif/command'; +import { Command, Flags } from '@oclif/core'; import type { DataSourceOptions as ConnectionOptions } from 'typeorm'; import { DataSource as Connection } from 'typeorm'; import { Container } from 'typedi'; @@ -14,7 +14,7 @@ export class DbRevertMigrationCommand extends Command { static examples = ['$ n8n db:revert']; static flags = { - help: flags.help({ char: 'h' }), + help: Flags.help({ char: 'h' }), }; protected logger = Container.get(Logger); @@ -22,7 +22,7 @@ export class DbRevertMigrationCommand extends Command { private connection: Connection; async init() { - this.parse(DbRevertMigrationCommand); + await this.parse(DbRevertMigrationCommand); } async run() { diff --git a/packages/cli/src/commands/execute.ts b/packages/cli/src/commands/execute.ts index c298639fbf..329349297f 100644 --- a/packages/cli/src/commands/execute.ts +++ b/packages/cli/src/commands/execute.ts @@ -1,5 +1,6 @@ +import { Container } from 'typedi'; +import { Flags } from '@oclif/core'; import { promises as fs } from 'fs'; -import { flags } from '@oclif/command'; import { PLACEHOLDER_EMPTY_WORKFLOW_ID } from 'n8n-core'; import type { IWorkflowBase } from 'n8n-workflow'; import { ApplicationError, ExecutionBaseError } from 'n8n-workflow'; @@ -9,7 +10,7 @@ import { WorkflowRunner } from '@/WorkflowRunner'; import type { IWorkflowExecutionDataProcess } from '@/Interfaces'; import { findCliWorkflowStart, isWorkflowIdValid } from '@/utils'; import { BaseCommand } from './BaseCommand'; -import { Container } from 'typedi'; + import { WorkflowRepository } from '@db/repositories/workflow.repository'; import { OwnershipService } from '@/services/ownership.service'; @@ -19,14 +20,14 @@ export class Execute extends BaseCommand { static examples = ['$ n8n execute --id=5', '$ n8n execute --file=workflow.json']; static flags = { - help: flags.help({ char: 'h' }), - file: flags.string({ + help: Flags.help({ char: 'h' }), + file: Flags.string({ description: 'path to a workflow file to execute', }), - id: flags.string({ + id: Flags.string({ description: 'id of the workflow to execute', }), - rawOutput: flags.boolean({ + rawOutput: Flags.boolean({ description: 'Outputs only JSON data, with no other text', }), }; @@ -38,8 +39,7 @@ export class Execute extends BaseCommand { } async run() { - // eslint-disable-next-line @typescript-eslint/no-shadow - const { flags } = this.parse(Execute); + const { flags } = await this.parse(Execute); if (!flags.id && !flags.file) { this.logger.info('Either option "--id" or "--file" have to be set!'); diff --git a/packages/cli/src/commands/executeBatch.ts b/packages/cli/src/commands/executeBatch.ts index 921fd49623..565eb555bd 100644 --- a/packages/cli/src/commands/executeBatch.ts +++ b/packages/cli/src/commands/executeBatch.ts @@ -1,7 +1,8 @@ /* eslint-disable @typescript-eslint/no-loop-func */ +import { Container } from 'typedi'; +import { Flags } from '@oclif/core'; import fs from 'fs'; import os from 'os'; -import { flags } from '@oclif/command'; import type { IRun, ITaskData } from 'n8n-workflow'; import { ApplicationError, jsonParse, sleep } from 'n8n-workflow'; import { sep } from 'path'; @@ -12,9 +13,11 @@ import { ActiveExecutions } from '@/ActiveExecutions'; import { WorkflowRunner } from '@/WorkflowRunner'; import type { IWorkflowDb, IWorkflowExecutionDataProcess } from '@/Interfaces'; import type { User } from '@db/entities/User'; +import { WorkflowRepository } from '@db/repositories/workflow.repository'; +import { OwnershipService } from '@/services/ownership.service'; import { findCliWorkflowStart } from '@/utils'; + import { BaseCommand } from './BaseCommand'; -import { Container } from 'typedi'; import type { IExecutionResult, INodeSpecialCase, @@ -22,8 +25,6 @@ import type { IResult, IWorkflowExecutionProgress, } from '../types/commands.types'; -import { WorkflowRepository } from '@db/repositories/workflow.repository'; -import { OwnershipService } from '@/services/ownership.service'; const re = /\d+/; @@ -60,49 +61,49 @@ export class ExecuteBatch extends BaseCommand { ]; static flags = { - help: flags.help({ char: 'h' }), - debug: flags.boolean({ + help: Flags.help({ char: 'h' }), + debug: Flags.boolean({ description: 'Toggles on displaying all errors and debug messages.', }), - ids: flags.string({ + ids: Flags.string({ description: 'Specifies workflow IDs to get executed, separated by a comma or a file containing the ids', }), - concurrency: flags.integer({ + concurrency: Flags.integer({ default: 1, description: 'How many workflows can run in parallel. Defaults to 1 which means no concurrency.', }), - output: flags.string({ + output: Flags.string({ description: 'Enable execution saving, You must inform an existing folder to save execution via this param', }), - snapshot: flags.string({ + snapshot: Flags.string({ description: 'Enables snapshot saving. You must inform an existing folder to save snapshots via this param.', }), - compare: flags.string({ + compare: Flags.string({ description: 'Compares current execution with an existing snapshot. You must inform an existing folder where the snapshots are saved.', }), - shallow: flags.boolean({ + shallow: Flags.boolean({ description: 'Compares only if attributes output from node are the same, with no regards to nested JSON objects.', }), - githubWorkflow: flags.boolean({ + githubWorkflow: Flags.boolean({ description: 'Enables more lenient comparison for GitHub workflows. This is useful for reducing false positives when comparing Test workflows.', }), - skipList: flags.string({ + skipList: Flags.string({ description: 'File containing a comma separated list of workflow IDs to skip.', }), - retries: flags.integer({ + retries: Flags.integer({ description: 'Retries failed workflows up to N tries. Default is 1. Set 0 to disable.', default: 1, }), - shortOutput: flags.boolean({ + shortOutput: Flags.boolean({ description: 'Omits the full execution information from output, displaying only summary.', }), }; @@ -185,8 +186,7 @@ export class ExecuteBatch extends BaseCommand { } async run() { - // eslint-disable-next-line @typescript-eslint/no-shadow - const { flags } = this.parse(ExecuteBatch); + const { flags } = await this.parse(ExecuteBatch); ExecuteBatch.debug = flags.debug; ExecuteBatch.concurrency = flags.concurrency || 1; diff --git a/packages/cli/src/commands/export/credentials.ts b/packages/cli/src/commands/export/credentials.ts index 47008aa734..b0914cc4f5 100644 --- a/packages/cli/src/commands/export/credentials.ts +++ b/packages/cli/src/commands/export/credentials.ts @@ -1,4 +1,4 @@ -import { flags } from '@oclif/command'; +import { Flags } from '@oclif/core'; import fs from 'fs'; import path from 'path'; import { Credentials } from 'n8n-core'; @@ -20,37 +20,36 @@ export class ExportCredentialsCommand extends BaseCommand { ]; static flags = { - help: flags.help({ char: 'h' }), - all: flags.boolean({ + help: Flags.help({ char: 'h' }), + all: Flags.boolean({ description: 'Export all credentials', }), - backup: flags.boolean({ + backup: Flags.boolean({ description: 'Sets --all --pretty --separate for simple backups. Only --output has to be set additionally.', }), - id: flags.string({ + id: Flags.string({ description: 'The ID of the credential to export', }), - output: flags.string({ + output: Flags.string({ char: 'o', description: 'Output file name or directory if using separate files', }), - pretty: flags.boolean({ + pretty: Flags.boolean({ description: 'Format the output in an easier to read fashion', }), - separate: flags.boolean({ + separate: Flags.boolean({ description: 'Exports one file per credential (useful for versioning). Must inform a directory via --output.', }), - decrypted: flags.boolean({ + decrypted: Flags.boolean({ description: 'Exports data decrypted / in plain text. ALL SENSITIVE INFORMATION WILL BE VISIBLE IN THE FILES. Use to migrate from a installation to another that have a different secret key (in the config file).', }), }; async run() { - // eslint-disable-next-line @typescript-eslint/no-shadow - const { flags } = this.parse(ExportCredentialsCommand); + const { flags } = await this.parse(ExportCredentialsCommand); if (flags.backup) { flags.all = true; diff --git a/packages/cli/src/commands/export/workflow.ts b/packages/cli/src/commands/export/workflow.ts index 3aac28ffbb..c747608b1d 100644 --- a/packages/cli/src/commands/export/workflow.ts +++ b/packages/cli/src/commands/export/workflow.ts @@ -1,4 +1,4 @@ -import { flags } from '@oclif/command'; +import { Flags } from '@oclif/core'; import fs from 'fs'; import path from 'path'; import { BaseCommand } from '../BaseCommand'; @@ -17,33 +17,32 @@ export class ExportWorkflowsCommand extends BaseCommand { ]; static flags = { - help: flags.help({ char: 'h' }), - all: flags.boolean({ + help: Flags.help({ char: 'h' }), + all: Flags.boolean({ description: 'Export all workflows', }), - backup: flags.boolean({ + backup: Flags.boolean({ description: 'Sets --all --pretty --separate for simple backups. Only --output has to be set additionally.', }), - id: flags.string({ + id: Flags.string({ description: 'The ID of the workflow to export', }), - output: flags.string({ + output: Flags.string({ char: 'o', description: 'Output file name or directory if using separate files', }), - pretty: flags.boolean({ + pretty: Flags.boolean({ description: 'Format the output in an easier to read fashion', }), - separate: flags.boolean({ + separate: Flags.boolean({ description: 'Exports one file per workflow (useful for versioning). Must inform a directory via --output.', }), }; async run() { - // eslint-disable-next-line @typescript-eslint/no-shadow - const { flags } = this.parse(ExportWorkflowsCommand); + const { flags } = await this.parse(ExportWorkflowsCommand); if (flags.backup) { flags.all = true; diff --git a/packages/cli/src/commands/import/credentials.ts b/packages/cli/src/commands/import/credentials.ts index cb4bdc6a1f..067e8c7f4e 100644 --- a/packages/cli/src/commands/import/credentials.ts +++ b/packages/cli/src/commands/import/credentials.ts @@ -1,9 +1,10 @@ -import { flags } from '@oclif/command'; +import { Container } from 'typedi'; +import { Flags } from '@oclif/core'; import { Cipher } from 'n8n-core'; import fs from 'fs'; import glob from 'fast-glob'; -import { Container } from 'typedi'; import type { EntityManager } from 'typeorm'; + import * as Db from '@/Db'; import type { User } from '@db/entities/User'; import { SharedCredentials } from '@db/entities/SharedCredentials'; @@ -28,15 +29,15 @@ export class ImportCredentialsCommand extends BaseCommand { ]; static flags = { - help: flags.help({ char: 'h' }), - input: flags.string({ + help: Flags.help({ char: 'h' }), + input: Flags.string({ char: 'i', description: 'Input file name or directory if --separate is used', }), - separate: flags.boolean({ + separate: Flags.boolean({ description: 'Imports *.json files from directory provided by --input', }), - userId: flags.string({ + userId: Flags.string({ description: 'The ID of the user to assign the imported credentials to', }), }; @@ -51,8 +52,7 @@ export class ImportCredentialsCommand extends BaseCommand { } async run(): Promise { - // eslint-disable-next-line @typescript-eslint/no-shadow - const { flags } = this.parse(ImportCredentialsCommand); + const { flags } = await this.parse(ImportCredentialsCommand); if (!flags.input) { this.logger.info('An input file or directory with --input must be provided'); diff --git a/packages/cli/src/commands/import/workflow.ts b/packages/cli/src/commands/import/workflow.ts index 9f3ccfc682..28d7ca91a0 100644 --- a/packages/cli/src/commands/import/workflow.ts +++ b/packages/cli/src/commands/import/workflow.ts @@ -1,18 +1,19 @@ -import { flags } from '@oclif/command'; +import { Container } from 'typedi'; +import { Flags } from '@oclif/core'; import { ApplicationError, jsonParse } from 'n8n-workflow'; import fs from 'fs'; import glob from 'fast-glob'; -import { Container } from 'typedi'; + +import { UM_FIX_INSTRUCTION } from '@/constants'; import { WorkflowEntity } from '@db/entities/WorkflowEntity'; import { disableAutoGeneratedIds } from '@db/utils/commandHelpers'; -import type { IWorkflowToImport } from '@/Interfaces'; -import { BaseCommand } from '../BaseCommand'; import { generateNanoId } from '@db/utils/generators'; -import { RoleService } from '@/services/role.service'; -import { UM_FIX_INSTRUCTION } from '@/constants'; import { UserRepository } from '@db/repositories/user.repository'; +import { WorkflowRepository } from '@db/repositories/workflow.repository'; +import type { IWorkflowToImport } from '@/Interfaces'; +import { RoleService } from '@/services/role.service'; import { ImportService } from '@/services/import.service'; -import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; +import { BaseCommand } from '../BaseCommand'; function assertHasWorkflowsToImport(workflows: unknown): asserts workflows is IWorkflowToImport[] { if (!Array.isArray(workflows)) { @@ -43,15 +44,15 @@ export class ImportWorkflowsCommand extends BaseCommand { ]; static flags = { - help: flags.help({ char: 'h' }), - input: flags.string({ + help: Flags.help({ char: 'h' }), + input: Flags.string({ char: 'i', description: 'Input file name or directory if --separate is used', }), - separate: flags.boolean({ + separate: Flags.boolean({ description: 'Imports *.json files from directory provided by --input', }), - userId: flags.string({ + userId: Flags.string({ description: 'The ID of the user to assign the imported workflows to', }), }; @@ -62,8 +63,7 @@ export class ImportWorkflowsCommand extends BaseCommand { } async run(): Promise { - // eslint-disable-next-line @typescript-eslint/no-shadow - const { flags } = this.parse(ImportWorkflowsCommand); + const { flags } = await this.parse(ImportWorkflowsCommand); if (!flags.input) { this.logger.info('An input file or directory with --input must be provided'); diff --git a/packages/cli/src/commands/license/clear.ts b/packages/cli/src/commands/license/clear.ts index e25fb94dc4..0191136caf 100644 --- a/packages/cli/src/commands/license/clear.ts +++ b/packages/cli/src/commands/license/clear.ts @@ -1,7 +1,7 @@ +import { Container } from 'typedi'; import { SETTINGS_LICENSE_CERT_KEY } from '@/constants'; import { BaseCommand } from '../BaseCommand'; import { SettingsRepository } from '@db/repositories/settings.repository'; -import Container from 'typedi'; export class ClearLicenseCommand extends BaseCommand { static description = 'Clear license'; diff --git a/packages/cli/src/commands/license/info.ts b/packages/cli/src/commands/license/info.ts index dee106a581..a4e9e42cf2 100644 --- a/packages/cli/src/commands/license/info.ts +++ b/packages/cli/src/commands/license/info.ts @@ -1,5 +1,5 @@ -import { License } from '@/License'; import { Container } from 'typedi'; +import { License } from '@/License'; import { BaseCommand } from '../BaseCommand'; export class LicenseInfoCommand extends BaseCommand { diff --git a/packages/cli/src/commands/list/workflow.ts b/packages/cli/src/commands/list/workflow.ts index abab56f2d5..2d33de19e3 100644 --- a/packages/cli/src/commands/list/workflow.ts +++ b/packages/cli/src/commands/list/workflow.ts @@ -1,7 +1,7 @@ -import { flags } from '@oclif/command'; -import { BaseCommand } from '../BaseCommand'; -import { WorkflowRepository } from '@db/repositories/workflow.repository'; import Container from 'typedi'; +import { Flags } from '@oclif/core'; +import { WorkflowRepository } from '@db/repositories/workflow.repository'; +import { BaseCommand } from '../BaseCommand'; export class ListWorkflowCommand extends BaseCommand { static description = '\nList workflows'; @@ -13,18 +13,17 @@ export class ListWorkflowCommand extends BaseCommand { ]; static flags = { - help: flags.help({ char: 'h' }), - active: flags.string({ + help: Flags.help({ char: 'h' }), + active: Flags.string({ description: 'Filters workflows by active status. Can be true or false', }), - onlyId: flags.boolean({ + onlyId: Flags.boolean({ description: 'Outputs workflow IDs only, one per line.', }), }; async run() { - // eslint-disable-next-line @typescript-eslint/no-shadow - const { flags } = this.parse(ListWorkflowCommand); + const { flags } = await this.parse(ListWorkflowCommand); if (flags.active !== undefined && !['true', 'false'].includes(flags.active)) { this.error('The --active flag has to be passed using true or false'); diff --git a/packages/cli/src/commands/mfa/disable.ts b/packages/cli/src/commands/mfa/disable.ts index a9a51db5ba..fb39aed795 100644 --- a/packages/cli/src/commands/mfa/disable.ts +++ b/packages/cli/src/commands/mfa/disable.ts @@ -1,7 +1,7 @@ -import { flags } from '@oclif/command'; -import { BaseCommand } from '../BaseCommand'; import Container from 'typedi'; +import { Flags } from '@oclif/core'; import { UserRepository } from '@db/repositories/user.repository'; +import { BaseCommand } from '../BaseCommand'; export class DisableMFACommand extends BaseCommand { static description = 'Disable MFA authentication for a user'; @@ -9,8 +9,8 @@ export class DisableMFACommand extends BaseCommand { static examples = ['$ n8n mfa:disable --email=johndoe@example.com']; static flags = { - help: flags.help({ char: 'h' }), - email: flags.string({ + help: Flags.help({ char: 'h' }), + email: Flags.string({ description: 'The email of the user to disable the MFA authentication', }), }; @@ -20,8 +20,7 @@ export class DisableMFACommand extends BaseCommand { } async run(): Promise { - // eslint-disable-next-line @typescript-eslint/no-shadow - const { flags } = this.parse(DisableMFACommand); + const { flags } = await this.parse(DisableMFACommand); if (!flags.email) { this.logger.info('An email with --email must be provided'); diff --git a/packages/cli/src/commands/start.ts b/packages/cli/src/commands/start.ts index 906c2b6d7f..955d429586 100644 --- a/packages/cli/src/commands/start.ts +++ b/packages/cli/src/commands/start.ts @@ -1,27 +1,24 @@ /* eslint-disable @typescript-eslint/no-unsafe-call */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ import { Container } from 'typedi'; +import { Flags, type Config } from '@oclif/core'; import path from 'path'; import { mkdir } from 'fs/promises'; import { createReadStream, createWriteStream, existsSync } from 'fs'; -import { flags } from '@oclif/command'; import stream from 'stream'; import replaceStream from 'replacestream'; import { promisify } from 'util'; import glob from 'fast-glob'; - import { sleep, jsonParse } from 'n8n-workflow'; -import config from '@/config'; +import config from '@/config'; import { ActiveExecutions } from '@/ActiveExecutions'; import { ActiveWorkflowRunner } from '@/ActiveWorkflowRunner'; import { Server } from '@/Server'; import { EDITOR_UI_DIST_DIR, LICENSE_FEATURES } from '@/constants'; import { eventBus } from '@/eventbus'; -import { BaseCommand } from './BaseCommand'; import { InternalHooks } from '@/InternalHooks'; import { License } from '@/License'; -import type { IConfig } from '@oclif/config'; import { OrchestrationService } from '@/services/orchestration.service'; import { OrchestrationHandlerMainService } from '@/services/orchestration/main/orchestration.handler.main.service'; import { PruningService } from '@/services/pruning.service'; @@ -30,6 +27,7 @@ import { SettingsRepository } from '@db/repositories/settings.repository'; import { ExecutionRepository } from '@db/repositories/execution.repository'; import { FeatureNotLicensedError } from '@/errors/feature-not-licensed.error'; import { WaitTracker } from '@/WaitTracker'; +import { BaseCommand } from './BaseCommand'; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires const open = require('open'); @@ -46,16 +44,16 @@ export class Start extends BaseCommand { ]; static flags = { - help: flags.help({ char: 'h' }), - open: flags.boolean({ + help: Flags.help({ char: 'h' }), + open: Flags.boolean({ char: 'o', description: 'opens the UI automatically in browser', }), - tunnel: flags.boolean({ + tunnel: Flags.boolean({ description: 'runs the webhooks via a hooks.n8n.cloud tunnel server. Use only for testing and development!', }), - reinstallMissingPackages: flags.boolean({ + reinstallMissingPackages: Flags.boolean({ description: 'Attempts to self heal n8n if packages with nodes are missing. Might drastically increase startup times.', }), @@ -67,7 +65,7 @@ export class Start extends BaseCommand { private pruningService: PruningService; - constructor(argv: string[], cmdConfig: IConfig) { + constructor(argv: string[], cmdConfig: Config) { super(argv, cmdConfig); this.setInstanceType('main'); this.setInstanceQueueModeId(); @@ -260,8 +258,7 @@ export class Start extends BaseCommand { } async run() { - // eslint-disable-next-line @typescript-eslint/no-shadow - const { flags } = this.parse(Start); + const { flags } = await this.parse(Start); // Load settings from database and set them to config. const databaseSettings = await Container.get(SettingsRepository).findBy({ diff --git a/packages/cli/src/commands/update/workflow.ts b/packages/cli/src/commands/update/workflow.ts index 08f9403368..7c4dbd401d 100644 --- a/packages/cli/src/commands/update/workflow.ts +++ b/packages/cli/src/commands/update/workflow.ts @@ -1,7 +1,7 @@ -import { flags } from '@oclif/command'; -import { BaseCommand } from '../BaseCommand'; +import { Container } from 'typedi'; +import { Flags } from '@oclif/core'; import { WorkflowRepository } from '@db/repositories/workflow.repository'; -import Container from 'typedi'; +import { BaseCommand } from '../BaseCommand'; export class UpdateWorkflowCommand extends BaseCommand { static description = 'Update workflows'; @@ -12,21 +12,20 @@ export class UpdateWorkflowCommand extends BaseCommand { ]; static flags = { - help: flags.help({ char: 'h' }), - active: flags.string({ + help: Flags.help({ char: 'h' }), + active: Flags.string({ description: 'Active state the workflow/s should be set to', }), - all: flags.boolean({ + all: Flags.boolean({ description: 'Operate on all workflows', }), - id: flags.string({ + id: Flags.string({ description: 'The ID of the workflow to operate on', }), }; async run() { - // eslint-disable-next-line @typescript-eslint/no-shadow - const { flags } = this.parse(UpdateWorkflowCommand); + const { flags } = await this.parse(UpdateWorkflowCommand); if (!flags.all && !flags.id) { console.info('Either option "--all" or "--id" have to be set!'); diff --git a/packages/cli/src/commands/webhook.ts b/packages/cli/src/commands/webhook.ts index 1ff1dd8bb8..e7184bdfe0 100644 --- a/packages/cli/src/commands/webhook.ts +++ b/packages/cli/src/commands/webhook.ts @@ -1,12 +1,13 @@ -import { flags } from '@oclif/command'; +import { Container } from 'typedi'; +import { Flags, type Config } from '@oclif/core'; import { sleep } from 'n8n-workflow'; + import config from '@/config'; import { ActiveExecutions } from '@/ActiveExecutions'; import { WebhookServer } from '@/WebhookServer'; import { Queue } from '@/Queue'; import { BaseCommand } from './BaseCommand'; -import { Container } from 'typedi'; -import type { IConfig } from '@oclif/config'; + import { OrchestrationWebhookService } from '@/services/orchestration/webhook/orchestration.webhook.service'; import { OrchestrationHandlerWebhookService } from '@/services/orchestration/webhook/orchestration.handler.webhook.service'; @@ -16,12 +17,12 @@ export class Webhook extends BaseCommand { static examples = ['$ n8n webhook']; static flags = { - help: flags.help({ char: 'h' }), + help: Flags.help({ char: 'h' }), }; protected server = Container.get(WebhookServer); - constructor(argv: string[], cmdConfig: IConfig) { + constructor(argv: string[], cmdConfig: Config) { super(argv, cmdConfig); this.setInstanceType('webhook'); if (this.queueModeId) { diff --git a/packages/cli/src/commands/worker.ts b/packages/cli/src/commands/worker.ts index 46c20c6bbc..99657fc9ae 100644 --- a/packages/cli/src/commands/worker.ts +++ b/packages/cli/src/commands/worker.ts @@ -1,11 +1,9 @@ +import { Container } from 'typedi'; +import { Flags, type Config } from '@oclif/core'; import express from 'express'; import http from 'http'; import type PCancelable from 'p-cancelable'; -import { Container } from 'typedi'; - -import { flags } from '@oclif/command'; import { WorkflowExecute } from 'n8n-core'; - import type { ExecutionError, ExecutionStatus, @@ -20,13 +18,11 @@ import * as ResponseHelper from '@/ResponseHelper'; import * as WebhookHelpers from '@/WebhookHelpers'; import * as WorkflowExecuteAdditionalData from '@/WorkflowExecuteAdditionalData'; import { PermissionChecker } from '@/UserManagement/PermissionChecker'; - import config from '@/config'; import type { Job, JobId, JobResponse, WebhookResponse } from '@/Queue'; import { Queue } from '@/Queue'; import { generateFailedExecutionFromError } from '@/WorkflowHelpers'; import { N8N_VERSION } from '@/constants'; -import { BaseCommand } from './BaseCommand'; import { ExecutionRepository } from '@db/repositories/execution.repository'; import { WorkflowRepository } from '@db/repositories/workflow.repository'; import { OwnershipService } from '@/services/ownership.service'; @@ -36,11 +32,11 @@ import { rawBodyReader, bodyParser } from '@/middlewares'; import { eventBus } from '@/eventbus'; import type { RedisServicePubSubSubscriber } from '@/services/redis/RedisServicePubSubSubscriber'; import { EventMessageGeneric } from '@/eventbus/EventMessageClasses/EventMessageGeneric'; -import type { IConfig } from '@oclif/config'; import { OrchestrationHandlerWorkerService } from '@/services/orchestration/worker/orchestration.handler.worker.service'; import { OrchestrationWorkerService } from '@/services/orchestration/worker/orchestration.worker.service'; -import type { WorkerJobStatusSummary } from '../services/orchestration/worker/types'; +import type { WorkerJobStatusSummary } from '@/services/orchestration/worker/types'; import { ServiceUnavailableError } from '@/errors/response-errors/service-unavailable.error'; +import { BaseCommand } from './BaseCommand'; export class Worker extends BaseCommand { static description = '\nStarts a n8n worker'; @@ -48,8 +44,8 @@ export class Worker extends BaseCommand { static examples = ['$ n8n worker --concurrency=5']; static flags = { - help: flags.help({ char: 'h' }), - concurrency: flags.integer({ + help: Flags.help({ char: 'h' }), + concurrency: Flags.integer({ default: 10, description: 'How many jobs can run in parallel.', }), @@ -257,7 +253,7 @@ export class Worker extends BaseCommand { }; } - constructor(argv: string[], cmdConfig: IConfig) { + constructor(argv: string[], cmdConfig: Config) { super(argv, cmdConfig); if (!process.env.N8N_ENCRYPTION_KEY) { @@ -333,8 +329,7 @@ export class Worker extends BaseCommand { } async initQueue() { - // eslint-disable-next-line @typescript-eslint/no-shadow - const { flags } = this.parse(Worker); + const { flags } = await this.parse(Worker); const redisConnectionTimeoutLimit = config.getEnv('queue.bull.redis.timeoutThreshold'); @@ -495,8 +490,7 @@ export class Worker extends BaseCommand { } async run() { - // eslint-disable-next-line @typescript-eslint/no-shadow - const { flags } = this.parse(Worker); + const { flags } = await this.parse(Worker); this.logger.info('\nn8n worker is now ready'); this.logger.info(` * Version: ${N8N_VERSION}`); diff --git a/packages/cli/test/integration/commands/credentials.cmd.test.ts b/packages/cli/test/integration/commands/credentials.cmd.test.ts index 1104e3c6b9..d5beb03552 100644 --- a/packages/cli/test/integration/commands/credentials.cmd.test.ts +++ b/packages/cli/test/integration/commands/credentials.cmd.test.ts @@ -1,4 +1,4 @@ -import * as Config from '@oclif/config'; +import { Config } from '@oclif/core'; import { InternalHooks } from '@/InternalHooks'; import { ImportCredentialsCommand } from '@/commands/import/credentials'; @@ -8,6 +8,8 @@ import { mockInstance } from '../../shared/mocking'; import * as testDb from '../shared/testDb'; import { getAllCredentials } from '../shared/db/credentials'; +const oclifConfig = new Config({ root: __dirname }); + beforeAll(async () => { mockInstance(InternalHooks); mockInstance(LoadNodesAndCredentials); @@ -23,12 +25,11 @@ afterAll(async () => { }); test('import:credentials should import a credential', async () => { - const config: Config.IConfig = new Config.Config({ root: __dirname }); const before = await getAllCredentials(); expect(before.length).toBe(0); const importer = new ImportCredentialsCommand( ['--input=./test/integration/commands/importCredentials/credentials.json'], - config, + oclifConfig, ); const mockExit = jest.spyOn(process, 'exit').mockImplementation(() => { throw new Error('process.exit'); diff --git a/packages/cli/test/integration/commands/import.cmd.test.ts b/packages/cli/test/integration/commands/import.cmd.test.ts index 44e92261f6..211fde5641 100644 --- a/packages/cli/test/integration/commands/import.cmd.test.ts +++ b/packages/cli/test/integration/commands/import.cmd.test.ts @@ -1,4 +1,4 @@ -import * as Config from '@oclif/config'; +import { Config } from '@oclif/core'; import { InternalHooks } from '@/InternalHooks'; import { ImportWorkflowsCommand } from '@/commands/import/workflow'; @@ -8,6 +8,8 @@ import { mockInstance } from '../../shared/mocking'; import * as testDb from '../shared/testDb'; import { getAllWorkflows } from '../shared/db/workflows'; +const oclifConfig = new Config({ root: __dirname }); + beforeAll(async () => { mockInstance(InternalHooks); mockInstance(LoadNodesAndCredentials); @@ -23,12 +25,11 @@ afterAll(async () => { }); test('import:workflow should import active workflow and deactivate it', async () => { - const config: Config.IConfig = new Config.Config({ root: __dirname }); const before = await getAllWorkflows(); expect(before.length).toBe(0); const importer = new ImportWorkflowsCommand( ['--separate', '--input=./test/integration/commands/importWorkflows/separate'], - config, + oclifConfig, ); const mockExit = jest.spyOn(process, 'exit').mockImplementation(() => { throw new Error('process.exit'); @@ -50,12 +51,11 @@ test('import:workflow should import active workflow and deactivate it', async () }); test('import:workflow should import active workflow from combined file and deactivate it', async () => { - const config: Config.IConfig = new Config.Config({ root: __dirname }); const before = await getAllWorkflows(); expect(before.length).toBe(0); const importer = new ImportWorkflowsCommand( ['--input=./test/integration/commands/importWorkflows/combined/combined.json'], - config, + oclifConfig, ); const mockExit = jest.spyOn(process, 'exit').mockImplementation(() => { throw new Error('process.exit'); diff --git a/packages/cli/test/integration/commands/worker.cmd.test.ts b/packages/cli/test/integration/commands/worker.cmd.test.ts index 3c1f4558e1..604b1b297d 100644 --- a/packages/cli/test/integration/commands/worker.cmd.test.ts +++ b/packages/cli/test/integration/commands/worker.cmd.test.ts @@ -1,5 +1,5 @@ +import { Config } from '@oclif/core'; import { Worker } from '@/commands/worker'; -import * as Config from '@oclif/config'; import config from '@/config'; import { Telemetry } from '@/telemetry'; import { ExternalSecretsManager } from '@/ExternalSecrets/ExternalSecretsManager.ee'; @@ -20,7 +20,7 @@ import { OrchestrationService } from '@/services/orchestration.service'; import { mockInstance } from '../../shared/mocking'; -const oclifConfig: Config.IConfig = new Config.Config({ root: __dirname }); +const oclifConfig = new Config({ root: __dirname }); beforeAll(async () => { config.set('executions.mode', 'queue'); diff --git a/packages/node-dev/bin/n8n-node-dev b/packages/node-dev/bin/n8n-node-dev index 4c25030d48..9635b5c035 100755 --- a/packages/node-dev/bin/n8n-node-dev +++ b/packages/node-dev/bin/n8n-node-dev @@ -1,5 +1,6 @@ #!/usr/bin/env node -require('@oclif/command').run() -.then(require('@oclif/command/flush')) -.catch(require('@oclif/errors/handle')); +(async () => { + const oclif = await import('@oclif/core'); + await oclif.execute({}); +})(); diff --git a/packages/node-dev/commands/build.ts b/packages/node-dev/commands/build.ts index b95abbab4d..5a78bf27ca 100644 --- a/packages/node-dev/commands/build.ts +++ b/packages/node-dev/commands/build.ts @@ -1,6 +1,6 @@ import { Container } from 'typedi'; +import { Command, Flags } from '@oclif/core'; import { InstanceSettings } from 'n8n-core'; -import { Command, flags } from '@oclif/command'; import type { IBuildOptions } from '../src'; import { buildFiles } from '../src'; @@ -15,22 +15,21 @@ export class Build extends Command { ]; static flags = { - help: flags.help({ char: 'h' }), - destination: flags.string({ + help: Flags.help({ char: 'h' }), + destination: Flags.string({ char: 'd', description: `The path to copy the compiled files to [default: ${ Container.get(InstanceSettings).customExtensionDir }]`, }), - watch: flags.boolean({ + watch: Flags.boolean({ description: 'Starts in watch mode and automatically builds and copies file whenever they change', }), }; async run() { - // eslint-disable-next-line @typescript-eslint/no-shadow - const { flags } = this.parse(Build); + const { flags } = await this.parse(Build); this.log('\nBuild credentials and nodes'); this.log('========================='); diff --git a/packages/node-dev/commands/new.ts b/packages/node-dev/commands/new.ts index 222c163522..217ca21ba4 100644 --- a/packages/node-dev/commands/new.ts +++ b/packages/node-dev/commands/new.ts @@ -2,10 +2,10 @@ /* eslint-disable @typescript-eslint/naming-convention */ /* eslint-disable @typescript-eslint/no-unsafe-call */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ +import { Command } from '@oclif/core'; import * as changeCase from 'change-case'; import * as fs from 'fs'; import * as inquirer from 'inquirer'; -import { Command } from '@oclif/command'; import { join } from 'path'; import { createTemplate } from '../src'; diff --git a/packages/node-dev/package.json b/packages/node-dev/package.json index 33b0ceb9c4..1db3517140 100644 --- a/packages/node-dev/package.json +++ b/packages/node-dev/package.json @@ -26,8 +26,7 @@ "format": "prettier --write . --ignore-path ../../.prettierignore", "lint": "eslint . --quiet", "lintfix": "eslint . --fix", - "postpack": "rm -f oclif.manifest.json", - "prepack": "echo \"Building project...\" && rm -rf dist && tsc -b && oclif-dev manifest", + "prepack": "echo \"Building project...\" && rm -rf dist && tsc -b", "watch": "tsc --watch" }, "bin": { @@ -43,16 +42,13 @@ "bin", "dist", "templates", - "oclif.manifest.json", "src/tsconfig-build.json" ], "devDependencies": { - "@oclif/dev-cli": "^1.22.2", "@types/inquirer": "^6.5.0" }, "dependencies": { - "@oclif/command": "^1.5.18", - "@oclif/errors": "^1.2.2", + "@oclif/core": "3.18.1", "change-case": "^4.1.1", "fast-glob": "^3.2.5", "inquirer": "^7.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9249569e81..c557f25136 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -376,18 +376,9 @@ importers: '@n8n_io/license-sdk': specifier: 2.7.2 version: 2.7.2 - '@oclif/command': - specifier: 1.8.18 - version: 1.8.18(@oclif/config@1.18.17)(supports-color@8.1.1) - '@oclif/config': - specifier: 1.18.17 - version: 1.18.17 '@oclif/core': - specifier: 1.16.6 - version: 1.16.6 - '@oclif/errors': - specifier: 1.3.6 - version: 1.3.6 + specifier: 3.18.1 + version: 3.18.1 '@rudderstack/rudder-sdk-node': specifier: 1.0.6 version: 1.0.6 @@ -644,9 +635,6 @@ importers: specifier: 0.3.0 version: 0.3.0 devDependencies: - '@oclif/dev-cli': - specifier: ^1.22.2 - version: 1.26.10 '@redocly/cli': specifier: ^1.6.0 version: 1.6.0 @@ -1187,12 +1175,9 @@ importers: packages/node-dev: dependencies: - '@oclif/command': - specifier: ^1.5.18 - version: 1.8.18(@oclif/config@1.18.17)(supports-color@8.1.1) - '@oclif/errors': - specifier: ^1.2.2 - version: 1.3.6 + '@oclif/core': + specifier: 3.18.1 + version: 3.18.1 change-case: specifier: ^4.1.1 version: 4.1.2 @@ -1218,9 +1203,6 @@ importers: specifier: ^0.10.0 version: 0.10.0(patch_hash=sk6omkefrosihg7lmqbzh7vfxe) devDependencies: - '@oclif/dev-cli': - specifier: ^1.22.2 - version: 1.26.10 '@types/inquirer': specifier: ^6.5.0 version: 6.5.0 @@ -6071,7 +6053,7 @@ packages: /@mistralai/mistralai@0.0.7: resolution: {integrity: sha512-47FiV/GBnt6gug99ZfDBcBofYuYvqT5AyhUDdtktUbCN+gq52tmiAbtwc88k7hlyUWHzJ28VpHRDfNTRfaWKxA==} dependencies: - axios: 1.6.5(debug@3.2.7) + axios: 1.6.5 axios-retry: 4.0.0(axios@1.6.5) transitivePeerDependencies: - debug @@ -6244,114 +6226,20 @@ packages: dev: false optional: true - /@oclif/command@1.8.18(@oclif/config@1.18.17): - resolution: {integrity: sha512-qTad+jtiriMMbkw6ArtcUY89cwLwmwDnD4KSGT+OQiZKYtegp3NUCM9JN8lfj/aKC+0kvSitJM4ULzbgiVTKQQ==} - engines: {node: '>=12.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - '@oclif/config': ^1 + /@oclif/core@3.18.1: + resolution: {integrity: sha512-l0LsjzGcqjbUEdeSBX6bdZieVmEv82Q0W3StiyaDMEnPZ9KLH28HrLpcZg6d50mCYW9CUZNzmRo6qrCHWrgLKw==} + engines: {node: '>=18.0.0'} dependencies: - '@oclif/config': 1.18.17 - '@oclif/errors': 1.3.6 - '@oclif/help': 1.0.3(supports-color@8.1.1) - '@oclif/parser': 3.8.17 - debug: 4.3.4(supports-color@8.1.1) - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@oclif/command@1.8.18(@oclif/config@1.18.17)(supports-color@8.1.1): - resolution: {integrity: sha512-qTad+jtiriMMbkw6ArtcUY89cwLwmwDnD4KSGT+OQiZKYtegp3NUCM9JN8lfj/aKC+0kvSitJM4ULzbgiVTKQQ==} - engines: {node: '>=12.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - '@oclif/config': ^1 - dependencies: - '@oclif/config': 1.18.17 - '@oclif/errors': 1.3.6 - '@oclif/help': 1.0.3(supports-color@8.1.1) - '@oclif/parser': 3.8.17 - debug: 4.3.4(supports-color@8.1.1) - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - - /@oclif/command@1.8.18(@oclif/config@1.18.2): - resolution: {integrity: sha512-qTad+jtiriMMbkw6ArtcUY89cwLwmwDnD4KSGT+OQiZKYtegp3NUCM9JN8lfj/aKC+0kvSitJM4ULzbgiVTKQQ==} - engines: {node: '>=12.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - '@oclif/config': ^1 - dependencies: - '@oclif/config': 1.18.2 - '@oclif/errors': 1.3.6 - '@oclif/help': 1.0.3(supports-color@8.1.1) - '@oclif/parser': 3.8.17 - debug: 4.3.4(supports-color@8.1.1) - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@oclif/config@1.18.17: - resolution: {integrity: sha512-k77qyeUvjU8qAJ3XK3fr/QVAqsZO8QOBuESnfeM5HHtPNLSyfVcwiMM2zveSW5xRdLSG3MfV8QnLVkuyCL2ENg==} - engines: {node: '>=8.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - dependencies: - '@oclif/errors': 1.3.6 - '@oclif/parser': 3.8.17 - debug: 4.3.4(supports-color@8.1.1) - globby: 11.1.0 - is-wsl: 2.2.0 - tslib: 2.6.1 - transitivePeerDependencies: - - supports-color - - /@oclif/config@1.18.2: - resolution: {integrity: sha512-cE3qfHWv8hGRCP31j7fIS7BfCflm/BNZ2HNqHexH+fDrdF2f1D5S8VmXWLC77ffv3oDvWyvE9AZeR0RfmHCCaA==} - engines: {node: '>=8.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - dependencies: - '@oclif/errors': 1.3.6 - '@oclif/parser': 3.8.17 - debug: 4.3.4(supports-color@8.1.1) - globby: 11.1.0 - is-wsl: 2.2.0 - tslib: 2.6.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@oclif/config@1.18.5(supports-color@8.1.1): - resolution: {integrity: sha512-R6dBedaUVn5jtAh79aaRm7jezx4l3V7Im9NORlLmudz5BL1foMeuXEvnqm+bMiejyexVA+oi9mto6YKZPzo/5Q==} - engines: {node: '>=8.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - dependencies: - '@oclif/errors': 1.3.6 - '@oclif/parser': 3.8.17 - debug: 4.3.4(supports-color@8.1.1) - globby: 11.1.0 - is-wsl: 2.2.0 - tslib: 2.6.1 - transitivePeerDependencies: - - supports-color - - /@oclif/core@1.16.6: - resolution: {integrity: sha512-g6ILjfs9sbyZGEXV+CUBR22wfT2D7/SNW1QvUAR3K8l4Joe1Z/xD2e2Dk27EA8+mU+HcwiTZJKiTVq7BUtZe5g==} - engines: {node: '>=14.0.0'} - dependencies: - '@oclif/linewrap': 1.0.0 - '@oclif/screen': 3.0.2 + '@types/cli-progress': 3.11.5 ansi-escapes: 4.3.2 ansi-styles: 4.3.0 cardinal: 2.1.1 chalk: 4.1.2 clean-stack: 3.0.1 - cli-progress: 3.11.2 + cli-progress: 3.12.0 + color: 4.2.3 debug: 4.3.4(supports-color@8.1.1) - ejs: 3.1.8 - fs-extra: 9.1.0 + ejs: 3.1.9 get-package-type: 0.1.0 globby: 11.1.0 hyperlinker: 1.0.0 @@ -6360,122 +6248,17 @@ packages: js-yaml: 3.14.1 natural-orderby: 2.0.3 object-treeify: 1.1.33 - password-prompt: 1.1.2 - semver: 7.5.4 + password-prompt: 1.1.3 + slice-ansi: 4.0.0 string-width: 4.2.3 strip-ansi: 6.0.1 supports-color: 8.1.1 supports-hyperlinks: 2.3.0 - tslib: 2.6.1 widest-line: 3.1.0 + wordwrap: 1.0.0 wrap-ansi: 7.0.0 dev: false - /@oclif/dev-cli@1.26.10: - resolution: {integrity: sha512-dJ+II9rVXckzFvG+82PbfphMTnoqiHvsuAAbcHrLdZWPBnFAiDKhNYE0iHnA/knAC4VGXhogsrAJ3ERT5d5r2g==} - engines: {node: '>=8.10.0'} - hasBin: true - dependencies: - '@oclif/command': 1.8.18(@oclif/config@1.18.17) - '@oclif/config': 1.18.17 - '@oclif/errors': 1.3.6 - '@oclif/plugin-help': 3.2.18 - cli-ux: 5.6.7(@oclif/config@1.18.17) - debug: 4.3.4(supports-color@8.1.1) - find-yarn-workspace-root: 2.0.0 - fs-extra: 8.1.0 - github-slugger: 1.4.0 - lodash: 4.17.21 - normalize-package-data: 3.0.3 - qqjs: 0.3.11 - tslib: 2.6.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@oclif/errors@1.3.5: - resolution: {integrity: sha512-OivucXPH/eLLlOT7FkCMoZXiaVYf8I/w1eTAM1+gKzfhALwWTusxEx7wBmW0uzvkSg/9ovWLycPaBgJbM3LOCQ==} - engines: {node: '>=8.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - dependencies: - clean-stack: 3.0.1 - fs-extra: 8.1.0 - indent-string: 4.0.0 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true - - /@oclif/errors@1.3.6: - resolution: {integrity: sha512-fYaU4aDceETd89KXP+3cLyg9EHZsLD3RxF2IU9yxahhBpspWjkWi3Dy3bTgcwZ3V47BgxQaGapzJWDM33XIVDQ==} - engines: {node: '>=8.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - dependencies: - clean-stack: 3.0.1 - fs-extra: 8.1.0 - indent-string: 4.0.0 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - /@oclif/help@1.0.3(supports-color@8.1.1): - resolution: {integrity: sha512-AjjhSWFQkRb9rChEH+IRUmp0CxEacYpUbh+kQqtdCR9CDSsj2a3ibWjtMtJb4lFGAle6kVKfaal/juYe+6P5TQ==} - engines: {node: '>=8.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - dependencies: - '@oclif/config': 1.18.5(supports-color@8.1.1) - '@oclif/errors': 1.3.6 - chalk: 4.1.2 - indent-string: 4.0.0 - lodash: 4.17.21 - string-width: 4.2.3 - strip-ansi: 6.0.1 - widest-line: 3.1.0 - wrap-ansi: 6.2.0 - transitivePeerDependencies: - - supports-color - - /@oclif/linewrap@1.0.0: - resolution: {integrity: sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw==} - - /@oclif/parser@3.8.17: - resolution: {integrity: sha512-l04iSd0xoh/16TGVpXb81Gg3z7tlQGrEup16BrVLsZBK6SEYpYHRJZnM32BwZrHI97ZSFfuSwVlzoo6HdsaK8A==} - engines: {node: '>=8.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - dependencies: - '@oclif/errors': 1.3.6 - '@oclif/linewrap': 1.0.0 - chalk: 4.1.2 - tslib: 2.6.1 - - /@oclif/plugin-help@3.2.18: - resolution: {integrity: sha512-5n5Pkz4L0duknIvFwx2Ko9Xda3miT6RZP8bgaaK3Q/9fzVBrhi4bOM0u05/OThI6V+3NsSdxYS2o1NLcXToWDg==} - engines: {node: '>=8.0.0'} - dependencies: - '@oclif/command': 1.8.18(@oclif/config@1.18.2) - '@oclif/config': 1.18.2 - '@oclif/errors': 1.3.5 - '@oclif/help': 1.0.3(supports-color@8.1.1) - chalk: 4.1.2 - indent-string: 4.0.0 - lodash: 4.17.21 - string-width: 4.2.3 - strip-ansi: 6.0.1 - widest-line: 3.1.0 - wrap-ansi: 6.2.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@oclif/screen@1.0.4: - resolution: {integrity: sha512-60CHpq+eqnTxLZQ4PGHYNwUX572hgpMHGPtTWMjdTMsAvlm69lZV/4ly6O3sAYkomo4NggGcomrDpBe34rxUqw==} - engines: {node: '>=8.0.0'} - dev: true - - /@oclif/screen@3.0.2: - resolution: {integrity: sha512-S/SF/XYJeevwIgHFmVDAFRUvM3m+OjhvCAYMk78ZJQCYCQ5wS7j+LTt1ZEv2jpEEGg2tx/F6TYYWxddNAYHrFQ==} - engines: {node: '>=12.0.0'} - deprecated: Deprecated in favor of @oclif/core - dev: false - /@one-ini/wasm@0.1.1: resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} dev: true @@ -10187,6 +9970,12 @@ packages: '@types/node': 18.16.16 dev: true + /@types/cli-progress@3.11.5: + resolution: {integrity: sha512-D4PbNRbviKyppS5ivBGyFO29POlySLmA2HyUFE4p5QGazAMM3CwkKWcvTl8gvElSuxRh6FPKL8XmidX873ou4g==} + dependencies: + '@types/node': 18.16.16 + dev: false + /@types/compression@1.0.1: resolution: {integrity: sha512-GuoIYzD70h+4JUqUabsm31FGqvpCYHGKcLtor7nQ/YvUyNX0o9SJZ9boFI5HjFfbOda5Oe/XOvNK6FES8Y/79w==} dependencies: @@ -11760,10 +11549,6 @@ packages: engines: {node: '>=6'} dev: true - /ansi-escapes@3.2.0: - resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==} - engines: {node: '>=4'} - /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -11820,6 +11605,7 @@ packages: /ansicolors@0.3.2: resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} + dev: false /any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} @@ -12162,7 +11948,6 @@ packages: /astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} - dev: true /async-done@1.3.2: resolution: {integrity: sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==} @@ -12204,6 +11989,7 @@ packages: /at-least-node@1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} + dev: true /atob@2.1.2: resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} @@ -12276,7 +12062,7 @@ packages: peerDependencies: axios: 0.x || 1.x dependencies: - axios: 1.6.5(debug@3.2.7) + axios: 1.6.5 is-retry-allowed: 2.2.0 dev: false @@ -12298,6 +12084,16 @@ packages: - debug dev: false + /axios@1.6.5: + resolution: {integrity: sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==} + dependencies: + follow-redirects: 1.15.5(debug@3.2.7) + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + /axios@1.6.5(debug@3.2.7): resolution: {integrity: sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==} dependencies: @@ -12918,6 +12714,7 @@ packages: dependencies: ansicolors: 0.3.2 redeyed: 2.1.1 + dev: false /caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -13132,6 +12929,7 @@ packages: engines: {node: '>=10'} dependencies: escape-string-regexp: 4.0.0 + dev: false /cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} @@ -13152,11 +12950,12 @@ packages: yargs: 16.2.0 dev: false - /cli-progress@3.11.2: - resolution: {integrity: sha512-lCPoS6ncgX4+rJu5bS3F/iCz17kZ9MPZ6dpuTtI0KXKABkhyXIdYB3Inby1OpaGti3YlI3EeEkM9AuWpelJrVA==} + /cli-progress@3.12.0: + resolution: {integrity: sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==} engines: {node: '>=4'} dependencies: string-width: 4.2.3 + dev: false /cli-spinners@2.9.0: resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} @@ -13180,41 +12979,6 @@ packages: string-width: 4.2.3 dev: true - /cli-ux@5.6.7(@oclif/config@1.18.17): - resolution: {integrity: sha512-dsKAurMNyFDnO6X1TiiRNiVbL90XReLKcvIq4H777NMqXGBxBws23ag8ubCJE97vVZEgWG2eSUhsyLf63Jv8+g==} - engines: {node: '>=8.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - dependencies: - '@oclif/command': 1.8.18(@oclif/config@1.18.17)(supports-color@8.1.1) - '@oclif/errors': 1.3.6 - '@oclif/linewrap': 1.0.0 - '@oclif/screen': 1.0.4 - ansi-escapes: 4.3.2 - ansi-styles: 4.3.0 - cardinal: 2.1.1 - chalk: 4.1.2 - clean-stack: 3.0.1 - cli-progress: 3.11.2 - extract-stack: 2.0.0 - fs-extra: 8.1.0 - hyperlinker: 1.0.0 - indent-string: 4.0.0 - is-wsl: 2.2.0 - js-yaml: 3.14.1 - lodash: 4.17.21 - natural-orderby: 2.0.3 - object-treeify: 1.1.33 - password-prompt: 1.1.2 - semver: 7.5.4 - string-width: 4.2.3 - strip-ansi: 6.0.1 - supports-color: 8.1.1 - supports-hyperlinks: 2.3.0 - tslib: 2.6.1 - transitivePeerDependencies: - - '@oclif/config' - dev: true - /cli-width@3.0.0: resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} engines: {node: '>= 10'} @@ -13387,6 +13151,14 @@ packages: color-string: 1.9.1 dev: false + /color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + dev: false + /colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} dev: true @@ -13736,16 +13508,6 @@ packages: which: 1.3.1 dev: false - /cross-spawn@6.0.5: - resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} - engines: {node: '>=4.8'} - dependencies: - nice-try: 1.0.5 - path-key: 2.0.1 - semver: 7.5.4 - shebang-command: 1.2.0 - which: 1.3.1 - /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -13753,7 +13515,6 @@ packages: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - dev: true /crypt@0.0.2: resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} @@ -14641,6 +14402,15 @@ packages: hasBin: true dependencies: jake: 10.8.5 + dev: true + + /ejs@3.1.9: + resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + jake: 10.8.5 + dev: false /electron-to-chromium@1.4.475: resolution: {integrity: sha512-mTye5u5P98kSJO2n7zYALhpJDmoSQejIGya0iR01GpoRady8eK3bw7YHHnjA1Rfi4ZSLdpuzlAC7Zw+1Zu7Z6A==} @@ -15476,19 +15246,6 @@ packages: engines: {node: '>=12.0.0'} dev: false - /execa@0.10.0: - resolution: {integrity: sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==} - engines: {node: '>=4'} - dependencies: - cross-spawn: 6.0.5 - get-stream: 3.0.0 - is-stream: 1.1.0 - npm-run-path: 2.0.2 - p-finally: 1.0.0 - signal-exit: 3.0.7 - strip-eof: 1.0.0 - dev: true - /execa@4.1.0: resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} engines: {node: '>=10'} @@ -15734,11 +15491,6 @@ packages: - supports-color dev: true - /extract-stack@2.0.0: - resolution: {integrity: sha512-AEo4zm+TenK7zQorGK1f9mJ8L14hnTDi2ZQPR+Mub1NX8zimka1mXpV5LpH8x9HoUmFSHZCfLHqWvp0Y4FxxzQ==} - engines: {node: '>=8'} - dev: true - /extract-zip@1.7.0: resolution: {integrity: sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==} hasBin: true @@ -16015,12 +15767,6 @@ packages: path-exists: 4.0.0 dev: true - /find-yarn-workspace-root@2.0.0: - resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} - dependencies: - micromatch: 4.0.5 - dev: true - /findup-sync@2.0.0: resolution: {integrity: sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==} engines: {node: '>= 0.10'} @@ -16251,14 +15997,6 @@ packages: universalify: 2.0.0 dev: true - /fs-extra@6.0.1: - resolution: {integrity: sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==} - dependencies: - graceful-fs: 4.2.10 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: true - /fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -16268,14 +16006,6 @@ packages: universalify: 0.1.2 dev: true - /fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} - dependencies: - graceful-fs: 4.2.10 - jsonfile: 4.0.0 - universalify: 0.1.2 - /fs-extra@9.1.0: resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} engines: {node: '>=10'} @@ -16284,6 +16014,7 @@ packages: graceful-fs: 4.2.10 jsonfile: 6.1.0 universalify: 2.0.0 + dev: true /fs-minipass@2.1.0: resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} @@ -16433,11 +16164,6 @@ packages: resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} engines: {node: '>=8'} - /get-stream@3.0.0: - resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} - engines: {node: '>=4'} - dev: true - /get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} @@ -16502,10 +16228,6 @@ packages: - supports-color dev: true - /github-slugger@1.4.0: - resolution: {integrity: sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==} - dev: true - /github-slugger@1.5.0: resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} dev: true @@ -16992,13 +16714,6 @@ packages: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true - /hosted-git-info@4.1.0: - resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} - engines: {node: '>=10'} - dependencies: - lru-cache: 6.0.0 - dev: true - /html-encoding-sniffer@3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} @@ -17072,20 +16787,6 @@ packages: dev: false optional: true - /http-call@5.3.0: - resolution: {integrity: sha512-ahwimsC23ICE4kPl9xTBjKB4inbRaeLyZeRunC/1Jy/Z6X8tv22MEAjK+KBOMSVLaqXPTTmd8638waVIKLGx2w==} - engines: {node: '>=8.0.0'} - dependencies: - content-type: 1.0.4 - debug: 4.3.4(supports-color@8.1.1) - is-retry-allowed: 1.2.0 - is-stream: 2.0.1 - parse-json: 4.0.0 - tunnel-agent: 0.6.0 - transitivePeerDependencies: - - supports-color - dev: true - /http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} @@ -17197,6 +16898,7 @@ packages: /hyperlinker@1.0.0: resolution: {integrity: sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==} engines: {node: '>=4'} + dev: false /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} @@ -17310,7 +17012,7 @@ packages: /infisical-node@1.3.0: resolution: {integrity: sha512-tTnnExRAO/ZyqiRdnSlBisErNToYWgtunMWh+8opClEt5qjX7l6HC/b4oGo2AuR2Pf41IR+oqo+dzkM1TCvlUA==} dependencies: - axios: 1.6.5(debug@3.2.7) + axios: 1.6.5 dotenv: 16.3.1 tweetnacl: 1.0.3 tweetnacl-util: 0.15.1 @@ -17724,11 +17426,6 @@ packages: engines: {node: '>=8'} dev: true - /is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - dev: true - /is-plain-object@2.0.4: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} @@ -17776,11 +17473,6 @@ packages: is-unc-path: 1.0.0 dev: true - /is-retry-allowed@1.2.0: - resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} - engines: {node: '>=0.10.0'} - dev: true - /is-retry-allowed@2.2.0: resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==} engines: {node: '>=10'} @@ -17798,11 +17490,6 @@ packages: resolution: {integrity: sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==} dev: false - /is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - dev: true - /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -18790,10 +18477,6 @@ packages: dreamopt: 0.8.0 dev: false - /json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - dev: true - /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: true @@ -18878,6 +18561,7 @@ packages: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.10 + dev: true /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} @@ -18885,6 +18569,7 @@ packages: universalify: 2.0.0 optionalDependencies: graceful-fs: 4.2.10 + dev: true /jsonpath@1.1.1: resolution: {integrity: sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==} @@ -19365,7 +19050,7 @@ packages: '@qdrant/js-client-rest': 1.7.0(typescript@5.3.2) '@supabase/supabase-js': 2.38.5 '@xata.io/client': 0.25.3(typescript@5.3.2) - axios: 1.6.5(debug@3.2.7) + axios: 1.6.5 binary-extensions: 2.2.0 cohere-ai: 6.2.2 d3-dsv: 2.0.0 @@ -19605,16 +19290,6 @@ packages: strip-bom: 2.0.0 dev: true - /load-json-file@6.2.0: - resolution: {integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==} - engines: {node: '>=8'} - dependencies: - graceful-fs: 4.2.10 - parse-json: 5.2.0 - strip-bom: 4.0.0 - type-fest: 0.6.0 - dev: true - /loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} @@ -20858,6 +20533,7 @@ packages: /natural-orderby@2.0.3: resolution: {integrity: sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q==} + dev: false /nearley@2.20.1: resolution: {integrity: sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==} @@ -20879,9 +20555,6 @@ packages: /next-tick@1.1.0: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} - /nice-try@1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - /no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: @@ -21115,16 +20788,6 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-package-data@3.0.3: - resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} - engines: {node: '>=10'} - dependencies: - hosted-git-info: 4.1.0 - is-core-module: 2.13.1 - semver: 7.5.4 - validate-npm-package-license: 3.0.4 - dev: true - /normalize-path@2.1.1: resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} engines: {node: '>=0.10.0'} @@ -21152,13 +20815,6 @@ packages: once: 1.4.0 dev: true - /npm-run-path@2.0.2: - resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} - engines: {node: '>=4'} - dependencies: - path-key: 2.0.1 - dev: true - /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -21325,6 +20981,7 @@ packages: /object-treeify@1.1.33: resolution: {integrity: sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==} engines: {node: '>= 10'} + dev: false /object-visit@1.0.1: resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} @@ -21600,6 +21257,7 @@ packages: /p-finally@1.0.0: resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} engines: {node: '>=4'} + dev: false /p-lazy@3.1.0: resolution: {integrity: sha512-sCJn0Cdahs6G6SX9+DUihVFUhrzDEduzE5xeViVBGtoqy5dBWko7W8T6Kk6TjR2uevRXJO7CShfWrqdH5s3w3g==} @@ -21734,14 +21392,6 @@ packages: error-ex: 1.3.2 dev: true - /parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} - dependencies: - error-ex: 1.3.2 - json-parse-better-errors: 1.0.2 - dev: true - /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -21842,11 +21492,12 @@ packages: utils-merge: 1.0.1 dev: false - /password-prompt@1.1.2: - resolution: {integrity: sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA==} + /password-prompt@1.1.3: + resolution: {integrity: sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==} dependencies: - ansi-escapes: 3.2.0 - cross-spawn: 6.0.5 + ansi-escapes: 4.3.2 + cross-spawn: 7.0.3 + dev: false /path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} @@ -21884,14 +21535,9 @@ packages: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - /path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - dev: true /path-key@4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} @@ -22658,7 +22304,7 @@ packages: resolution: {integrity: sha512-ofNX3TPfZPlWErVc2EDk66cIrfp9EXeKBsXFxf8ISXK57b10ANwRnKAlf5rQjxjRKqcUWmV0d3ZfOeVeYracMw==} engines: {node: '>=15.0.0'} dependencies: - axios: 1.6.5(debug@3.2.7) + axios: 1.6.5 rusha: 0.8.14 transitivePeerDependencies: - debug @@ -23093,27 +22739,6 @@ packages: long: 4.0.0 dev: false - /qqjs@0.3.11: - resolution: {integrity: sha512-pB2X5AduTl78J+xRSxQiEmga1jQV0j43jOPs/MTgTLApGFEOn6NgdE2dEjp7nvDtjkIOZbvFIojAiYUx6ep3zg==} - engines: {node: '>=8.0.0'} - dependencies: - chalk: 2.4.2 - debug: 4.3.4(supports-color@8.1.1) - execa: 0.10.0 - fs-extra: 6.0.1 - get-stream: 5.2.0 - glob: 7.2.3 - globby: 11.1.0 - http-call: 5.3.0 - load-json-file: 6.2.0 - pkg-dir: 4.2.0 - tar-fs: 2.1.1 - tmp: 0.1.0 - write-json-file: 4.3.0 - transitivePeerDependencies: - - supports-color - dev: true - /qrcode.vue@3.3.4(vue@3.3.4): resolution: {integrity: sha512-ZVPmKZUUqM/wZ19mIhecFJs7mO6KXFiZZmBZyU6wiB2aXZfYc/VpolXakQcKw/9aGFEmSHHVKfgNwyxtw/Q2Sw==} peerDependencies: @@ -23459,6 +23084,7 @@ packages: resolution: {integrity: sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==} dependencies: esprima: 4.0.1 + dev: false /redis-commands@1.7.0: resolution: {integrity: sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==} @@ -24248,27 +23874,15 @@ packages: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} dev: true - /shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - dependencies: - shebang-regex: 1.0.0 - /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - dev: true - - /shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - dev: true /shell-escape@0.2.0: resolution: {integrity: sha512-uRRBT2MfEOyxuECseCZd28jC1AJ8hmqqneWQ4VWUTgCAFvb3wKU1jLqj6egC4Exrr88ogg3dp+zroH4wJuaXzw==} @@ -24421,7 +24035,6 @@ packages: ansi-styles: 4.3.0 astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - dev: true /slugify@1.4.7: resolution: {integrity: sha512-tf+h5W1IrjNm/9rKKj0JU2MDMruiopx0jjVA5zCdBtcGjfp0+c5rHw/zADLC3IeKlGHtVbHtpfzvYA0OYT+HKg==} @@ -24536,13 +24149,6 @@ packages: smart-buffer: 4.2.0 dev: false - /sort-keys@4.2.0: - resolution: {integrity: sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==} - engines: {node: '>=8'} - dependencies: - is-plain-obj: 2.1.0 - dev: true - /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -25028,11 +24634,6 @@ packages: engines: {node: '>=8'} dev: true - /strip-eof@1.0.0: - resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} - engines: {node: '>=0.10.0'} - dev: true - /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} @@ -25202,6 +24803,7 @@ packages: dependencies: has-flag: 4.0.0 supports-color: 7.2.0 + dev: false /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} @@ -25581,13 +25183,6 @@ packages: dependencies: os-tmpdir: 1.0.2 - /tmp@0.1.0: - resolution: {integrity: sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==} - engines: {node: '>=6'} - dependencies: - rimraf: 2.7.1 - dev: true - /tmp@0.2.1: resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} engines: {node: '>=8.17.0'} @@ -26029,6 +25624,7 @@ packages: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} dependencies: is-typedarray: 1.0.0 + dev: false /typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} @@ -26400,6 +25996,7 @@ packages: /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} + dev: true /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} @@ -26408,6 +26005,7 @@ packages: /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} + dev: true /unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} @@ -27314,6 +26912,7 @@ packages: engines: {node: '>=8'} dependencies: string-width: 4.2.3 + dev: false /winston-transport@4.5.0: resolution: {integrity: sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==} @@ -27373,6 +26972,7 @@ packages: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 + dev: true /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} @@ -27402,15 +27002,6 @@ packages: signal-exit: 3.0.7 dev: true - /write-file-atomic@3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - dependencies: - imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - dev: true - /write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -27419,18 +27010,6 @@ packages: signal-exit: 3.0.7 dev: true - /write-json-file@4.3.0: - resolution: {integrity: sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ==} - engines: {node: '>=8.3'} - dependencies: - detect-indent: 6.1.0 - graceful-fs: 4.2.10 - is-plain-obj: 2.1.0 - make-dir: 3.1.0 - sort-keys: 4.2.0 - write-file-atomic: 3.0.3 - dev: true - /ws@6.2.2: resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} peerDependencies: