diff --git a/.talismanrc b/.talismanrc index cc2bd2e74..5aa5d3188 100644 --- a/.talismanrc +++ b/.talismanrc @@ -1,4 +1,4 @@ fileignoreconfig: - filename: pnpm-lock.yaml - checksum: d39a5776abcde242965c5f7d86e4b885a16a0feeb8230e9bc1c89aa78b047ecf + checksum: 91b899dce1aff75164a1bd2a8b7dbb3d6d6babf4c3114a933b758131449d57e6 version: '1.0' diff --git a/packages/contentstack-audit/package.json b/packages/contentstack-audit/package.json index d144a3093..bdfb31e89 100644 --- a/packages/contentstack-audit/package.json +++ b/packages/contentstack-audit/package.json @@ -37,7 +37,7 @@ "@types/node": "^20.17.50", "@types/uuid": "^9.0.8", "chai": "^4.5.0", - "eslint": "^8.57.1", + "eslint": "^9.26.0", "eslint-config-oclif": "^6.0.62", "eslint-config-oclif-typescript": "^3.1.14", "mocha": "^10.8.2", @@ -83,4 +83,4 @@ "keywords": [ "oclif" ] -} \ No newline at end of file +} diff --git a/packages/contentstack-bootstrap/README.md b/packages/contentstack-bootstrap/README.md index b9a00173e..4a60bc244 100644 --- a/packages/contentstack-bootstrap/README.md +++ b/packages/contentstack-bootstrap/README.md @@ -15,7 +15,7 @@ $ npm install -g @contentstack/cli-cm-bootstrap $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-cm-bootstrap/1.19.0 darwin-arm64 node-v24.14.0 +@contentstack/cli-cm-bootstrap/1.19.1 darwin-arm64 node-v24.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-bootstrap/package.json b/packages/contentstack-bootstrap/package.json index d4589a633..3970f28db 100644 --- a/packages/contentstack-bootstrap/package.json +++ b/packages/contentstack-bootstrap/package.json @@ -1,7 +1,7 @@ { "name": "@contentstack/cli-cm-bootstrap", "description": "Bootstrap contentstack apps", - "version": "1.19.2", + "version": "1.19.1", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "scripts": { @@ -16,7 +16,7 @@ "test:report": "nyc --reporter=lcov mocha \"test/**/*.test.js\"" }, "dependencies": { - "@contentstack/cli-cm-seed": "~1.15.2", + "@contentstack/cli-cm-seed": "~1.15.1", "@contentstack/cli-command": "~1.8.1", "@contentstack/cli-config": "~1.20.2", "@contentstack/cli-utilities": "~1.18.2", @@ -33,7 +33,7 @@ "@types/node": "^14.18.63", "@types/tar": "^6.1.13", "chai": "^4.5.0", - "eslint": "^8.57.1", + "eslint": "^9.26.0", "eslint-config-oclif": "^6.0.62", "eslint-config-oclif-typescript": "^3.1.14", "mocha": "10.8.2", @@ -73,4 +73,4 @@ } }, "repository": "contentstack/cli" -} \ No newline at end of file +} diff --git a/packages/contentstack-branches/package.json b/packages/contentstack-branches/package.json index 370df0986..d5f992662 100644 --- a/packages/contentstack-branches/package.json +++ b/packages/contentstack-branches/package.json @@ -20,7 +20,7 @@ "chai": "^4.5.0", "dotenv": "^16.5.0", "dotenv-expand": "^9.0.0", - "eslint": "^8.57.1", + "eslint": "^9.26.0", "eslint-config-oclif": "^6.0.62", "mocha": "10.8.2", "nyc": "^15.1.0", @@ -80,4 +80,4 @@ } }, "repository": "https://github.com/contentstack/cli" -} \ No newline at end of file +} diff --git a/packages/contentstack-bulk-publish/package.json b/packages/contentstack-bulk-publish/package.json index 705ac4d9b..20b9877ec 100644 --- a/packages/contentstack-bulk-publish/package.json +++ b/packages/contentstack-bulk-publish/package.json @@ -19,7 +19,7 @@ "devDependencies": { "@oclif/test": "^4.1.18", "chai": "^4.5.0", - "eslint": "^8.57.1", + "eslint": "^9.26.0", "eslint-config-oclif": "^6.0.62", "mocha": "^10.8.2", "nyc": "^15.1.0", @@ -98,4 +98,4 @@ "version": "oclif readme && git add README.md", "clean": "rm -rf ./node_modules tsconfig.build.tsbuildinfo" } -} \ No newline at end of file +} diff --git a/packages/contentstack-clone/package.json b/packages/contentstack-clone/package.json index 242924f8f..1ebf2a17d 100644 --- a/packages/contentstack-clone/package.json +++ b/packages/contentstack-clone/package.json @@ -1,13 +1,13 @@ { "name": "@contentstack/cli-cm-clone", "description": "Contentstack stack clone plugin", - "version": "1.21.3", + "version": "1.21.2", "author": "Contentstack", "bugs": "https://github.com/rohitmishra209/cli-cm-clone/issues", "dependencies": { "@colors/colors": "^1.6.0", - "@contentstack/cli-cm-export": "~1.25.0", - "@contentstack/cli-cm-import": "~1.33.0", + "@contentstack/cli-cm-export": "~1.24.2", + "@contentstack/cli-cm-import": "~1.32.2", "@contentstack/cli-command": "~1.8.1", "@contentstack/cli-utilities": "~1.18.2", "@oclif/core": "^4.10.5", @@ -28,7 +28,7 @@ "@types/sinon": "^10.0.0", "@typescript-eslint/eslint-plugin": "^5.62.0", "chai": "^4.5.0", - "eslint": "^8.57.1", + "eslint": "^9.26.0", "eslint-config-oclif": "^6.0.62", "mocha": "^10.8.2", "nyc": "^15.1.0", @@ -82,4 +82,4 @@ "cm:stack-clone": "O-CLN" } } -} \ No newline at end of file +} diff --git a/packages/contentstack-export-to-csv/package.json b/packages/contentstack-export-to-csv/package.json index 4157fdacf..12463f542 100644 --- a/packages/contentstack-export-to-csv/package.json +++ b/packages/contentstack-export-to-csv/package.json @@ -22,7 +22,7 @@ "@types/mkdirp": "^1.0.2", "@types/node": "^20.17.50", "chai": "^4.5.0", - "eslint": "^8.57.1", + "eslint": "^9.26.0", "eslint-config-oclif": "^6.0.62", "eslint-config-oclif-typescript": "^3.1.14", "mocha": "^10.8.2", @@ -77,4 +77,4 @@ "test:unit:report": "nyc --extension .ts mocha --forbid-only \"test/unit/**/*.test.ts\"", "version": "oclif readme && git add README.md" } -} \ No newline at end of file +} diff --git a/packages/contentstack-export/package.json b/packages/contentstack-export/package.json index 94e9024c2..f1088a807 100644 --- a/packages/contentstack-export/package.json +++ b/packages/contentstack-export/package.json @@ -1,7 +1,7 @@ { "name": "@contentstack/cli-cm-export", "description": "Contentstack CLI plugin to export content from stack", - "version": "1.25.0", + "version": "1.24.2", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { @@ -35,7 +35,7 @@ "chai": "^4.4.1", "dotenv": "^16.5.0", "dotenv-expand": "^9.0.0", - "eslint": "^8.57.1", + "eslint": "^9.26.0", "eslint-config-oclif": "^6.0.68", "mocha": "10.8.2", "nyc": "^15.1.0", @@ -98,4 +98,4 @@ } }, "repository": "https://github.com/contentstack/cli" -} \ No newline at end of file +} diff --git a/packages/contentstack-export/src/commands/cm/stacks/export.ts b/packages/contentstack-export/src/commands/cm/stacks/export.ts index 4bd542e6d..15f88c573 100644 --- a/packages/contentstack-export/src/commands/cm/stacks/export.ts +++ b/packages/contentstack-export/src/commands/cm/stacks/export.ts @@ -121,14 +121,14 @@ export default class ExportCommand extends Command { try { const { flags } = await this.parse(ExportCommand); const exportConfig = await setupExportConfig(flags); - + // Store apiKey in configHandler for session.json (return value not needed) createLogContext( this.context?.info?.command || 'cm:stacks:export', exportConfig.apiKey, - exportConfig.authenticationMethod, + exportConfig.authenticationMethod ); - + // For log entries, only pass module (other fields are in session.json) exportConfig.context = { module: '' }; //log.info(`Using Cli Version: ${this.context?.cliVersion}`, exportConfig.context); @@ -143,7 +143,9 @@ export default class ExportCommand extends Command { if (!exportConfig.branches?.length) { writeExportMetaFile(exportConfig); } - log.success(`The content of the stack ${exportConfig.apiKey} has been exported successfully!`); + log.success( + `The content of the stack ${exportConfig.apiKey} has been exported successfully!`, + ); log.info(`The exported content has been stored at '${exportDir}'.`, exportConfig.context); log.success(`The log has been stored at '${getLogPath()}'.`, exportConfig.context); } catch (error) { @@ -152,6 +154,7 @@ export default class ExportCommand extends Command { } } + // Assign values to exportConfig private assignExportConfig(exportConfig: ExportConfig): void { // Note setting host to create cma client diff --git a/packages/contentstack-export/src/config/index.ts b/packages/contentstack-export/src/config/index.ts index e3c4d12a2..85aa028fa 100644 --- a/packages/contentstack-export/src/config/index.ts +++ b/packages/contentstack-export/src/config/index.ts @@ -36,7 +36,6 @@ const config: DefaultConfig = { 'content-types', 'custom-roles', 'workflows', - 'publishing-rules', 'personalize', 'entries', 'labels', @@ -87,11 +86,6 @@ const config: DefaultConfig = { fileName: 'workflows.json', invalidKeys: ['stackHeaders', 'urlPath', 'created_at', 'updated_at', 'created_by', 'updated_by'], }, - 'publishing-rules': { - dirName: 'workflows', - fileName: 'publishing-rules.json', - invalidKeys: ['stackHeaders', 'urlPath', 'created_at', 'updated_at', 'created_by', 'updated_by'], - }, globalfields: { dirName: 'global_fields', fileName: 'globalfields.json', diff --git a/packages/contentstack-export/src/export/modules/content-types.ts b/packages/contentstack-export/src/export/modules/content-types.ts index 7baf2b4ca..ad571929d 100644 --- a/packages/contentstack-export/src/export/modules/content-types.ts +++ b/packages/contentstack-export/src/export/modules/content-types.ts @@ -1,5 +1,11 @@ import * as path from 'path'; -import { ContentstackClient, handleAndLogError, messageHandler, log, sanitizePath } from '@contentstack/cli-utilities'; +import { + ContentstackClient, + handleAndLogError, + messageHandler, + log, + sanitizePath, +} from '@contentstack/cli-utilities'; import BaseClass from './base-class'; import { fsUtil, executeTask } from '../../utils'; @@ -80,9 +86,7 @@ export default class ContentTypesExport extends BaseClass { const contentTypeSearchResponse = await this.stackAPIClient.contentType().query(this.qs).find(); log.debug( - `Fetched ${contentTypeSearchResponse.items?.length || 0} content types out of total ${ - contentTypeSearchResponse.count - }`, + `Fetched ${contentTypeSearchResponse.items?.length || 0} content types out of total ${contentTypeSearchResponse.count}`, this.exportConfig.context, ); diff --git a/packages/contentstack-export/src/export/modules/custom-roles.ts b/packages/contentstack-export/src/export/modules/custom-roles.ts index 6db21485a..1d9d10529 100644 --- a/packages/contentstack-export/src/export/modules/custom-roles.ts +++ b/packages/contentstack-export/src/export/modules/custom-roles.ts @@ -37,26 +37,23 @@ export default class ExportCustomRoles extends BaseClass { this.customRolesConfig.dirName, ); log.debug(`Custom roles folder path is: ${this.rolesFolderPath}`, this.exportConfig.context); - + await fsUtil.makeDirectory(this.rolesFolderPath); log.debug('Custom roles directory created.', this.exportConfig.context); - + this.customRolesLocalesFilepath = pResolve(this.rolesFolderPath, this.customRolesConfig.customRolesLocalesFileName); log.debug(`Custom roles locales file path is: ${this.customRolesLocalesFilepath}`, this.exportConfig.context); - + await this.getCustomRoles(); await this.getLocales(); await this.getCustomRolesLocales(); - - log.debug( - `Custom roles export completed. Total custom roles: ${Object.keys(this.customRoles).length}`, - this.exportConfig.context, - ); + + log.debug(`Custom roles export completed. Total custom roles: ${Object.keys(this.customRoles).length}`, this.exportConfig.context); } async getCustomRoles(): Promise { log.debug('Fetching all roles from the stack...', this.exportConfig.context); - + const roles = await this.stack .role() .fetchAll({ include_rules: true, include_permissions: true }) @@ -68,12 +65,9 @@ export default class ExportCustomRoles extends BaseClass { log.debug('An error occurred while fetching roles.', this.exportConfig.context); return handleAndLogError(err, { ...this.exportConfig.context }); }); - + const customRoles = roles.items.filter((role: any) => !this.existingRoles[role.name]); - log.debug( - `Found ${customRoles.length} custom roles from ${roles.items?.length || 0} total roles.`, - this.exportConfig.context, - ); + log.debug(`Found ${customRoles.length} custom roles from ${roles.items?.length || 0} total roles.`, this.exportConfig.context); if (!customRoles.length) { log.info(messageHandler.parse('ROLES_NO_CUSTOM_ROLES'), this.exportConfig.context); @@ -85,7 +79,7 @@ export default class ExportCustomRoles extends BaseClass { log.info(messageHandler.parse('ROLES_EXPORTING_ROLE', role?.name), this.exportConfig.context); this.customRoles[role.uid] = role; }); - + const customRolesFilePath = pResolve(this.rolesFolderPath, this.customRolesConfig.fileName); log.debug(`Writing custom roles to: ${customRolesFilePath}.`, this.exportConfig.context); fsUtil.writeFile(customRolesFilePath, this.customRoles); @@ -93,7 +87,7 @@ export default class ExportCustomRoles extends BaseClass { async getLocales() { log.debug('Fetching locales for custom roles mapping...', this.exportConfig.context); - + const locales = await this.stack .locale() .query({}) @@ -106,28 +100,25 @@ export default class ExportCustomRoles extends BaseClass { log.debug('An error occurred while fetching locales.', this.exportConfig.context); return handleAndLogError(err, { ...this.exportConfig.context }); }); - + for (const locale of locales.items) { log.debug(`Mapping locale: ${locale?.name} (${locale?.uid})`, this.exportConfig.context); this.sourceLocalesMap[locale.uid] = locale; } - + log.debug(`Mapped ${Object.keys(this.sourceLocalesMap).length} source locales.`, this.exportConfig.context); } async getCustomRolesLocales() { log.debug('Processing custom roles locales mapping...', this.exportConfig.context); - + for (const role of values(this.customRoles)) { const customRole = role as Record; log.debug(`Processing locales for custom role: ${customRole?.name}`, this.exportConfig.context); - + const rulesLocales = find(customRole.rules, (rule: any) => rule.module === 'locale'); if (rulesLocales?.locales?.length) { - log.debug( - `Found ${rulesLocales.locales.length} locales for the role: ${customRole?.name}.`, - this.exportConfig.context, - ); + log.debug(`Found ${rulesLocales.locales.length} locales for the role: ${customRole?.name}.`, this.exportConfig.context); forEach(rulesLocales.locales, (locale: any) => { log.debug(`Adding locale ${locale} to the custom roles mapping.`, this.exportConfig.context); this.localesMap[locale] = 1; @@ -137,7 +128,7 @@ export default class ExportCustomRoles extends BaseClass { if (keys(this.localesMap)?.length) { log.debug(`Processing ${Object.keys(this.localesMap).length} mapped locales.`, this.exportConfig.context); - + for (const locale in this.localesMap) { if (this.sourceLocalesMap[locale] !== undefined) { const sourceLocale = this.sourceLocalesMap[locale] as Record; @@ -146,7 +137,7 @@ export default class ExportCustomRoles extends BaseClass { } this.localesMap[locale] = this.sourceLocalesMap[locale]; } - + log.debug(`Writing custom roles locales to: ${this.customRolesLocalesFilepath}.`, this.exportConfig.context); fsUtil.writeFile(this.customRolesLocalesFilepath, this.localesMap); } else { diff --git a/packages/contentstack-export/src/export/modules/environments.ts b/packages/contentstack-export/src/export/modules/environments.ts index 43c3745df..85e9f8af3 100644 --- a/packages/contentstack-export/src/export/modules/environments.ts +++ b/packages/contentstack-export/src/export/modules/environments.ts @@ -35,7 +35,7 @@ export default class ExportEnvironments extends BaseClass { await fsUtil.makeDirectory(this.environmentsFolderPath); log.debug('Environments directory created.', this.exportConfig.context); - + await this.getEnvironments(); log.debug(`Retrieved ${Object.keys(this.environments).length} environments.`, this.exportConfig.context); @@ -59,9 +59,9 @@ export default class ExportEnvironments extends BaseClass { } else { log.debug('Fetching environments with initial query...', this.exportConfig.context); } - + log.debug(`Query parameters: ${JSON.stringify(this.qs)}`, this.exportConfig.context); - + await this.stack .environment() .query(this.qs) @@ -69,7 +69,7 @@ export default class ExportEnvironments extends BaseClass { .then(async (data: any) => { const { items, count } = data; log.debug(`Fetched ${items?.length || 0} environments out of ${count} total.`, this.exportConfig.context); - + if (items?.length) { log.debug(`Processing ${items.length} environments.`, this.exportConfig.context); this.sanitizeAttribs(items); @@ -92,19 +92,16 @@ export default class ExportEnvironments extends BaseClass { sanitizeAttribs(environments: Record[]) { log.debug(`Sanitizing ${environments.length} environments...`, this.exportConfig.context); - + for (let index = 0; index < environments?.length; index++) { const extUid = environments[index].uid; const envName = environments[index]?.name; log.debug(`Processing environment: ${envName} (${extUid})`, this.exportConfig.context); - + this.environments[extUid] = omit(environments[index], ['ACL']); - log.success(messageHandler.parse('ENVIRONMENT_EXPORT_SUCCESS', envName), this.exportConfig.context); + log.success(messageHandler.parse('ENVIRONMENT_EXPORT_SUCCESS', envName ), this.exportConfig.context); } - - log.debug( - `Sanitization complete. Total environments processed: ${Object.keys(this.environments).length}`, - this.exportConfig.context, - ); + + log.debug(`Sanitization complete. Total environments processed: ${Object.keys(this.environments).length}`, this.exportConfig.context); } } diff --git a/packages/contentstack-export/src/export/modules/extensions.ts b/packages/contentstack-export/src/export/modules/extensions.ts index efe3e1060..5da610ec2 100644 --- a/packages/contentstack-export/src/export/modules/extensions.ts +++ b/packages/contentstack-export/src/export/modules/extensions.ts @@ -27,7 +27,7 @@ export default class ExportExtensions extends BaseClass { async start(): Promise { log.debug('Starting extensions export process...', this.exportConfig.context); - + this.extensionsFolderPath = pResolve( this.exportConfig.data, this.exportConfig.branchName || '', @@ -37,7 +37,7 @@ export default class ExportExtensions extends BaseClass { await fsUtil.makeDirectory(this.extensionsFolderPath); log.debug('Extensions directory created.', this.exportConfig.context); - + await this.getExtensions(); log.debug(`Retrieved ${Object.keys(this.extensions).length} extensions.`, this.exportConfig.context); @@ -48,7 +48,7 @@ export default class ExportExtensions extends BaseClass { log.debug(`Writing extensions to: ${extensionsFilePath}.`, this.exportConfig.context); fsUtil.writeFile(extensionsFilePath, this.extensions); log.success( - messageHandler.parse('EXTENSION_EXPORT_COMPLETE', Object.keys(this.extensions).length), + messageHandler.parse('EXTENSION_EXPORT_COMPLETE', Object.keys(this.extensions).length ), this.exportConfig.context, ); } @@ -61,9 +61,9 @@ export default class ExportExtensions extends BaseClass { } else { log.debug('Fetching extensions with initial query...', this.exportConfig.context); } - + log.debug(`Query parameters: ${JSON.stringify(this.qs)}.`, this.exportConfig.context); - + await this.stack .extension() .query(this.qs) @@ -71,7 +71,7 @@ export default class ExportExtensions extends BaseClass { .then(async (data: any) => { const { items, count } = data; log.debug(`Fetched ${items?.length || 0} extensions out of ${count}.`, this.exportConfig.context); - + if (items?.length) { log.debug(`Processing ${items.length} extensions...`, this.exportConfig.context); this.sanitizeAttribs(items); @@ -94,19 +94,16 @@ export default class ExportExtensions extends BaseClass { sanitizeAttribs(extensions: Record[]) { log.debug(`Sanitizing ${extensions.length} extensions...`, this.exportConfig.context); - + for (let index = 0; index < extensions?.length; index++) { const extUid = extensions[index].uid; const extTitle = extensions[index]?.title; log.debug(`Processing extension: '${extTitle}' (UID: ${extUid})...`, this.exportConfig.context); - + this.extensions[extUid] = omit(extensions[index], ['SYS_ACL']); log.info(messageHandler.parse('EXTENSION_EXPORT_SUCCESS', extTitle), this.exportConfig.context); } - - log.debug( - `Sanitization complete. Total extensions processed: ${Object.keys(this.extensions).length}.`, - this.exportConfig.context, - ); + + log.debug(`Sanitization complete. Total extensions processed: ${Object.keys(this.extensions).length}.`, this.exportConfig.context); } } diff --git a/packages/contentstack-export/src/export/modules/global-fields.ts b/packages/contentstack-export/src/export/modules/global-fields.ts index aae016f7d..421665cfc 100644 --- a/packages/contentstack-export/src/export/modules/global-fields.ts +++ b/packages/contentstack-export/src/export/modules/global-fields.ts @@ -1,5 +1,11 @@ import * as path from 'path'; -import { ContentstackClient, handleAndLogError, messageHandler, log, sanitizePath } from '@contentstack/cli-utilities'; +import { + ContentstackClient, + handleAndLogError, + messageHandler, + log, + sanitizePath, +} from '@contentstack/cli-utilities'; import { fsUtil } from '../../utils'; import { ExportConfig, ModuleClassParams } from '../../types'; @@ -50,17 +56,17 @@ export default class GlobalFieldsExport extends BaseClass { async start() { try { log.debug('Starting export process for global fields...', this.exportConfig.context); - log.debug(`Global fields directory path: '${this.globalFieldsDirPath}'`, this.exportConfig.context); + log.debug(`Global fields directory path: '${this.globalFieldsDirPath}'`, this.exportConfig.context); await fsUtil.makeDirectory(this.globalFieldsDirPath); log.debug('Created global fields directory.', this.exportConfig.context); - + await this.getGlobalFields(); log.debug(`Retrieved ${this.globalFields.length} global fields.`, this.exportConfig.context); - + const globalFieldsFilePath = path.join(this.globalFieldsDirPath, this.globalFieldsConfig.fileName); log.debug(`Writing global fields to: '${globalFieldsFilePath}'`, this.exportConfig.context); fsUtil.writeFile(globalFieldsFilePath, this.globalFields); - + log.success( messageHandler.parse('GLOBAL_FIELDS_EXPORT_COMPLETE', this.globalFields.length), this.exportConfig.context, @@ -77,16 +83,11 @@ export default class GlobalFieldsExport extends BaseClass { log.debug(`Fetching global fields with skip: ${skip}.`, this.exportConfig.context); } log.debug(`Query parameters: ${JSON.stringify(this.qs)}.`, this.exportConfig.context); - + let globalFieldsFetchResponse = await this.stackAPIClient.globalField({ api_version: '3.2' }).query(this.qs).find(); - - log.debug( - `Fetched ${globalFieldsFetchResponse.items?.length || 0} global fields out of ${ - globalFieldsFetchResponse.count - }.`, - this.exportConfig.context, - ); - + + log.debug(`Fetched ${globalFieldsFetchResponse.items?.length || 0} global fields out of ${globalFieldsFetchResponse.count}.`, this.exportConfig.context); + if (Array.isArray(globalFieldsFetchResponse.items) && globalFieldsFetchResponse.items.length > 0) { log.debug(`Processing ${globalFieldsFetchResponse.items.length} global fields...`, this.exportConfig.context); this.sanitizeAttribs(globalFieldsFetchResponse.items); @@ -104,10 +105,10 @@ export default class GlobalFieldsExport extends BaseClass { sanitizeAttribs(globalFields: Record[]) { log.debug(`Sanitizing ${globalFields.length} global fields...`, this.exportConfig.context); - + globalFields.forEach((globalField: Record) => { log.debug(`Processing global field: '${globalField.uid || 'unknown'}'...`, this.exportConfig.context); - + for (let key in globalField) { if (this.globalFieldsConfig.validKeys.indexOf(key) === -1) { delete globalField[key]; @@ -115,10 +116,7 @@ export default class GlobalFieldsExport extends BaseClass { } this.globalFields.push(globalField); }); - - log.debug( - `Sanitization complete. Total global fields processed: ${this.globalFields.length}.`, - this.exportConfig.context, - ); + + log.debug(`Sanitization complete. Total global fields processed: ${this.globalFields.length}.`, this.exportConfig.context); } } diff --git a/packages/contentstack-export/src/export/modules/index.ts b/packages/contentstack-export/src/export/modules/index.ts index ca0896b44..f13bc4fa3 100644 --- a/packages/contentstack-export/src/export/modules/index.ts +++ b/packages/contentstack-export/src/export/modules/index.ts @@ -11,7 +11,7 @@ export default async function startModuleExport(modulePayload: ModuleClassParams ...modulePayload.exportConfig.context, module: modulePayload.moduleName, }); - throw error; + throw error; } } diff --git a/packages/contentstack-export/src/export/modules/labels.ts b/packages/contentstack-export/src/export/modules/labels.ts index c639aca60..414f13077 100644 --- a/packages/contentstack-export/src/export/modules/labels.ts +++ b/packages/contentstack-export/src/export/modules/labels.ts @@ -26,7 +26,7 @@ export default class ExportLabels extends BaseClass { async start(): Promise { log.debug('Starting export process for labels...', this.exportConfig.context); - + this.labelsFolderPath = pResolve( this.exportConfig.data, this.exportConfig.branchName || '', @@ -36,10 +36,10 @@ export default class ExportLabels extends BaseClass { await fsUtil.makeDirectory(this.labelsFolderPath); log.debug('Created labels directory.', this.exportConfig.context); - + await this.getLabels(); log.debug(`Retrieved ${Object.keys(this.labels).length} labels.`, this.exportConfig.context); - + if (this.labels === undefined || isEmpty(this.labels)) { log.info(messageHandler.parse('LABELS_NOT_FOUND'), this.exportConfig.context); } else { @@ -60,9 +60,9 @@ export default class ExportLabels extends BaseClass { } else { log.debug('Fetching labels with initial query...', this.exportConfig.context); } - + log.debug(`Query parameters: ${JSON.stringify(this.qs)}.`, this.exportConfig.context); - + await this.stack .label() .query(this.qs) @@ -70,7 +70,7 @@ export default class ExportLabels extends BaseClass { .then(async (data: any) => { const { items, count } = data; log.debug(`Fetched ${items?.length || 0} labels out of ${count}.`, this.exportConfig.context); - + if (items?.length) { log.debug(`Processing ${items.length} labels...`, this.exportConfig.context); this.sanitizeAttribs(items); @@ -93,19 +93,16 @@ export default class ExportLabels extends BaseClass { sanitizeAttribs(labels: Record[]) { log.debug(`Sanitizing ${labels.length} labels...`, this.exportConfig.context); - + for (let index = 0; index < labels?.length; index++) { const labelUid = labels[index].uid; const labelName = labels[index]?.name; log.debug(`Processing label: '${labelName}' (UID: ${labelUid})...`, this.exportConfig.context); - + this.labels[labelUid] = omit(labels[index], this.labelConfig.invalidKeys); log.info(messageHandler.parse('LABEL_EXPORT_SUCCESS', labelName), this.exportConfig.context); } - - log.debug( - `Sanitization complete. Total labels processed: ${Object.keys(this.labels).length}.`, - this.exportConfig.context, - ); + + log.debug(`Sanitization complete. Total labels processed: ${Object.keys(this.labels).length}.`, this.exportConfig.context); } } diff --git a/packages/contentstack-export/src/export/modules/locales.ts b/packages/contentstack-export/src/export/modules/locales.ts index 4ff73240b..97f8d16fe 100644 --- a/packages/contentstack-export/src/export/modules/locales.ts +++ b/packages/contentstack-export/src/export/modules/locales.ts @@ -1,5 +1,11 @@ import * as path from 'path'; -import { ContentstackClient, handleAndLogError, messageHandler, log, sanitizePath } from '@contentstack/cli-utilities'; +import { + ContentstackClient, + handleAndLogError, + messageHandler, + log, + sanitizePath, +} from '@contentstack/cli-utilities'; import { fsUtil } from '../../utils'; import BaseClass from './base-class'; @@ -55,27 +61,22 @@ export default class LocaleExport extends BaseClass { try { log.debug('Starting export process for locales...', this.exportConfig.context); log.debug(`Locales path: '${this.localesPath}'`, this.exportConfig.context); - + await fsUtil.makeDirectory(this.localesPath); log.debug('Created locales directory.', this.exportConfig.context); - + await this.getLocales(); - log.debug( - `Retrieved ${Object.keys(this.locales).length} locales and ${ - Object.keys(this.masterLocale).length - } master locales.`, - this.exportConfig.context, - ); - + log.debug(`Retrieved ${Object.keys(this.locales).length} locales and ${Object.keys(this.masterLocale).length} master locales.`, this.exportConfig.context); + const localesFilePath = path.join(this.localesPath, this.localeConfig.fileName); const masterLocaleFilePath = path.join(this.localesPath, this.masterLocaleConfig.fileName); - + log.debug(`Writing locales to: '${localesFilePath}'`, this.exportConfig.context); fsUtil.writeFile(localesFilePath, this.locales); - + log.debug(`Writing master locale to: '${masterLocaleFilePath}'`, this.exportConfig.context); fsUtil.writeFile(masterLocaleFilePath, this.masterLocale); - + log.success( messageHandler.parse( 'LOCALES_EXPORT_COMPLETE', @@ -96,18 +97,15 @@ export default class LocaleExport extends BaseClass { log.debug(`Fetching locales with skip: ${skip}.`, this.exportConfig.context); } log.debug(`Query parameters: ${JSON.stringify(this.qs)}.`, this.exportConfig.context); - + let localesFetchResponse = await this.stackAPIClient.locale().query(this.qs).find(); - - log.debug( - `Fetched ${localesFetchResponse.items?.length || 0} locales out of ${localesFetchResponse.count}.`, - this.exportConfig.context, - ); - + + log.debug(`Fetched ${localesFetchResponse.items?.length || 0} locales out of ${localesFetchResponse.count}.`, this.exportConfig.context); + if (Array.isArray(localesFetchResponse.items) && localesFetchResponse.items.length > 0) { log.debug(`Processing ${localesFetchResponse.items.length} locales...`, this.exportConfig.context); this.sanitizeAttribs(localesFetchResponse.items); - + skip += this.localeConfig.limit || 100; if (skip > localesFetchResponse.count) { log.debug('Completed fetching all locales.', this.exportConfig.context); @@ -122,7 +120,7 @@ export default class LocaleExport extends BaseClass { sanitizeAttribs(locales: Record[]) { log.debug(`Sanitizing ${locales.length} locales...`, this.exportConfig.context); - + locales.forEach((locale: Record) => { for (let key in locale) { if (this.localeConfig.requiredKeys.indexOf(key) === -1) { @@ -138,12 +136,7 @@ export default class LocaleExport extends BaseClass { this.locales[locale.uid] = locale; } }); - - log.debug( - `Sanitization complete. Master locales: ${Object.keys(this.masterLocale).length}, Regular locales: ${ - Object.keys(this.locales).length - }.`, - this.exportConfig.context, - ); + + log.debug(`Sanitization complete. Master locales: ${Object.keys(this.masterLocale).length}, Regular locales: ${Object.keys(this.locales).length}.`, this.exportConfig.context); } } diff --git a/packages/contentstack-export/src/export/modules/marketplace-apps.ts b/packages/contentstack-export/src/export/modules/marketplace-apps.ts index 50cd0b761..094c05a22 100644 --- a/packages/contentstack-export/src/export/modules/marketplace-apps.ts +++ b/packages/contentstack-export/src/export/modules/marketplace-apps.ts @@ -39,7 +39,7 @@ export default class ExportMarketplaceApps { async start(): Promise { log.debug('Starting export process for Marketplace Apps...', this.exportConfig.context); - + if (!isAuthenticated()) { cliux.print( 'WARNING!!! To export Marketplace apps, you must be logged in. Please check csdx auth:login --help to log in', @@ -54,13 +54,13 @@ export default class ExportMarketplaceApps { this.marketplaceAppConfig.dirName, ); log.debug(`Marketplace apps folder path: '${this.marketplaceAppPath}'`, this.exportConfig.context); - + await fsUtil.makeDirectory(this.marketplaceAppPath); log.debug('Created Marketplace Apps directory.', this.exportConfig.context); - + this.developerHubBaseUrl = this.exportConfig.developerHubBaseUrl || (await getDeveloperHubUrl(this.exportConfig)); log.debug(`Developer Hub base URL: '${this.developerHubBaseUrl}'`, this.exportConfig.context); - + this.exportConfig.org_uid = await getOrgUid(this.exportConfig); this.query = { target_uids: this.exportConfig.source_stack }; log.debug(`Organization UID: '${this.exportConfig.org_uid}'.`, this.exportConfig.context); @@ -90,10 +90,10 @@ export default class ExportMarketplaceApps { this.query.installation_uids = externalQuery.installation_uid?.$in?.join(','); } } - + await this.getStackSpecificApps(); log.debug(`Retrieved ${this.installedApps.length} stack-specific apps.`, this.exportConfig.context); - + await this.getAppManifestAndAppConfig(); log.debug('Completed app manifest and configuration processing.', this.exportConfig.context); @@ -109,7 +109,7 @@ export default class ExportMarketplaceApps { } return app; }); - + log.debug(`Processed ${this.installedApps.length} Marketplace Apps.`, this.exportConfig.context); } @@ -122,7 +122,7 @@ export default class ExportMarketplaceApps { log.info(messageHandler.parse('MARKETPLACE_APPS_NOT_FOUND'), this.exportConfig.context); } else { log.debug(`Processing ${this.installedApps.length} installed apps...`, this.exportConfig.context); - + for (const [index, app] of entries(this.installedApps)) { if (app.manifest.visibility === 'private') { log.debug(`Processing private app manifest: '${app.manifest.name}'...`, this.exportConfig.context); @@ -131,10 +131,7 @@ export default class ExportMarketplaceApps { } for (const [index, app] of entries(this.installedApps)) { - log.debug( - `Processing app configurations for: '${app.manifest?.name || app.uid}'...`, - this.exportConfig.context, - ); + log.debug(`Processing app configurations for: '${app.manifest?.name || app.uid}'...`, this.exportConfig.context); await this.getAppConfigurations(+index, app); } @@ -159,20 +156,14 @@ export default class ExportMarketplaceApps { * app's manifest. */ async getPrivateAppsManifest(index: number, appInstallation: Installation) { - log.debug( - `Fetching private app manifest for: '${appInstallation.manifest.name}' (UID: ${appInstallation.manifest.uid})...`, - this.exportConfig.context, - ); - + log.debug(`Fetching private app manifest for: '${appInstallation.manifest.name}' (UID: ${appInstallation.manifest.uid})...`, this.exportConfig.context); + const manifest = await this.appSdk .marketplace(this.exportConfig.org_uid) .app(appInstallation.manifest.uid) .fetch({ include_oauth: true }) .catch((error) => { - log.debug( - `Failed to fetch private app manifest for: '${appInstallation.manifest.name}'.`, - this.exportConfig.context, - ); + log.debug(`Failed to fetch private app manifest for: '${appInstallation.manifest.name}'.`, this.exportConfig.context); handleAndLogError( error, { @@ -183,10 +174,7 @@ export default class ExportMarketplaceApps { }); if (manifest) { - log.debug( - `Successfully fetched private app manifest for: '${appInstallation.manifest.name}'.`, - this.exportConfig.context, - ); + log.debug(`Successfully fetched private app manifest for: '${appInstallation.manifest.name}'.`, this.exportConfig.context); this.installedApps[index].manifest = manifest as unknown as Manifest; } } @@ -217,7 +205,7 @@ export default class ExportMarketplaceApps { if (has(data, 'server_configuration') || has(data, 'configuration')) { log.debug(`Found configuration data for app: '${app}'.`, this.exportConfig.context); - + if (!this.nodeCrypto && (has(data, 'server_configuration') || has(data, 'configuration'))) { log.debug(`Initializing NodeCrypto for app: '${app}'...`, this.exportConfig.context); this.nodeCrypto = await createNodeCryptoInstance(this.exportConfig); @@ -266,7 +254,7 @@ export default class ExportMarketplaceApps { * the API. In this code, it is initially set to 0, indicating that no items should be skipped in */ async getStackSpecificApps(skip = 0) { - log.debug(`Fetching stack-specific apps with skip: ${skip}`, this.exportConfig.context); + log.debug(`Fetching stack-specific apps with skip: ${skip}`, this.exportConfig.context); const collection = await this.appSdk .marketplace(this.exportConfig.org_uid) .installation() @@ -281,7 +269,7 @@ export default class ExportMarketplaceApps { if (collection) { const { items: apps, count } = collection; log.debug(`Fetched ${apps?.length || 0} apps out of ${count}.`, this.exportConfig.context); - + // NOTE Remove all the chain functions const installation = map(apps, (app) => omitBy(app, (val, _key) => { @@ -289,7 +277,7 @@ export default class ExportMarketplaceApps { return false; }), ) as unknown as Installation[]; - + log.debug(`Processed ${installation.length} app installations.`, this.exportConfig.context); this.installedApps = this.installedApps.concat(installation); diff --git a/packages/contentstack-export/src/export/modules/personalize.ts b/packages/contentstack-export/src/export/modules/personalize.ts index deffcd50b..51656635c 100644 --- a/packages/contentstack-export/src/export/modules/personalize.ts +++ b/packages/contentstack-export/src/export/modules/personalize.ts @@ -22,31 +22,27 @@ export default class ExportPersonalize { async start(): Promise { try { log.debug('Starting export process for Personalize...', this.exportConfig.context); - + if (!this.personalizeConfig.baseURL[this.exportConfig.region.name]) { log.debug(`Personalize URL not set for region: '${this.exportConfig.region.name}'.`, this.exportConfig.context); log.info(messageHandler.parse('PERSONALIZE_URL_NOT_SET'), this.exportConfig.context); this.exportConfig.personalizationEnabled = false; return; } - + if (this.exportConfig.management_token) { log.debug('Management token detected, skipping personalize export.', this.exportConfig.context); log.info(messageHandler.parse('PERSONALIZE_SKIPPING_WITH_MANAGEMENT_TOKEN'), this.exportConfig.context); this.exportConfig.personalizationEnabled = false; return; } - + log.debug('Starting export process for personalization projects...', this.exportConfig.context); await new ExportProjects(this.exportConfig).start(); - + if (this.exportConfig.personalizationEnabled) { - log.debug( - 'Personalization is enabled, processing personalize modules... ' + - this.exportConfig.modules.personalize.exportOrder.join(', '), - this.exportConfig.context, - ); - + log.debug('Personalization is enabled, processing personalize modules... ' + this.exportConfig.modules.personalize.exportOrder.join(', '), this.exportConfig.context); + const moduleMapper = { events: new ExportEvents(this.exportConfig), attributes: new ExportAttributes(this.exportConfig), @@ -58,20 +54,23 @@ export default class ExportPersonalize { .exportOrder as (keyof typeof moduleMapper)[]; log.debug(`Personalize export order: ${order.join(', ')}.`, this.exportConfig.context); - + for (const module of order) { log.debug(`Processing personalization module: '${module}'...`, this.exportConfig.context); - + if (moduleMapper[module]) { log.debug(`Starting export for module: '${module}'...`, this.exportConfig.context); await moduleMapper[module].start(); log.debug(`Completed export for module: '${module}'.`, this.exportConfig.context); } else { log.debug(`Module not implemented: '${module}'.`, this.exportConfig.context); - log.info(messageHandler.parse('PERSONALIZE_MODULE_NOT_IMPLEMENTED', module), this.exportConfig.context); + log.info( + messageHandler.parse('PERSONALIZE_MODULE_NOT_IMPLEMENTED', module), + this.exportConfig.context, + ); } } - + log.debug('Completed all personalization module exports.', this.exportConfig.context); } else { log.debug('Personalization is disabled, skipping personalize module exports.', this.exportConfig.context); diff --git a/packages/contentstack-export/src/export/modules/publishing-rules.ts b/packages/contentstack-export/src/export/modules/publishing-rules.ts deleted file mode 100644 index 86be31dee..000000000 --- a/packages/contentstack-export/src/export/modules/publishing-rules.ts +++ /dev/null @@ -1,83 +0,0 @@ -import omit from 'lodash/omit'; -import isEmpty from 'lodash/isEmpty'; -import { resolve as pResolve } from 'node:path'; -import { handleAndLogError, log } from '@contentstack/cli-utilities'; - -import BaseClass from './base-class'; -import { fsUtil } from '../../utils'; -import { PublishingRulesConfig, ModuleClassParams } from '../../types'; - -export default class ExportPublishingRules extends BaseClass { - private readonly publishingRules: Record> = {}; - private readonly publishingRulesConfig: PublishingRulesConfig; - private publishingRulesFolderPath: string; - private readonly qs: { include_count: boolean; skip?: number }; - - constructor({ exportConfig, stackAPIClient }: ModuleClassParams) { - super({ exportConfig, stackAPIClient }); - this.publishingRulesConfig = exportConfig.modules['publishing-rules']; - this.qs = { include_count: true }; - this.exportConfig.context.module = 'publishing-rules'; - } - - async start(): Promise { - this.publishingRulesFolderPath = pResolve( - this.exportConfig.data, - this.exportConfig.branchName || '', - this.publishingRulesConfig.dirName, - ); - log.debug(`Publishing rules folder path: ${this.publishingRulesFolderPath}`, this.exportConfig.context); - - await fsUtil.makeDirectory(this.publishingRulesFolderPath); - log.debug('Created publishing rules directory', this.exportConfig.context); - - await this.fetchAllPublishingRules(); - - if (isEmpty(this.publishingRules)) { - log.info('No Publishing Rules found', this.exportConfig.context); - return; - } - - const outPath = pResolve(this.publishingRulesFolderPath, this.publishingRulesConfig.fileName); - fsUtil.writeFile(outPath, this.publishingRules); - log.success( - `Publishing rules exported successfully! Total count: ${Object.keys(this.publishingRules).length}`, - this.exportConfig.context, - ); - } - - private async fetchAllPublishingRules(skip = 0): Promise { - try { - if (skip > 0) { - this.qs.skip = skip; - } - - const data: { items?: Record[]; count?: number } = await this.stack - .workflow() - .publishRule() - .fetchAll(this.qs); - - const items = data.items ?? []; - const total = data.count ?? items.length; - - if (!items.length) { - log.debug('No publishing rules returned for this page', this.exportConfig.context); - return; - } - - for (const rule of items) { - const uid = rule.uid as string | undefined; - if (uid) { - this.publishingRules[uid] = omit(rule, this.publishingRulesConfig.invalidKeys) as Record; - } - } - - const nextSkip = skip + items.length; - if (nextSkip < total) { - await this.fetchAllPublishingRules(nextSkip); - } - } catch (error: unknown) { - handleAndLogError(error as Error, { ...this.exportConfig.context }); - } - } -} diff --git a/packages/contentstack-export/src/export/modules/stack.ts b/packages/contentstack-export/src/export/modules/stack.ts index bfe6d7c93..cb1d75fb0 100644 --- a/packages/contentstack-export/src/export/modules/stack.ts +++ b/packages/contentstack-export/src/export/modules/stack.ts @@ -77,10 +77,7 @@ export default class ExportStack extends BaseClass { .stack({ api_key: this.exportConfig.source_stack }) .fetch() .then((data: any) => { - log.debug( - `Successfully fetched stack data for: '${this.exportConfig.source_stack}'.`, - this.exportConfig.context, - ); + log.debug(`Successfully fetched stack data for: '${this.exportConfig.source_stack}'.`, this.exportConfig.context); return data; }) .catch((error: any) => { @@ -171,10 +168,7 @@ export default class ExportStack extends BaseClass { return resp; }) .catch((error: any) => { - log.debug( - `An error occurred while exporting stack: '${this.exportConfig.source_stack}'.`, - this.exportConfig.context, - ); + log.debug(`An error occurred while exporting stack: '${this.exportConfig.source_stack}'.`, this.exportConfig.context); handleAndLogError(error, { ...this.exportConfig.context }); }); } diff --git a/packages/contentstack-export/src/export/modules/taxonomies.ts b/packages/contentstack-export/src/export/modules/taxonomies.ts index 11ed9bb5c..69acea863 100644 --- a/packages/contentstack-export/src/export/modules/taxonomies.ts +++ b/packages/contentstack-export/src/export/modules/taxonomies.ts @@ -45,7 +45,7 @@ export default class ExportTaxonomies extends BaseClass { async start(): Promise { log.debug('Starting export process for taxonomies...', this.exportConfig.context); - + //create taxonomies folder this.taxonomiesFolderPath = pResolve( this.exportConfig.data, @@ -53,7 +53,7 @@ export default class ExportTaxonomies extends BaseClass { this.taxonomiesConfig.dirName, ); log.debug(`Taxonomies folder path: '${this.taxonomiesFolderPath}'`, this.exportConfig.context); - + await fsUtil.makeDirectory(this.taxonomiesFolderPath); log.debug('Created taxonomies directory.', this.exportConfig.context); diff --git a/packages/contentstack-export/src/export/modules/webhooks.ts b/packages/contentstack-export/src/export/modules/webhooks.ts index ef59a13c2..42d657490 100644 --- a/packages/contentstack-export/src/export/modules/webhooks.ts +++ b/packages/contentstack-export/src/export/modules/webhooks.ts @@ -27,7 +27,7 @@ export default class ExportWebhooks extends BaseClass { async start(): Promise { log.debug('Starting webhooks export process...', this.exportConfig.context); - + this.webhooksFolderPath = pResolve( this.exportConfig.data, this.exportConfig.branchName || '', @@ -37,10 +37,10 @@ export default class ExportWebhooks extends BaseClass { await fsUtil.makeDirectory(this.webhooksFolderPath); log.debug('Created webhooks directory', this.exportConfig.context); - + await this.getWebhooks(); log.debug(`Retrieved ${Object.keys(this.webhooks).length} webhooks`, this.exportConfig.context); - + if (this.webhooks === undefined || isEmpty(this.webhooks)) { log.info(messageHandler.parse('WEBHOOK_NOT_FOUND'), this.exportConfig.context); } else { @@ -61,7 +61,7 @@ export default class ExportWebhooks extends BaseClass { } else { log.debug('Fetching webhooks with initial query', this.exportConfig.context); } - + log.debug(`Query parameters: ${JSON.stringify(this.qs)}`, this.exportConfig.context); await this.stack @@ -70,7 +70,7 @@ export default class ExportWebhooks extends BaseClass { .then(async (data: any) => { const { items, count } = data; log.debug(`Fetched ${items?.length || 0} webhooks out of total ${count}`, this.exportConfig.context); - + if (items?.length) { log.debug(`Processing ${items.length} webhooks`, this.exportConfig.context); this.sanitizeAttribs(items); @@ -93,19 +93,16 @@ export default class ExportWebhooks extends BaseClass { sanitizeAttribs(webhooks: Record[]) { log.debug(`Sanitizing ${webhooks.length} webhooks`, this.exportConfig.context); - + for (let index = 0; index < webhooks?.length; index++) { const webhookUid = webhooks[index].uid; const webhookName = webhooks[index]?.name; log.debug(`Processing webhook: ${webhookName} (${webhookUid})`, this.exportConfig.context); - + this.webhooks[webhookUid] = omit(webhooks[index], ['SYS_ACL']); log.success(messageHandler.parse('WEBHOOK_EXPORT_SUCCESS', webhookName), this.exportConfig.context); } - - log.debug( - `Sanitization complete. Total webhooks processed: ${Object.keys(this.webhooks).length}`, - this.exportConfig.context, - ); + + log.debug(`Sanitization complete. Total webhooks processed: ${Object.keys(this.webhooks).length}`, this.exportConfig.context); } } diff --git a/packages/contentstack-export/src/export/modules/workflows.ts b/packages/contentstack-export/src/export/modules/workflows.ts index f51b0d34a..6a9fedb8a 100644 --- a/packages/contentstack-export/src/export/modules/workflows.ts +++ b/packages/contentstack-export/src/export/modules/workflows.ts @@ -24,7 +24,7 @@ export default class ExportWorkFlows extends BaseClass { this.exportConfig.context.module = 'workflows'; } - async start(): Promise { + async start(): Promise { this.webhooksFolderPath = pResolve( this.exportConfig.data, this.exportConfig.branchName || '', @@ -34,7 +34,7 @@ export default class ExportWorkFlows extends BaseClass { await fsUtil.makeDirectory(this.webhooksFolderPath); log.debug('Created workflows directory', this.exportConfig.context); - + await this.getWorkflows(); log.debug(`Retrieved ${Object.keys(this.workflows).length} workflows`, this.exportConfig.context); @@ -45,7 +45,7 @@ export default class ExportWorkFlows extends BaseClass { log.debug(`Writing workflows to: ${workflowsFilePath}`, this.exportConfig.context); fsUtil.writeFile(workflowsFilePath, this.workflows); log.success( - messageHandler.parse('WORKFLOW_EXPORT_COMPLETE', Object.keys(this.workflows).length), + messageHandler.parse('WORKFLOW_EXPORT_COMPLETE', Object.keys(this.workflows).length ), this.exportConfig.context, ); } @@ -66,7 +66,7 @@ export default class ExportWorkFlows extends BaseClass { //NOTE - Handle the case where old workflow api is enabled in that case getting responses as objects. const workflowCount = count !== undefined ? count : items.length; log.debug(`Fetched ${items?.length || 0} workflows out of total ${workflowCount}`, this.exportConfig.context); - + if (items?.length) { log.debug(`Processing ${items.length} workflows`, this.exportConfig.context); await this.sanitizeAttribs(items); @@ -89,29 +89,29 @@ export default class ExportWorkFlows extends BaseClass { async sanitizeAttribs(workflows: Record[]) { log.debug(`Sanitizing ${workflows.length} workflows`, this.exportConfig.context); - + for (let index = 0; index < workflows?.length; index++) { const workflowUid = workflows[index].uid; const workflowName = workflows[index]?.name || ''; log.debug(`Processing workflow: ${workflowName} (${workflowUid})`, this.exportConfig.context); - + await this.getWorkflowRoles(workflows[index]); this.workflows[workflowUid] = omit(workflows[index], this.workflowConfig.invalidKeys); - log.success(messageHandler.parse('WORKFLOW_EXPORT_SUCCESS', workflowName), this.exportConfig.context); + log.success( + messageHandler.parse('WORKFLOW_EXPORT_SUCCESS', workflowName), + this.exportConfig.context, + ); } - - log.debug( - `Sanitization complete. Total workflows processed: ${Object.keys(this.workflows).length}`, - this.exportConfig.context, - ); + + log.debug(`Sanitization complete. Total workflows processed: ${Object.keys(this.workflows).length}`, this.exportConfig.context); } async getWorkflowRoles(workflow: Record) { log.debug(`Processing workflow roles for workflow: ${workflow.uid}`, this.exportConfig.context); - + for (const stage of workflow?.workflow_stages) { log.debug(`Processing workflow stage: ${stage.name}`, this.exportConfig.context); - + for (let i = 0; i < stage?.SYS_ACL?.roles?.uids?.length; i++) { const roleUid = stage.SYS_ACL.roles.uids[i]; log.debug(`Fetching role data for role UID: ${roleUid}`, this.exportConfig.context); @@ -123,7 +123,7 @@ export default class ExportWorkFlows extends BaseClass { async getRoles(roleUid: number): Promise { log.debug(`Fetching role with UID: ${roleUid}`, this.exportConfig.context); - + return await this.stack .role(roleUid) .fetch({ include_rules: true, include_permissions: true }) @@ -133,7 +133,10 @@ export default class ExportWorkFlows extends BaseClass { }) .catch((err: any) => { log.debug(`Failed to fetch role data for UID: ${roleUid}`, this.exportConfig.context); - handleAndLogError(err, { ...this.exportConfig.context }); + handleAndLogError( + err, + { ...this.exportConfig.context } + ); }); } } diff --git a/packages/contentstack-export/src/types/default-config.ts b/packages/contentstack-export/src/types/default-config.ts index 01cb84c89..12090760c 100644 --- a/packages/contentstack-export/src/types/default-config.ts +++ b/packages/contentstack-export/src/types/default-config.ts @@ -67,13 +67,6 @@ export default interface DefaultConfig { invalidKeys: string[]; dependencies?: Modules[]; }; - 'publishing-rules': { - dirName: string; - fileName: string; - invalidKeys: string[]; - dependencies?: Modules[]; - limit?: number; - }; globalfields: { dirName: string; fileName: string; diff --git a/packages/contentstack-export/src/types/index.ts b/packages/contentstack-export/src/types/index.ts index fd13364a5..ec2118510 100644 --- a/packages/contentstack-export/src/types/index.ts +++ b/packages/contentstack-export/src/types/index.ts @@ -46,7 +46,6 @@ export type Modules = | 'content-types' | 'custom-roles' | 'workflows' - | 'publishing-rules' | 'labels' | 'marketplace-apps' | 'taxonomies' @@ -118,14 +117,6 @@ export interface WorkflowConfig { limit?: number; } -export interface PublishingRulesConfig { - dirName: string; - fileName: string; - invalidKeys: string[]; - dependencies?: Modules[]; - limit?: number; -} - export interface CustomRoleConfig { dirName: string; fileName: string; diff --git a/packages/contentstack-export/src/utils/export-config-handler.ts b/packages/contentstack-export/src/utils/export-config-handler.ts index 2303f3937..c67b6c12b 100644 --- a/packages/contentstack-export/src/utils/export-config-handler.ts +++ b/packages/contentstack-export/src/utils/export-config-handler.ts @@ -1,6 +1,6 @@ import merge from 'merge'; import * as path from 'path'; -import { configHandler, isAuthenticated, cliux, sanitizePath, log } from '@contentstack/cli-utilities'; +import { configHandler, isAuthenticated,cliux, sanitizePath, log } from '@contentstack/cli-utilities'; import defaultConfig from '../config'; import { readFile } from './file-helper'; import { askExportDir, askAPIKey } from './interactive'; @@ -97,7 +97,7 @@ const setupConfig = async (exportCmdFlags: any): Promise => { if (exportCmdFlags['branch-alias']) { config.branchAlias = exportCmdFlags['branch-alias']; - } + } if (exportCmdFlags['branch']) { config.branchName = exportCmdFlags['branch']; } @@ -133,7 +133,7 @@ const setupConfig = async (exportCmdFlags: any): Promise => { } } - // Add authentication details to config for context tracking + // Add authentication details to config for context tracking config.authenticationMethod = authenticationMethod; log.debug('Export configuration setup completed.', { ...config }); diff --git a/packages/contentstack-export/src/utils/logger.ts b/packages/contentstack-export/src/utils/logger.ts index 337a9d897..07aa897b8 100644 --- a/packages/contentstack-export/src/utils/logger.ts +++ b/packages/contentstack-export/src/utils/logger.ts @@ -24,7 +24,7 @@ function returnString(args: unknown[]) { if (item && typeof item === 'object') { try { const redactedObject = redactObject(item); - if (redactedObject && typeof redactedObject === 'object') { + if(redactedObject && typeof redactedObject === 'object') { return JSON.stringify(redactedObject); } } catch (error) {} diff --git a/packages/contentstack-export/src/utils/marketplace-app-helper.ts b/packages/contentstack-export/src/utils/marketplace-app-helper.ts index f77c2ccb1..970f35527 100644 --- a/packages/contentstack-export/src/utils/marketplace-app-helper.ts +++ b/packages/contentstack-export/src/utils/marketplace-app-helper.ts @@ -1,10 +1,4 @@ -import { - cliux, - handleAndLogError, - NodeCrypto, - managementSDKClient, - createDeveloperHubUrl, -} from '@contentstack/cli-utilities'; +import { cliux, handleAndLogError, NodeCrypto, managementSDKClient, createDeveloperHubUrl } from '@contentstack/cli-utilities'; import { ExportConfig } from '../types'; @@ -18,7 +12,7 @@ export async function getOrgUid(config: ExportConfig): Promise { .stack({ api_key: config.source_stack }) .fetch() .catch((error: any) => { - handleAndLogError(error, { ...config.context }); + handleAndLogError(error, {...config.context}); }); return tempStackData?.org_uid; diff --git a/packages/contentstack-export/src/utils/setup-export-dir.ts b/packages/contentstack-export/src/utils/setup-export-dir.ts index cc49ee2c8..76de5b364 100644 --- a/packages/contentstack-export/src/utils/setup-export-dir.ts +++ b/packages/contentstack-export/src/utils/setup-export-dir.ts @@ -8,9 +8,7 @@ export default async function setupExportDir(exportConfig: ExportConfig) { makeDirectory(exportConfig.exportDir); if (exportConfig.branches) { return Promise.all( - exportConfig.branches.map((branch) => - makeDirectory(path.join(sanitizePath(exportConfig.exportDir), sanitizePath(branch.uid))), - ), + exportConfig.branches.map((branch) => makeDirectory(path.join(sanitizePath(exportConfig.exportDir), sanitizePath(branch.uid)))), ); } } diff --git a/packages/contentstack-export/test/unit/export/modules/assets.test.ts b/packages/contentstack-export/test/unit/export/modules/assets.test.ts index 408c9a63c..56ef04ef7 100644 --- a/packages/contentstack-export/test/unit/export/modules/assets.test.ts +++ b/packages/contentstack-export/test/unit/export/modules/assets.test.ts @@ -113,11 +113,6 @@ describe('ExportAssets', () => { fileName: 'workflows.json', invalidKeys: [] }, - 'publishing-rules': { - dirName: 'workflows', - fileName: 'publishing-rules.json', - invalidKeys: [], - }, globalfields: { dirName: 'global_fields', fileName: 'globalfields.json', diff --git a/packages/contentstack-export/test/unit/export/modules/base-class.test.ts b/packages/contentstack-export/test/unit/export/modules/base-class.test.ts index 4b62b5230..0ffe4187f 100644 --- a/packages/contentstack-export/test/unit/export/modules/base-class.test.ts +++ b/packages/contentstack-export/test/unit/export/modules/base-class.test.ts @@ -131,11 +131,6 @@ describe('BaseClass', () => { fileName: 'workflows.json', invalidKeys: [] }, - 'publishing-rules': { - dirName: 'workflows', - fileName: 'publishing-rules.json', - invalidKeys: [], - }, globalfields: { dirName: 'global_fields', fileName: 'globalfields.json', diff --git a/packages/contentstack-export/test/unit/export/modules/publishing-rules.test.ts b/packages/contentstack-export/test/unit/export/modules/publishing-rules.test.ts deleted file mode 100644 index e6ab1321b..000000000 --- a/packages/contentstack-export/test/unit/export/modules/publishing-rules.test.ts +++ /dev/null @@ -1,180 +0,0 @@ -import { expect } from 'chai'; -import sinon from 'sinon'; -import { resolve as pResolve } from 'node:path'; -import { FsUtility } from '@contentstack/cli-utilities'; -import ExportPublishingRules from '../../../../src/export/modules/publishing-rules'; -import ExportConfig from '../../../../src/types/export-config'; - -describe('ExportPublishingRules', () => { - let exportPublishingRules: ExportPublishingRules; - let mockStackClient: any; - let mockExportConfig: ExportConfig; - - beforeEach(() => { - mockStackClient = { - workflow: sinon.stub().returns({ - publishRule: sinon.stub().returns({ - fetchAll: sinon.stub().resolves({ items: [], count: 0 }), - }), - }), - }; - - mockExportConfig = { - contentVersion: 1, - versioning: false, - host: 'https://api.contentstack.io', - developerHubUrls: {}, - apiKey: 'test-api-key', - exportDir: '/test/export', - data: '/test/data', - branchName: '', - context: { - command: 'cm:stacks:export', - module: 'publishing-rules', - userId: 'user-123', - email: 'test@example.com', - sessionId: 'session-123', - apiKey: 'test-api-key', - orgId: 'org-123', - authenticationMethod: 'Basic Auth', - }, - cliLogsPath: '/test/logs', - forceStopMarketplaceAppsPrompt: false, - master_locale: { code: 'en-us' }, - region: { - name: 'us', - cma: 'https://api.contentstack.io', - cda: 'https://cdn.contentstack.io', - uiHost: 'https://app.contentstack.com', - }, - skipStackSettings: false, - skipDependencies: false, - languagesCode: ['en'], - apis: {}, - preserveStackVersion: false, - personalizationEnabled: false, - fetchConcurrency: 5, - writeConcurrency: 5, - developerHubBaseUrl: '', - marketplaceAppEncryptionKey: '', - onlyTSModules: [], - modules: { - types: ['publishing-rules'], - 'publishing-rules': { - dirName: 'workflows', - fileName: 'publishing-rules.json', - invalidKeys: ['stackHeaders', 'created_at'], - }, - }, - } as any; - - exportPublishingRules = new ExportPublishingRules({ - exportConfig: mockExportConfig, - stackAPIClient: mockStackClient, - moduleName: 'publishing-rules', - }); - - sinon.stub(FsUtility.prototype, 'writeFile').resolves(); - sinon.stub(FsUtility.prototype, 'makeDirectory').resolves(); - }); - - afterEach(() => { - sinon.restore(); - }); - - describe('Constructor', () => { - it('sets context.module to publishing-rules and reads module config', () => { - expect(exportPublishingRules).to.be.instanceOf(ExportPublishingRules); - expect(exportPublishingRules.exportConfig.context.module).to.equal('publishing-rules'); - expect((exportPublishingRules as any).publishingRulesConfig.fileName).to.equal('publishing-rules.json'); - expect((exportPublishingRules as any).publishingRulesConfig.dirName).to.equal('workflows'); - }); - }); - - describe('start()', () => { - it('resolves output path from data, branchName, and publishing-rules dirName', async () => { - const fetchAll = sinon.stub().resolves({ items: [], count: 0 }); - mockStackClient.workflow.returns({ - publishRule: sinon.stub().returns({ fetchAll }), - }); - - await exportPublishingRules.start(); - - const expectedFolder = pResolve(mockExportConfig.data, mockExportConfig.branchName || '', 'workflows'); - expect((FsUtility.prototype.makeDirectory as sinon.SinonStub).calledWith(expectedFolder)).to.be.true; - }); - - it('writes publishing-rules.json with rules omitting invalidKeys when API returns items', async () => { - const writeFileStub = FsUtility.prototype.writeFile as sinon.SinonStub; - const items = [ - { - uid: 'pr-1', - name: 'Rule 1', - stackHeaders: { h: 1 }, - created_at: '2020-01-01', - }, - ]; - mockStackClient.workflow.returns({ - publishRule: sinon.stub().returns({ - fetchAll: sinon.stub().resolves({ items, count: 1 }), - }), - }); - - await exportPublishingRules.start(); - - const expectedPath = pResolve( - mockExportConfig.data, - mockExportConfig.branchName || '', - 'workflows', - 'publishing-rules.json', - ); - expect(writeFileStub.calledOnce).to.be.true; - expect(writeFileStub.firstCall.args[0]).to.equal(expectedPath); - const written = writeFileStub.firstCall.args[1] as Record>; - expect(written['pr-1']).to.deep.equal({ uid: 'pr-1', name: 'Rule 1' }); - expect(written['pr-1'].stackHeaders).to.equal(undefined); - expect(written['pr-1'].created_at).to.equal(undefined); - }); - - it('does not write the rules file when no rules are returned', async () => { - const writeFileStub = FsUtility.prototype.writeFile as sinon.SinonStub; - mockStackClient.workflow.returns({ - publishRule: sinon.stub().returns({ - fetchAll: sinon.stub().resolves({ items: [], count: 0 }), - }), - }); - - await exportPublishingRules.start(); - - expect(writeFileStub.called).to.be.false; - }); - - it('requests the next page when count exceeds items length (pagination)', async () => { - const fetchAll = sinon.stub(); - fetchAll.onFirstCall().resolves({ - items: [ - { uid: 'a', name: 'A' }, - { uid: 'b', name: 'B' }, - ], - count: 3, - }); - fetchAll.onSecondCall().resolves({ - items: [{ uid: 'c', name: 'C' }], - count: 3, - }); - - mockStackClient.workflow.returns({ - publishRule: sinon.stub().returns({ fetchAll }), - }); - - await exportPublishingRules.start(); - - expect(fetchAll.callCount).to.equal(2); - expect(fetchAll.secondCall.args[0]).to.deep.include({ skip: 2, include_count: true }); - - const writeFileStub = FsUtility.prototype.writeFile as sinon.SinonStub; - const written = writeFileStub.firstCall.args[1] as Record>; - expect(Object.keys(written).sort((x, y) => x.localeCompare(y))).to.deep.equal(['a', 'b', 'c']); - }); - }); -}); diff --git a/packages/contentstack-import-setup/package.json b/packages/contentstack-import-setup/package.json index f9aee747e..7fa8ca761 100644 --- a/packages/contentstack-import-setup/package.json +++ b/packages/contentstack-import-setup/package.json @@ -29,7 +29,7 @@ "@types/uuid": "^9.0.8", "@typescript-eslint/eslint-plugin": "^5.62.0", "chai": "^4.5.0", - "eslint": "^8.57.1", + "eslint": "^9.26.0", "eslint-config-oclif": "^6.0.62", "mocha": "^10.8.2", "nyc": "^15.1.0", @@ -83,4 +83,4 @@ } }, "repository": "https://github.com/contentstack/cli" -} \ No newline at end of file +} diff --git a/packages/contentstack-import/package.json b/packages/contentstack-import/package.json index 7d52187f6..dfbfb5ec7 100644 --- a/packages/contentstack-import/package.json +++ b/packages/contentstack-import/package.json @@ -1,7 +1,7 @@ { "name": "@contentstack/cli-cm-import", "description": "Contentstack CLI plugin to import content into stack", - "version": "1.33.0", + "version": "1.32.2", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { @@ -35,7 +35,7 @@ "@types/tar": "^6.1.13", "@types/uuid": "^9.0.8", "@typescript-eslint/eslint-plugin": "^5.62.0", - "eslint": "^8.57.1", + "eslint": "^9.26.0", "eslint-config-oclif": "^6.0.89", "mocha": "^10.8.2", "nyc": "^15.1.0", @@ -94,4 +94,4 @@ } }, "repository": "https://github.com/contentstack/cli" -} \ No newline at end of file +} diff --git a/packages/contentstack-import/src/config/index.ts b/packages/contentstack-import/src/config/index.ts index e8c9e2179..76b70e112 100644 --- a/packages/contentstack-import/src/config/index.ts +++ b/packages/contentstack-import/src/config/index.ts @@ -41,7 +41,6 @@ const config: DefaultConfig = { 'personalize', 'custom-roles', 'workflows', - 'publishing-rules', 'entries', 'variant-entries', 'labels', @@ -89,11 +88,6 @@ const config: DefaultConfig = { fileName: 'workflows.json', invalidKeys: ['stackHeaders', 'urlPath', 'created_at', 'updated_at', 'created_by', 'updated_by'], }, - 'publishing-rules': { - dirName: 'workflows', - fileName: 'publishing-rules.json', - invalidKeys: ['stackHeaders', 'urlPath', 'created_at', 'updated_at', 'created_by', 'updated_by'], - }, assets: { dirName: 'assets', assetBatchLimit: 1, @@ -461,7 +455,5 @@ const config: DefaultConfig = { globalModules: ['webhooks'], entriesPublish: true, }; -export const PUBLISHING_RULES_APPROVERS_SKIP_MSG = - 'Skipping import of publish rule approver(s) (roles/users); reconfigure approvers on the target stack.'; export default config; diff --git a/packages/contentstack-import/src/import/modules/base-class.ts b/packages/contentstack-import/src/import/modules/base-class.ts index 1981f1887..a0eb77075 100644 --- a/packages/contentstack-import/src/import/modules/base-class.ts +++ b/packages/contentstack-import/src/import/modules/base-class.ts @@ -51,8 +51,7 @@ export type ApiModuleType = | 'delete-entries' | 'create-taxonomies' | 'create-terms' - | 'import-taxonomy' - | 'create-publishing-rule'; + | 'import-taxonomy'; export type ApiOptions = { uid?: string; @@ -375,13 +374,6 @@ export default abstract class BaseClass { .create({ workflow: apiData as WorkflowData }) .then(onSuccess) .catch(onReject); - case 'create-publishing-rule': - return this.stack - .workflow() - .publishRule() - .create({ publishing_rule: omit(apiData, ['uid']) as any }) - .then(onSuccess) - .catch(onReject); case 'create-custom-role': return this.stack .role() diff --git a/packages/contentstack-import/src/import/modules/publishing-rules.ts b/packages/contentstack-import/src/import/modules/publishing-rules.ts deleted file mode 100644 index ca7734585..000000000 --- a/packages/contentstack-import/src/import/modules/publishing-rules.ts +++ /dev/null @@ -1,275 +0,0 @@ -import chalk from 'chalk'; -import values from 'lodash/values'; -import isEmpty from 'lodash/isEmpty'; -import { join } from 'node:path'; - -import BaseClass, { ApiOptions } from './base-class'; -import { PUBLISHING_RULES_APPROVERS_SKIP_MSG } from '../../config'; -import { fsUtil, fileHelper, parseErrorPayload, isDuplicatePublishingRuleError } from '../../utils'; -import { log, handleAndLogError } from '@contentstack/cli-utilities'; -import { ModuleClassParams, PublishingRulesConfig } from '../../types'; - -export default class ImportPublishingRules extends BaseClass { - private readonly mapperDirPath: string; - private readonly publishingRulesFolderPath: string; - private readonly publishingRulesUidMapperPath: string; - private readonly createdPublishingRulesPath: string; - private readonly failedPublishingRulesPath: string; - private readonly publishingRulesConfig: PublishingRulesConfig; - private publishingRules: Record; - private publishingRulesUidMapper: Record; - private readonly createdPublishingRules: Record[]; - private readonly failedPublishingRules: Record[]; - private envUidMapper: Record; - private workflowUidMapper: Record; - private readonly stageUidMapper: Record = {}; - - constructor({ importConfig, stackAPIClient }: ModuleClassParams) { - super({ importConfig, stackAPIClient }); - this.importConfig.context.module = 'publishing-rules'; - this.publishingRulesConfig = importConfig.modules['publishing-rules']; - this.mapperDirPath = join(this.importConfig.backupDir, 'mapper', 'publishing-rules'); - this.publishingRulesFolderPath = join(this.importConfig.backupDir, this.publishingRulesConfig.dirName); - this.publishingRulesUidMapperPath = join(this.mapperDirPath, 'uid-mapping.json'); - this.createdPublishingRulesPath = join(this.mapperDirPath, 'success.json'); - this.failedPublishingRulesPath = join(this.mapperDirPath, 'fails.json'); - this.publishingRules = {}; - this.publishingRulesUidMapper = {}; - this.createdPublishingRules = []; - this.failedPublishingRules = []; - this.envUidMapper = {}; - this.workflowUidMapper = {}; - } - - private static collectOldStageUidToName( - exportedWorkflows: Record, - ): Record { - const map: Record = {}; - for (const workflow of Object.values(exportedWorkflows)) { - for (const stage of workflow.workflow_stages ?? []) { - if (stage.uid && stage.name) { - map[stage.uid] = stage.name; - } - } - } - return map; - } - - /** - * Returns `{ noSuccessMsg: true }` if any rule failed, so the import command skips the generic stack success line. - */ - async start(): Promise<{ noSuccessMsg: true } | void> { - const rulesFilePath = join(this.publishingRulesFolderPath, this.publishingRulesConfig.fileName); - - if (!fileHelper.fileExistsSync(rulesFilePath)) { - log.info(`No Publishing Rules found - '${rulesFilePath}'`, this.importConfig.context); - return; - } - - this.publishingRules = (fsUtil.readFile(rulesFilePath, true) as Record) ?? {}; - if (isEmpty(this.publishingRules)) { - log.info('No Publishing Rules found', this.importConfig.context); - return; - } - - await fsUtil.makeDirectory(this.mapperDirPath); - - this.publishingRulesUidMapper = this.readUidMappingFile(this.publishingRulesUidMapperPath); - this.envUidMapper = this.readMapper('environments'); - this.workflowUidMapper = this.readMapper('workflows'); - - await this.buildStageUidMapper(); - await this.importPublishingRules(); - - if (this.createdPublishingRules?.length) { - fsUtil.writeFile(this.createdPublishingRulesPath, this.createdPublishingRules); - } - if (this.failedPublishingRules?.length) { - fsUtil.writeFile(this.failedPublishingRulesPath, this.failedPublishingRules); - } - - const successCount = this.createdPublishingRules.length; - const failCount = this.failedPublishingRules.length; - - if (failCount > 0 && successCount === 0) { - log.error( - `Publishing rules import failed! ${failCount} rule(s) could not be imported. Check '${this.failedPublishingRulesPath}' for details.`, - this.importConfig.context, - ); - } else if (failCount > 0) { - log.warn( - `Publishing rules import completed with errors. Imported: ${successCount}, Failed: ${failCount}. Check '${this.failedPublishingRulesPath}' for details.`, - this.importConfig.context, - ); - } else { - log.success('Publishing rules have been imported successfully!', this.importConfig.context); - } - - if (failCount > 0) { - return { noSuccessMsg: true }; - } - } - - private readUidMappingFile(path: string): Record { - return fileHelper.fileExistsSync(path) ? (fsUtil.readFile(path, true) as Record) ?? {} : {}; - } - - private readMapper(moduleDir: string): Record { - const p = join(this.importConfig.backupDir, 'mapper', moduleDir, 'uid-mapping.json'); - return this.readUidMappingFile(p); - } - - private async importPublishingRules(): Promise { - const apiContent = values(this.publishingRules) as Record[]; - log.debug(`Importing ${apiContent.length} publishing rule(s)`, this.importConfig.context); - - const onSuccess = ({ response, apiData }: { response: { uid: string }; apiData: { uid: string } }) => { - const { uid } = apiData; - this.createdPublishingRules.push(response as unknown as Record); - this.publishingRulesUidMapper[uid] = response.uid; - log.success(`Publishing rule imported successfully (${uid} → ${response.uid})`, this.importConfig.context); - fsUtil.writeFile(this.publishingRulesUidMapperPath, this.publishingRulesUidMapper); - }; - - const onReject = ({ error, apiData }: { error: unknown; apiData: Record }) => { - const uid = apiData.uid as string; - const parsed = parseErrorPayload(error); - - if (isDuplicatePublishingRuleError(parsed, error)) { - log.info(`Publishing rule '${uid}' already exists`, this.importConfig.context); - return; - } - - this.failedPublishingRules.push(apiData); - handleAndLogError( - error as Error, - { ...this.importConfig.context, publishingRuleUid: uid }, - `Publishing rule '${uid}' failed to import`, - ); - }; - - await this.makeConcurrentCall( - { - apiContent, - processName: 'import publishing rules', - apiParams: { - serializeData: this.serializePublishingRules.bind(this), - reject: onReject, - resolve: onSuccess, - entity: 'create-publishing-rule', - includeParamOnCompletion: true, - }, - concurrencyLimit: this.importConfig.fetchConcurrency || 1, - }, - undefined, - false, - ); - } - - private mergeFetchedWorkflowStages( - workflow: { workflow_stages?: { uid?: string; name?: string }[] }, - oldStageUidToName: Record, - ): void { - for (const newStage of workflow.workflow_stages ?? []) { - const oldUid = Object.keys(oldStageUidToName).find((u) => oldStageUidToName[u] === newStage.name); - if (oldUid && newStage.uid) { - this.stageUidMapper[oldUid] = newStage.uid; - } - } - } - - private async buildStageUidMapper(): Promise { - const wf = this.importConfig.modules.workflows as { dirName: string; fileName: string }; - const workflowsFilePath = join(this.importConfig.backupDir, wf.dirName, wf.fileName); - - if (!fileHelper.fileExistsSync(workflowsFilePath)) { - log.debug('No exported workflows file; stage UID mapping skipped', this.importConfig.context); - return; - } - - const exportedWorkflows = fsUtil.readFile(workflowsFilePath, true) as Record< - string, - { workflow_stages?: { uid?: string; name?: string }[] } - > | null; - if (!exportedWorkflows) return; - - const oldStageUidToName = ImportPublishingRules.collectOldStageUidToName(exportedWorkflows); - - for (const newWorkflowUid of Object.values(this.workflowUidMapper)) { - try { - const workflow = await this.stack.workflow(newWorkflowUid as string).fetch(); - this.mergeFetchedWorkflowStages( - workflow as { workflow_stages?: { uid?: string; name?: string }[] }, - oldStageUidToName, - ); - } catch (error: unknown) { - log.debug(`Stage mapping: could not fetch workflow '${newWorkflowUid}'`, this.importConfig.context); - handleAndLogError(error as Error, { ...this.importConfig.context }); - } - } - - log.debug(`Stage UID mapper: ${Object.keys(this.stageUidMapper).length} entr(y/ies)`, this.importConfig.context); - } - - private stripApprovers(rule: Record): void { - if (rule.approvers == null) return; - - const a = rule.approvers as { roles?: unknown[]; users?: unknown[] }; - const hadContent = (Array.isArray(a.roles) && a.roles.length > 0) || (Array.isArray(a.users) && a.users.length > 0); - if (hadContent) { - log.info(chalk.yellow(PUBLISHING_RULES_APPROVERS_SKIP_MSG), this.importConfig.context); - } - rule.approvers = { roles: [], users: [] }; - } - - private remapReference( - rule: Record, - field: 'workflow' | 'environment', - mapper: Record, - ): void { - const current = rule[field] as string | undefined; - if (!current) return; - const mapped = mapper[current] as string | undefined; - if (mapped) { - rule[field] = mapped; - log.debug(`${field} UID remapped`, this.importConfig.context); - } else { - log.debug(`No ${field} mapping for ${current}; leaving as-is`, this.importConfig.context); - } - } - - serializePublishingRules(apiOptions: ApiOptions): ApiOptions { - const rule = apiOptions.apiData as Record; - const ruleUid = rule.uid as string; - - if (ruleUid in this.publishingRulesUidMapper) { - log.info( - `Publishing rule '${ruleUid}' already exists. Skipping it to avoid duplicates!`, - this.importConfig.context, - ); - apiOptions.entity = undefined; - return apiOptions; - } - - const oldUid = ruleUid; - delete rule.uid; - - this.stripApprovers(rule); - this.remapReference(rule, 'workflow', this.workflowUidMapper); - this.remapReference(rule, 'environment', this.envUidMapper); - - if (rule.workflow_stage) { - const stage = rule.workflow_stage as string; - const mappedStage = this.stageUidMapper[stage]; - if (mappedStage) { - rule.workflow_stage = mappedStage; - log.debug('workflow_stage UID remapped', this.importConfig.context); - } else { - log.debug(`No workflow_stage mapping for ${stage}; leaving as-is`, this.importConfig.context); - } - } - - apiOptions.apiData = { ...rule, uid: oldUid }; - return apiOptions; - } -} diff --git a/packages/contentstack-import/src/types/default-config.ts b/packages/contentstack-import/src/types/default-config.ts index e27968b9b..aa4867d29 100644 --- a/packages/contentstack-import/src/types/default-config.ts +++ b/packages/contentstack-import/src/types/default-config.ts @@ -49,11 +49,6 @@ export default interface DefaultConfig { fileName: string; invalidKeys: string[]; }; - 'publishing-rules': { - dirName: string; - fileName: string; - invalidKeys: string[]; - }; assets: { dirName: string; assetBatchLimit: number; diff --git a/packages/contentstack-import/src/types/index.ts b/packages/contentstack-import/src/types/index.ts index 8dac29ffa..ee9062465 100644 --- a/packages/contentstack-import/src/types/index.ts +++ b/packages/contentstack-import/src/types/index.ts @@ -46,7 +46,6 @@ export type Modules = | 'content-types' | 'custom-roles' | 'workflows' - | 'publishing-rules' | 'labels' | 'marketplace-apps' | 'taxonomies' @@ -95,12 +94,6 @@ export interface WorkflowConfig { invalidKeys: string[]; } -export interface PublishingRulesConfig { - dirName: string; - fileName: string; - invalidKeys: string[]; -} - export interface CustomRoleConfig { dirName: string; fileName: string; diff --git a/packages/contentstack-import/src/utils/index.ts b/packages/contentstack-import/src/utils/index.ts index 8232acd5d..fcf452a26 100644 --- a/packages/contentstack-import/src/utils/index.ts +++ b/packages/contentstack-import/src/utils/index.ts @@ -33,4 +33,3 @@ export { export * from './common-helper'; export * from './log'; export { lookUpTaxonomy, lookUpTerms } from './taxonomies-helper'; -export { parseErrorPayload, isDuplicatePublishingRuleError } from './publishing-rules-helper'; diff --git a/packages/contentstack-import/src/utils/publishing-rules-helper.ts b/packages/contentstack-import/src/utils/publishing-rules-helper.ts deleted file mode 100644 index b7f3b44ec..000000000 --- a/packages/contentstack-import/src/utils/publishing-rules-helper.ts +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Helpers for publishing rules import (API error shape, duplicate detection). - */ - -export function parseErrorPayload(error: unknown): { - errors?: Record; - error_message?: string; -} | null { - if (!error || typeof error !== 'object') return null; - const e = error as { message?: string; errors?: Record }; - if (e.errors) return e; - if (e.message && typeof e.message === 'string') { - try { - return JSON.parse(e.message) as { errors?: Record; error_message?: string }; - } catch { - return null; - } - } - return null; -} - -export function isDuplicatePublishingRuleError( - parsed: { errors?: Record; error_message?: string } | null, - raw: unknown, -): boolean { - const errors = parsed?.errors ?? (raw as { errors?: Record })?.errors; - if (errors?.name || errors?.['publishing_rule.name'] || errors?.['publish_rule.name']) { - return true; - } - const msg = parsed?.error_message; - return typeof msg === 'string' && /already exists|duplicate/i.test(msg); -} diff --git a/packages/contentstack-import/test/unit/import/modules/locales.test.ts b/packages/contentstack-import/test/unit/import/modules/locales.test.ts index 1f5da35cf..fc3631e81 100644 --- a/packages/contentstack-import/test/unit/import/modules/locales.test.ts +++ b/packages/contentstack-import/test/unit/import/modules/locales.test.ts @@ -51,11 +51,6 @@ describe('ImportLocales', () => { webhooks: { dirName: 'webhooks', fileName: 'webhooks.json' }, releases: { dirName: 'releases', fileName: 'releases.json', invalidKeys: ['uid'] }, workflows: { dirName: 'workflows', fileName: 'workflows.json', invalidKeys: ['uid'] }, - 'publishing-rules': { - dirName: 'workflows', - fileName: 'publishing-rules.json', - invalidKeys: ['uid'], - }, assets: { dirName: 'assets', assetBatchLimit: 10, diff --git a/packages/contentstack-import/test/unit/import/modules/publishing-rules.test.ts b/packages/contentstack-import/test/unit/import/modules/publishing-rules.test.ts deleted file mode 100644 index 26aa3f4a7..000000000 --- a/packages/contentstack-import/test/unit/import/modules/publishing-rules.test.ts +++ /dev/null @@ -1,333 +0,0 @@ -import { expect } from 'chai'; -import sinon from 'sinon'; -import { join } from 'node:path'; -import ImportPublishingRules from '../../../../src/import/modules/publishing-rules'; -import { ImportConfig } from '../../../../src/types'; -describe('ImportPublishingRules', () => { - const BACKUP = '/test/backup'; - const rulesFile = join(BACKUP, 'workflows', 'publishing-rules.json'); - const workflowsExportFile = join(BACKUP, 'workflows', 'workflows.json'); - const workflowMapperFile = join(BACKUP, 'mapper', 'workflows', 'uid-mapping.json'); - const envMapperFile = join(BACKUP, 'mapper', 'environments', 'uid-mapping.json'); - const publishingMapperFile = join(BACKUP, 'mapper', 'publishing-rules', 'uid-mapping.json'); - - let importPublishingRules: ImportPublishingRules; - let mockStackClient: any; - let mockImportConfig: ImportConfig; - let fsUtilStub: any; - let fileHelperStub: any; - let makeConcurrentCallStub: sinon.SinonStub; - let logStub: { info: sinon.SinonStub; debug: sinon.SinonStub; success: sinon.SinonStub; error: sinon.SinonStub; warn: sinon.SinonStub }; - beforeEach(() => { - fsUtilStub = { - readFile: sinon.stub(), - writeFile: sinon.stub(), - makeDirectory: sinon.stub().resolves(), - }; - - fileHelperStub = { - fileExistsSync: sinon.stub(), - }; - - sinon.replace(require('../../../../src/utils'), 'fileHelper', fileHelperStub); - sinon.replaceGetter(require('../../../../src/utils'), 'fsUtil', () => fsUtilStub); - - const fetchWorkflowStub = sinon.stub().resolves({ - workflow_stages: [{ uid: 'stage-new', name: 'Review' }], - }); - mockStackClient = { - workflow: sinon.stub().returns({ - fetch: fetchWorkflowStub, - }), - }; - - mockImportConfig = { - apiKey: 'test', - backupDir: BACKUP, - data: '/test/content', - contentVersion: 1, - region: 'us', - fetchConcurrency: 2, - context: { - command: 'cm:stacks:import', - module: 'publishing-rules', - userId: 'user-123', - email: 'test@example.com', - sessionId: 'session-123', - apiKey: 'test', - orgId: 'org-123', - authenticationMethod: 'Basic Auth', - }, - modules: { - workflows: { - dirName: 'workflows', - fileName: 'workflows.json', - invalidKeys: ['uid'], - }, - 'publishing-rules': { - dirName: 'workflows', - fileName: 'publishing-rules.json', - invalidKeys: ['uid'], - }, - }, - } as any; - - importPublishingRules = new ImportPublishingRules({ - importConfig: mockImportConfig as any, - stackAPIClient: mockStackClient, - moduleName: 'publishing-rules', - }); - - makeConcurrentCallStub = sinon.stub(importPublishingRules as any, 'makeConcurrentCall').resolves(); - - const cliUtilities = require('@contentstack/cli-utilities'); - logStub = { - info: sinon.stub(), - debug: sinon.stub(), - success: sinon.stub(), - error: sinon.stub(), - warn: sinon.stub(), - }; - sinon.stub(cliUtilities, 'log').value(logStub); - }); - - afterEach(() => { - sinon.restore(); - }); - - describe('Constructor', () => { - it('sets context.module to publishing-rules and derives exact paths from backupDir and config', () => { - expect(mockImportConfig.context.module).to.equal('publishing-rules'); - expect(importPublishingRules['mapperDirPath']).to.equal(join(BACKUP, 'mapper', 'publishing-rules')); - expect(importPublishingRules['publishingRulesFolderPath']).to.equal(join(BACKUP, 'workflows')); - expect(importPublishingRules['publishingRulesUidMapperPath']).to.equal(publishingMapperFile); - expect(importPublishingRules['createdPublishingRulesPath']).to.equal( - join(BACKUP, 'mapper', 'publishing-rules', 'success.json'), - ); - expect(importPublishingRules['failedPublishingRulesPath']).to.equal( - join(BACKUP, 'mapper', 'publishing-rules', 'fails.json'), - ); - }); - - it('initializes empty rules, mappers, and result arrays', () => { - expect(importPublishingRules['publishingRules']).to.deep.equal({}); - expect(importPublishingRules['publishingRulesUidMapper']).to.deep.equal({}); - expect(importPublishingRules['createdPublishingRules']).to.deep.equal([]); - expect(importPublishingRules['failedPublishingRules']).to.deep.equal([]); - expect(importPublishingRules['envUidMapper']).to.deep.equal({}); - expect(importPublishingRules['workflowUidMapper']).to.deep.equal({}); - expect(importPublishingRules['stageUidMapper']).to.deep.equal({}); - }); - }); - - describe('start()', () => { - it('returns undefined and logs missing file path when rules file does not exist', async () => { - fileHelperStub.fileExistsSync.withArgs(rulesFile).returns(false); - - const result = await importPublishingRules.start(); - - expect(result).to.equal(undefined); - expect(makeConcurrentCallStub.called).to.be.false; - expect(logStub.info.firstCall.args[0]).to.include(rulesFile); - }); - - it('returns undefined when rules file exists but payload is empty; arrays stay empty', async () => { - fileHelperStub.fileExistsSync.withArgs(rulesFile).returns(true); - fsUtilStub.readFile.withArgs(rulesFile, true).returns({}); - - const result = await importPublishingRules.start(); - - expect(result).to.equal(undefined); - expect(makeConcurrentCallStub.called).to.be.false; - expect(importPublishingRules['createdPublishingRules']).to.deep.equal([]); - expect(importPublishingRules['failedPublishingRules']).to.deep.equal([]); - }); - - it('passes one apiContent item per rule and binds serializeData to serializePublishingRules', async () => { - const rules = { - r1: { uid: 'r1', name: 'Rule 1' }, - r2: { uid: 'r2', name: 'Rule 2' }, - }; - fileHelperStub.fileExistsSync.callsFake((p: string) => { - if (p === rulesFile) return true; - if (p === workflowsExportFile || p === workflowMapperFile || p === envMapperFile || p === publishingMapperFile) { - return false; - } - return false; - }); - fsUtilStub.readFile.callsFake((p: string) => { - if (p === rulesFile) return rules; - return {}; - }); - - await importPublishingRules.start(); - - expect(makeConcurrentCallStub.calledOnce).to.be.true; - const callArgs = makeConcurrentCallStub.firstCall.args[0]; - expect(callArgs.apiContent).to.have.length(2); - expect(callArgs.processName).to.equal('import publishing rules'); - expect(callArgs.apiParams.entity).to.equal('create-publishing-rule'); - const serialized = callArgs.apiParams.serializeData({ - apiData: { uid: 'r1', name: 'Rule 1' }, - entity: 'create-publishing-rule', - }); - expect(serialized.apiData).to.deep.include({ name: 'Rule 1', uid: 'r1' }); - expect(serialized.entity).to.equal('create-publishing-rule'); - }); - - it('builds stageUidMapper from exported workflows and fetched target workflow stages by name', async () => { - fileHelperStub.fileExistsSync.callsFake((p: string) => { - if (p === rulesFile) return true; - if (p === workflowsExportFile) return true; - if (p === workflowMapperFile) return true; - if (p === envMapperFile || p === publishingMapperFile) return false; - return false; - }); - fsUtilStub.readFile.callsFake((p: string) => { - if (p === rulesFile) return { r1: { uid: 'r1', name: 'R' } }; - if (p === workflowsExportFile) { - return { - expWf: { workflow_stages: [{ uid: 'stage-old', name: 'Review' }] }, - }; - } - if (p === workflowMapperFile) return { oldWf: 'newWf' }; - return {}; - }); - - await importPublishingRules.start(); - - expect(importPublishingRules['stageUidMapper']).to.deep.equal({ 'stage-old': 'stage-new' }); - expect(mockStackClient.workflow.calledWith('newWf')).to.be.true; - }); - - it('returns { noSuccessMsg: true } when a rule fails to import (non-duplicate error)', async () => { - fileHelperStub.fileExistsSync.callsFake((p: string) => p === rulesFile); - fsUtilStub.readFile.callsFake((p: string) => (p === rulesFile ? { r1: { uid: 'r1', name: 'R' } } : {})); - - makeConcurrentCallStub.callsFake(async (env: any) => { - const { apiParams, apiContent } = env; - for (const element of apiContent) { - apiParams.apiData = element; - let opts = { ...apiParams, apiData: { ...element } }; - opts = apiParams.serializeData(opts); - if (opts.entity) { - await apiParams.reject({ error: new Error('network'), apiData: opts.apiData }); - } - } - }); - - const result = await importPublishingRules.start(); - - expect(result).to.deep.equal({ noSuccessMsg: true }); - expect(importPublishingRules['failedPublishingRules']).to.have.length(1); - expect(importPublishingRules['failedPublishingRules'][0].uid).to.equal('r1'); - expect(String(logStub.error.firstCall?.args[0] ?? '')).to.include('could not be imported'); - }); - - it('returns undefined when import succeeds with no failures', async () => { - fileHelperStub.fileExistsSync.callsFake((p: string) => p === rulesFile); - fsUtilStub.readFile.callsFake((p: string) => (p === rulesFile ? { r1: { uid: 'r1', name: 'R' } } : {})); - - makeConcurrentCallStub.callsFake(async (env: any) => { - const { apiParams, apiContent } = env; - for (const element of apiContent) { - apiParams.apiData = element; - let opts = { ...apiParams, apiData: { ...element } }; - opts = apiParams.serializeData(opts); - if (opts.entity) { - await apiParams.resolve({ response: { uid: 'new-r1' }, apiData: opts.apiData }); - } - } - }); - - const result = await importPublishingRules.start(); - - expect(result).to.equal(undefined); - expect(importPublishingRules['failedPublishingRules']).to.deep.equal([]); - expect(importPublishingRules['publishingRulesUidMapper']).to.deep.equal({ r1: 'new-r1' }); - expect(logStub.success.calledWith('Publishing rules have been imported successfully!', mockImportConfig.context)).to.be - .true; - }); - }); - - describe('serializePublishingRules', () => { - it('clears entity when rule uid already in mapper; leaves apiData.uid unchanged', () => { - importPublishingRules['publishingRulesUidMapper'] = { 'rule-1': 'mapped-1' }; - - const apiOptions: any = { - apiData: { uid: 'rule-1', name: 'N' }, - entity: 'create-publishing-rule', - }; - - const out = importPublishingRules.serializePublishingRules(apiOptions); - - expect(out.entity).to.equal(undefined); - expect(out.apiData).to.deep.equal({ uid: 'rule-1', name: 'N' }); - expect(String(logStub.info.firstCall?.args[0] ?? '')).to.match(/already exists\. Skipping/); - }); - - it('remaps workflow, environment, workflow_stage and strips approvers; apiData carries uid for completion handler', () => { - const pr = importPublishingRules as any; - pr.workflowUidMapper = { wfOld: 'wfNew' }; - pr.envUidMapper = { envOld: 'envNew' }; - Object.keys(pr.stageUidMapper).forEach((k) => delete pr.stageUidMapper[k]); - pr.stageUidMapper.stOld = 'stNew'; - - const apiOptions: any = { - apiData: { - uid: 'pr-1', - name: 'PR', - workflow: 'wfOld', - environment: 'envOld', - workflow_stage: 'stOld', - approvers: { roles: ['r1'], users: ['u1'] }, - }, - entity: 'create-publishing-rule', - }; - - const out = importPublishingRules.serializePublishingRules(apiOptions); - - expect(out.entity).to.equal('create-publishing-rule'); - expect(out.apiData).to.deep.equal({ - uid: 'pr-1', - name: 'PR', - workflow: 'wfNew', - environment: 'envNew', - workflow_stage: 'stNew', - approvers: { roles: [], users: [] }, - }); - const infoArgs = logStub.info.getCalls().map((c) => c.args[0]); - expect(infoArgs.some((msg) => String(msg).includes('Skipping import of publish rule approver'))).to.be.true; - }); - }); - - describe('importPublishingRules callbacks', () => { - beforeEach(() => { - importPublishingRules['publishingRules'] = { r1: { uid: 'r1', name: 'R' } }; - }); - - it('onSuccess updates mapper and persists uid-mapping.json with expected payload', async () => { - await (importPublishingRules as any).importPublishingRules(); - - const onSuccess = makeConcurrentCallStub.firstCall.args[0].apiParams.resolve; - await onSuccess({ response: { uid: 'created-uid', name: 'R' }, apiData: { uid: 'r1', name: 'R' } }); - - expect(importPublishingRules['createdPublishingRules']).to.deep.equal([{ uid: 'created-uid', name: 'R' }]); - expect(importPublishingRules['publishingRulesUidMapper']).to.deep.equal({ r1: 'created-uid' }); - expect(fsUtilStub.writeFile.calledWith(publishingMapperFile, { r1: 'created-uid' })).to.be.true; - }); - - it('onReject for duplicate error does not append to failedPublishingRules', async () => { - await (importPublishingRules as any).importPublishingRules(); - - const onReject = makeConcurrentCallStub.firstCall.args[0].apiParams.reject; - await onReject({ - error: { errors: { name: 'taken' } }, - apiData: { uid: 'r1', name: 'R' }, - }); - - expect(importPublishingRules['failedPublishingRules']).to.deep.equal([]); - expect(logStub.info.calledWith(`Publishing rule 'r1' already exists`, mockImportConfig.context)).to.be.true; - }); - }); -}); diff --git a/packages/contentstack-import/test/unit/utils/extension-helper.test.ts b/packages/contentstack-import/test/unit/utils/extension-helper.test.ts index fa537a84e..c9b567218 100644 --- a/packages/contentstack-import/test/unit/utils/extension-helper.test.ts +++ b/packages/contentstack-import/test/unit/utils/extension-helper.test.ts @@ -54,11 +54,6 @@ describe('Extension Helper', () => { webhooks: { dirName: 'webhooks', fileName: 'webhooks.json' }, releases: { dirName: 'releases', fileName: 'releases.json', invalidKeys: ['uid'] }, workflows: { dirName: 'workflows', fileName: 'workflows.json', invalidKeys: ['uid'] }, - 'publishing-rules': { - dirName: 'workflows', - fileName: 'publishing-rules.json', - invalidKeys: ['uid'], - }, assets: { dirName: 'assets', assetBatchLimit: 10, diff --git a/packages/contentstack-import/test/unit/utils/publishing-rules-helper.test.ts b/packages/contentstack-import/test/unit/utils/publishing-rules-helper.test.ts deleted file mode 100644 index 1453b68eb..000000000 --- a/packages/contentstack-import/test/unit/utils/publishing-rules-helper.test.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { expect } from 'chai'; -import { parseErrorPayload, isDuplicatePublishingRuleError } from '../../../src/utils/publishing-rules-helper'; - -describe('publishing-rules-helper', () => { - describe('parseErrorPayload', () => { - it('returns the object when error has errors', () => { - const err = { errors: { name: 'taken' } }; - expect(parseErrorPayload(err)).to.deep.equal({ errors: { name: 'taken' } }); - }); - - it('parses JSON from message string', () => { - const err = { message: JSON.stringify({ error_message: 'already exists' }) }; - expect(parseErrorPayload(err)).to.deep.equal({ error_message: 'already exists' }); - }); - - it('returns null for invalid JSON in message', () => { - expect(parseErrorPayload({ message: 'not-json{' })).to.equal(null); - }); - - it('returns null for non-object', () => { - expect(parseErrorPayload(null)).to.equal(null); - expect(parseErrorPayload('x')).to.equal(null); - }); - - it('returns null when object has no errors or parseable message', () => { - expect(parseErrorPayload({ foo: 1 })).to.equal(null); - }); - }); - - describe('isDuplicatePublishingRuleError', () => { - it('returns true when errors.name is set', () => { - expect(isDuplicatePublishingRuleError({ errors: { name: 'x' } }, {})).to.equal(true); - }); - - it('returns true when errors.publishing_rule.name is set', () => { - expect(isDuplicatePublishingRuleError({ errors: { 'publishing_rule.name': 'x' } }, {})).to.equal(true); - }); - - it('returns true when errors.publish_rule.name is set', () => { - expect(isDuplicatePublishingRuleError({ errors: { 'publish_rule.name': 'x' } }, {})).to.equal(true); - }); - - it('returns true when error_message matches duplicate wording', () => { - expect(isDuplicatePublishingRuleError({ error_message: 'Rule already exists' }, {})).to.equal(true); - }); - - it('reads errors from raw when parsed is null', () => { - const raw = { errors: { name: 'dup' } }; - expect(isDuplicatePublishingRuleError(null, raw)).to.equal(true); - }); - - it('returns false when no duplicate signals', () => { - expect(isDuplicatePublishingRuleError({ errors: { other: 'x' } }, {})).to.equal(false); - expect(isDuplicatePublishingRuleError({ error_message: 'timeout' }, {})).to.equal(false); - }); - }); -}); diff --git a/packages/contentstack-migration/README.md b/packages/contentstack-migration/README.md index 9279c9636..544e4e420 100644 --- a/packages/contentstack-migration/README.md +++ b/packages/contentstack-migration/README.md @@ -21,7 +21,7 @@ $ npm install -g @contentstack/cli-migration $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-migration/1.12.0 darwin-arm64 node-v24.14.0 +@contentstack/cli-migration/1.12.1 darwin-arm64 node-v24.14.0 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-migration/package.json b/packages/contentstack-migration/package.json index efc8d9688..df3c193c2 100644 --- a/packages/contentstack-migration/package.json +++ b/packages/contentstack-migration/package.json @@ -21,7 +21,7 @@ "@types/mocha": "^8.2.3", "@types/node": "^14.18.63", "chai": "^4.5.0", - "eslint": "^8.57.1", + "eslint": "^9.26.0", "eslint-config-oclif": "^6.0.62", "jsdoc-to-markdown": "^8.0.3", "mocha": "^10.8.2", @@ -74,4 +74,4 @@ "cm:migration": "O-MGRTN" } } -} \ No newline at end of file +} diff --git a/packages/contentstack-seed/package.json b/packages/contentstack-seed/package.json index 26401c0da..2f5152349 100644 --- a/packages/contentstack-seed/package.json +++ b/packages/contentstack-seed/package.json @@ -1,11 +1,11 @@ { "name": "@contentstack/cli-cm-seed", "description": "create a Stack from existing content types, entries, assets, etc.", - "version": "1.15.2", + "version": "1.15.1", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { - "@contentstack/cli-cm-import": "~1.33.0", + "@contentstack/cli-cm-import": "~1.32.1", "@contentstack/cli-command": "~1.8.1", "@contentstack/cli-utilities": "~1.18.2", "inquirer": "8.2.7", @@ -21,7 +21,7 @@ "@types/tar": "^6.1.13", "@types/tmp": "^0.2.6", "axios": "^1.15.0", - "eslint": "^8.57.1", + "eslint": "^9.26.0", "eslint-config-oclif": "^6.0.137", "eslint-config-oclif-typescript": "^3.1.14", "jest": "^29.7.0", @@ -71,4 +71,4 @@ "compile": "tsc -b tsconfig.json", "build": "pnpm compile && oclif manifest && oclif readme" } -} \ No newline at end of file +} diff --git a/packages/contentstack-variants/package.json b/packages/contentstack-variants/package.json index fe5cadb48..14639db2c 100644 --- a/packages/contentstack-variants/package.json +++ b/packages/contentstack-variants/package.json @@ -1,6 +1,6 @@ { "name": "@contentstack/cli-variants", - "version": "1.4.3", + "version": "1.4.2", "description": "Variants plugin", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/contentstack-variants/src/types/export-config.ts b/packages/contentstack-variants/src/types/export-config.ts index 8b782c2b0..f9336bc96 100644 --- a/packages/contentstack-variants/src/types/export-config.ts +++ b/packages/contentstack-variants/src/types/export-config.ts @@ -17,7 +17,6 @@ export type Modules = | 'content-types' | 'custom-roles' | 'workflows' - | 'publishing-rules' | 'labels' | 'marketplace-apps' | 'taxonomies' @@ -89,13 +88,6 @@ export interface DefaultConfig { invalidKeys: string[]; dependencies?: Modules[]; }; - 'publishing-rules': { - dirName: string; - fileName: string; - invalidKeys: string[]; - dependencies?: Modules[]; - limit?: number; - }; globalfields: { dirName: string; fileName: string; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 271b811a8..ed51f9790 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,10 +29,10 @@ importers: version: 1.18.2(@types/node@20.19.39) '@oclif/core': specifier: ^4.10.5 - version: 4.10.5 + version: 4.10.6 '@oclif/plugin-help': specifier: ^6.2.28 - version: 6.2.44 + version: 6.2.45 chalk: specifier: ^4.1.2 version: 4.1.2 @@ -54,7 +54,7 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.18 - version: 4.1.18(@oclif/core@4.10.5) + version: 4.1.18(@oclif/core@4.10.6) '@types/chai': specifier: ^4.3.20 version: 4.3.20 @@ -74,14 +74,14 @@ importers: specifier: ^4.5.0 version: 4.5.0 eslint: - specifier: ^8.57.1 - version: 8.57.1 + specifier: ^9.26.0 + version: 9.39.4 eslint-config-oclif: specifier: ^6.0.62 - version: 6.0.159(eslint@8.57.1)(typescript@5.9.3) + version: 6.0.160(eslint@9.39.4)(typescript@5.9.3) eslint-config-oclif-typescript: specifier: ^3.1.14 - version: 3.1.14(eslint@8.57.1)(typescript@5.9.3) + version: 3.1.14(eslint@9.39.4)(typescript@5.9.3) mocha: specifier: ^10.8.2 version: 10.8.2 @@ -107,7 +107,7 @@ importers: packages/contentstack-bootstrap: dependencies: '@contentstack/cli-cm-seed': - specifier: ~1.15.2 + specifier: ~1.15.1 version: link:../contentstack-seed '@contentstack/cli-command': specifier: ~1.8.1 @@ -120,10 +120,10 @@ importers: version: 1.18.2(@types/node@14.18.63)(debug@4.4.3) '@oclif/core': specifier: ^4.10.5 - version: 4.10.5 + version: 4.10.6 '@oclif/plugin-help': specifier: ^6.2.37 - version: 6.2.44 + version: 6.2.45 inquirer: specifier: 8.2.7 version: 8.2.7(@types/node@14.18.63) @@ -136,7 +136,7 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.18 - version: 4.1.18(@oclif/core@4.10.5) + version: 4.1.18(@oclif/core@4.10.6) '@types/inquirer': specifier: ^9.0.8 version: 9.0.9 @@ -153,14 +153,14 @@ importers: specifier: ^4.5.0 version: 4.5.0 eslint: - specifier: ^8.57.1 - version: 8.57.1 + specifier: ^9.26.0 + version: 9.39.4 eslint-config-oclif: specifier: ^6.0.62 - version: 6.0.159(eslint@8.57.1)(typescript@4.9.5) + version: 6.0.160(eslint@9.39.4)(typescript@4.9.5) eslint-config-oclif-typescript: specifier: ^3.1.14 - version: 3.1.14(eslint@8.57.1)(typescript@4.9.5) + version: 3.1.14(eslint@9.39.4)(typescript@4.9.5) mocha: specifier: 10.8.2 version: 10.8.2 @@ -190,10 +190,10 @@ importers: version: 1.18.2(@types/node@22.19.17) '@oclif/core': specifier: ^4.10.5 - version: 4.10.5 + version: 4.10.6 '@oclif/plugin-help': specifier: ^6.2.28 - version: 6.2.44 + version: 6.2.45 chalk: specifier: ^4.1.2 version: 4.1.2 @@ -220,11 +220,11 @@ importers: specifier: ^9.0.0 version: 9.0.0 eslint: - specifier: ^8.57.1 - version: 8.57.1 + specifier: ^9.26.0 + version: 9.39.4 eslint-config-oclif: specifier: ^6.0.62 - version: 6.0.159(eslint@8.57.1)(typescript@4.9.5) + version: 6.0.160(eslint@9.39.4)(typescript@4.9.5) mocha: specifier: 10.8.2 version: 10.8.2 @@ -257,10 +257,10 @@ importers: version: 1.18.2(@types/node@22.19.17) '@oclif/core': specifier: ^4.10.5 - version: 4.10.5 + version: 4.10.6 '@oclif/plugin-help': specifier: ^6.2.44 - version: 6.2.44 + version: 6.2.45 chalk: specifier: ^4.1.2 version: 4.1.2 @@ -279,16 +279,16 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.18 - version: 4.1.18(@oclif/core@4.10.5) + version: 4.1.18(@oclif/core@4.10.6) chai: specifier: ^4.5.0 version: 4.5.0 eslint: - specifier: ^8.57.1 - version: 8.57.1 + specifier: ^9.26.0 + version: 9.39.4 eslint-config-oclif: specifier: ^6.0.62 - version: 6.0.159(eslint@8.57.1)(typescript@5.9.3) + version: 6.0.160(eslint@9.39.4)(typescript@5.9.3) mocha: specifier: ^10.8.2 version: 10.8.2 @@ -305,10 +305,10 @@ importers: specifier: ^1.6.0 version: 1.6.0 '@contentstack/cli-cm-export': - specifier: ~1.25.0 + specifier: ~1.24.2 version: link:../contentstack-export '@contentstack/cli-cm-import': - specifier: ~1.33.0 + specifier: ~1.32.2 version: link:../contentstack-import '@contentstack/cli-command': specifier: ~1.8.1 @@ -318,10 +318,10 @@ importers: version: 1.18.2(@types/node@14.18.63)(debug@4.4.3) '@oclif/core': specifier: ^4.10.5 - version: 4.10.5 + version: 4.10.6 '@oclif/plugin-help': specifier: ^6.2.28 - version: 6.2.44 + version: 6.2.45 chalk: specifier: ^4.1.2 version: 4.1.2 @@ -346,7 +346,7 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.18 - version: 4.1.18(@oclif/core@4.10.5) + version: 4.1.18(@oclif/core@4.10.6) '@types/chai': specifier: ^4.3.0 version: 4.3.20 @@ -361,16 +361,16 @@ importers: version: 10.0.20 '@typescript-eslint/eslint-plugin': specifier: ^5.62.0 - version: 5.62.0(@typescript-eslint/parser@8.59.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5) + version: 5.62.0(@typescript-eslint/parser@8.59.0(eslint@9.39.4)(typescript@4.9.5))(eslint@9.39.4)(typescript@4.9.5) chai: specifier: ^4.5.0 version: 4.5.0 eslint: - specifier: ^8.57.1 - version: 8.57.1 + specifier: ^9.26.0 + version: 9.39.4 eslint-config-oclif: specifier: ^6.0.62 - version: 6.0.159(eslint@8.57.1)(typescript@4.9.5) + version: 6.0.160(eslint@9.39.4)(typescript@4.9.5) mocha: specifier: ^10.8.2 version: 10.8.2 @@ -403,7 +403,7 @@ importers: version: link:../contentstack-variants '@oclif/core': specifier: ^4.10.5 - version: 4.10.5 + version: 4.10.6 async: specifier: ^3.2.6 version: 3.2.6 @@ -446,10 +446,10 @@ importers: version: 1.3.1 '@oclif/plugin-help': specifier: ^6.2.28 - version: 6.2.44 + version: 6.2.45 '@oclif/test': specifier: ^4.1.18 - version: 4.1.18(@oclif/core@4.10.5) + version: 4.1.18(@oclif/core@4.10.6) '@types/big-json': specifier: ^3.2.5 version: 3.2.5 @@ -478,11 +478,11 @@ importers: specifier: ^9.0.0 version: 9.0.0 eslint: - specifier: ^8.57.1 - version: 8.57.1 + specifier: ^9.26.0 + version: 9.39.4 eslint-config-oclif: specifier: ^6.0.68 - version: 6.0.159(eslint@8.57.1)(typescript@4.9.5) + version: 6.0.160(eslint@9.39.4)(typescript@4.9.5) mocha: specifier: 10.8.2 version: 10.8.2 @@ -515,10 +515,10 @@ importers: version: 1.18.2(@types/node@20.19.39) '@oclif/core': specifier: ^4.10.5 - version: 4.10.5 + version: 4.10.6 '@oclif/plugin-help': specifier: ^6.2.32 - version: 6.2.44 + version: 6.2.45 fast-csv: specifier: ^4.3.6 version: 4.3.6 @@ -534,7 +534,7 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.18 - version: 4.1.18(@oclif/core@4.10.5) + version: 4.1.18(@oclif/core@4.10.6) '@types/chai': specifier: ^4.3.20 version: 4.3.20 @@ -554,14 +554,14 @@ importers: specifier: ^4.5.0 version: 4.5.0 eslint: - specifier: ^8.57.1 - version: 8.57.1 + specifier: ^9.26.0 + version: 9.39.4 eslint-config-oclif: specifier: ^6.0.62 - version: 6.0.159(eslint@8.57.1)(typescript@5.9.3) + version: 6.0.160(eslint@9.39.4)(typescript@5.9.3) eslint-config-oclif-typescript: specifier: ^3.1.14 - version: 3.1.14(eslint@8.57.1)(typescript@5.9.3) + version: 3.1.14(eslint@9.39.4)(typescript@5.9.3) mocha: specifier: ^10.8.2 version: 10.8.2 @@ -600,7 +600,7 @@ importers: version: link:../contentstack-variants '@oclif/core': specifier: ^4.10.5 - version: 4.10.5 + version: 4.10.6 big-json: specifier: ^3.2.0 version: 3.2.0 @@ -640,7 +640,7 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.18 - version: 4.1.18(@oclif/core@4.10.5) + version: 4.1.18(@oclif/core@4.10.6) '@types/big-json': specifier: ^3.2.5 version: 3.2.5 @@ -670,13 +670,13 @@ importers: version: 9.0.8 '@typescript-eslint/eslint-plugin': specifier: ^5.62.0 - version: 5.62.0(@typescript-eslint/parser@8.59.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5) + version: 5.62.0(@typescript-eslint/parser@8.59.0(eslint@9.39.4)(typescript@4.9.5))(eslint@9.39.4)(typescript@4.9.5) eslint: - specifier: ^8.57.1 - version: 8.57.1 + specifier: ^9.26.0 + version: 9.39.4 eslint-config-oclif: specifier: ^6.0.89 - version: 6.0.159(eslint@8.57.1)(typescript@4.9.5) + version: 6.0.160(eslint@9.39.4)(typescript@4.9.5) mocha: specifier: ^10.8.2 version: 10.8.2 @@ -706,7 +706,7 @@ importers: version: 1.18.2(@types/node@14.18.63)(debug@4.4.3) '@oclif/core': specifier: ^4.10.5 - version: 4.10.5 + version: 4.10.6 big-json: specifier: ^3.2.0 version: 3.2.0 @@ -761,16 +761,16 @@ importers: version: 9.0.8 '@typescript-eslint/eslint-plugin': specifier: ^5.62.0 - version: 5.62.0(@typescript-eslint/parser@8.59.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5) + version: 5.62.0(@typescript-eslint/parser@8.59.0(eslint@9.39.4)(typescript@4.9.5))(eslint@9.39.4)(typescript@4.9.5) chai: specifier: ^4.5.0 version: 4.5.0 eslint: - specifier: ^8.57.1 - version: 8.57.1 + specifier: ^9.26.0 + version: 9.39.4 eslint-config-oclif: specifier: ^6.0.62 - version: 6.0.159(eslint@8.57.1)(typescript@4.9.5) + version: 6.0.160(eslint@9.39.4)(typescript@4.9.5) mocha: specifier: ^10.8.2 version: 10.8.2 @@ -803,10 +803,10 @@ importers: version: 1.18.2(@types/node@14.18.63)(debug@4.4.3) '@oclif/core': specifier: ^4.10.5 - version: 4.10.5 + version: 4.10.6 '@oclif/plugin-help': specifier: ^6.2.44 - version: 6.2.44 + version: 6.2.45 async: specifier: ^3.2.6 version: 3.2.6 @@ -831,7 +831,7 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.18 - version: 4.1.18(@oclif/core@4.10.5) + version: 4.1.18(@oclif/core@4.10.6) '@types/mocha': specifier: ^8.2.3 version: 8.2.3 @@ -842,11 +842,11 @@ importers: specifier: ^4.5.0 version: 4.5.0 eslint: - specifier: ^8.57.1 - version: 8.57.1 + specifier: ^9.26.0 + version: 9.39.4 eslint-config-oclif: specifier: ^6.0.62 - version: 6.0.159(eslint@8.57.1)(typescript@4.9.5) + version: 6.0.160(eslint@9.39.4)(typescript@4.9.5) jsdoc-to-markdown: specifier: ^8.0.3 version: 8.0.3 @@ -878,7 +878,7 @@ importers: packages/contentstack-seed: dependencies: '@contentstack/cli-cm-import': - specifier: ~1.33.0 + specifier: ~1.32.1 version: link:../contentstack-import '@contentstack/cli-command': specifier: ~1.8.1 @@ -921,14 +921,14 @@ importers: specifier: 1.15.2 version: 1.15.2(debug@4.4.3) eslint: - specifier: ^8.57.1 - version: 8.57.1 + specifier: ^9.26.0 + version: 9.39.4 eslint-config-oclif: specifier: ^6.0.137 - version: 6.0.159(eslint@8.57.1)(typescript@4.9.5) + version: 6.0.160(eslint@9.39.4)(typescript@4.9.5) eslint-config-oclif-typescript: specifier: ^3.1.14 - version: 3.1.14(eslint@8.57.1)(typescript@4.9.5) + version: 3.1.14(eslint@9.39.4)(typescript@4.9.5) jest: specifier: ^29.7.0 version: 29.7.0(@types/node@14.18.63)(ts-node@8.10.2(typescript@4.9.5)) @@ -952,10 +952,10 @@ importers: version: 1.18.2(@types/node@20.19.39) '@oclif/core': specifier: ^4.10.5 - version: 4.10.5 + version: 4.10.6 '@oclif/plugin-help': specifier: ^6.2.44 - version: 6.2.44 + version: 6.2.45 lodash: specifier: ^4.18.1 version: 4.18.1 @@ -971,7 +971,7 @@ importers: version: 1.3.1 '@oclif/test': specifier: ^4.1.18 - version: 4.1.18(@oclif/core@4.10.5) + version: 4.1.18(@oclif/core@4.10.6) '@types/node': specifier: ^20.19.39 version: 20.19.39 @@ -1344,8 +1344,8 @@ packages: '@contentstack/cli-utilities@1.18.2': resolution: {integrity: sha512-FgfIXgpFTOePa9V6obnKJDhJcpcn4Jr1wCz5n3owsnzkxiMpR3BPyXQBh1CCatcdj5a/HICEmppDqfPbFkEikw==} - '@contentstack/management@1.30.1': - resolution: {integrity: sha512-rwceQJ78/yRORDwlq+vO5ge5C02YIfiHvCPxpJXA/UJwHTuwehkMH6wQzFdBHnWItQU+ymT4oN9lX1uA31V52A==} + '@contentstack/management@1.30.2': + resolution: {integrity: sha512-DPr/4N35dbclU/PAugB3PGom5MSxYOqicIgP7TPnOlO6TY7r76VIPiycu8yXck71RH+Dmeni1+cMwMlIfzrYOQ==} engines: {node: '>=8.0.0'} '@contentstack/marketplace-sdk@1.5.1': @@ -1577,18 +1577,10 @@ packages: resolution: {integrity: sha512-pHoYRWS08oeU0qVez1pZCcbqHzoJnM5VMtrxH2nWDJ0ukq9DkwWV1BTY+PWK+eWBbndN9W0O9WjJTyAHsDoPOg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/eslintrc@3.3.5': resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@8.57.1': - resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/js@9.39.4': resolution: {integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1627,11 +1619,6 @@ packages: resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} engines: {node: '>=18.18.0'} - '@humanwhocodes/config-array@0.13.0': - resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead - '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} @@ -1640,10 +1627,6 @@ packages: resolution: {integrity: sha512-KWiFQpSAqEIyrTXko3hFNLeQvSK8zXlJQzhhxsyVn58WFRYXST99b3Nqnu+ttOtjds2Pl2grUHGpe2NzhPynuQ==} engines: {node: '>=18'} - '@humanwhocodes/object-schema@2.0.3': - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead - '@humanwhocodes/retry@0.4.3': resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} @@ -1933,24 +1916,24 @@ packages: resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} engines: {node: '>=12.4.0'} - '@oclif/core@4.10.5': - resolution: {integrity: sha512-qcdCF7NrdWPfme6Kr34wwljRCXbCVpL1WVxiNy0Ep6vbWKjxAjFQwuhqkoyL0yjI+KdwtLcOCGn5z2yzdijc8w==} + '@oclif/core@4.10.6': + resolution: {integrity: sha512-ySCOYnPKZE3KACT1V9It99hWG9b8E5MpagbRdWxPNRO3beMqmbr4SLUQoFtZ9XRtW++kks1ZVwZOdpnR8rpb9A==} engines: {node: '>=18.0.0'} '@oclif/core@4.9.0': resolution: {integrity: sha512-k/ntRgDcUprTT+aaNoF+whk3cY3f9fRD2lkF6ul7JeCUg2MaMXVXZXfbRhJCfsiX51X8/5Pqo0LGdO9SLYXNHg==} engines: {node: '>=18.0.0'} - '@oclif/plugin-help@6.2.44': - resolution: {integrity: sha512-x03Se2LtlOOlGfTuuubt5C4Z8NHeR4zKXtVnfycuLU+2VOMu2WpsGy9nbs3nYuInuvsIY1BizjVaTjUz060Sig==} + '@oclif/plugin-help@6.2.45': + resolution: {integrity: sha512-avWOKYmjANtyu8ipju/kopIIrSrbS/scJjiZTpBp/HKEHNm46v5riOo5LQj6MZ4bYJVQEoyHPg/2Seig5Ilkjw==} engines: {node: '>=18.0.0'} - '@oclif/plugin-not-found@3.2.80': - resolution: {integrity: sha512-yTLjWvR1r/Rd/cO2LxHdMCDoL5sQhBYRUcOMCmxZtWVWhx4rAZ8KVUPDVsb+SvjJDV5ADTDBgt1H52fFx7YWqg==} + '@oclif/plugin-not-found@3.2.81': + resolution: {integrity: sha512-M88tLONBH36hLAbkFbmCo1hoZPSdU5l8Px1xEIlIgSmGMam+CoAzx4kGqpLbokgfpaHeP8/Jx3QJ18u9ef/2Qw==} engines: {node: '>=18.0.0'} - '@oclif/plugin-warn-if-update-available@3.1.60': - resolution: {integrity: sha512-cRKBZm14IuA6G8W84dfd3iXj3BTAoxQ5o3pUE8DKEQ4n/tVha20t5nkVeD+ISC68e0Fuw5koTMvRwXb1lJSnzg==} + '@oclif/plugin-warn-if-update-available@3.1.61': + resolution: {integrity: sha512-4XcrTxcCs+brR/eZ0BPeuiREiH3USlJiaHbUqPhnIBuyxhhUSYVd8ZO6s5MQN7AXJq4SMQ+B5zLaHq+ep/afIw==} engines: {node: '>=18.0.0'} '@oclif/test@4.1.18': @@ -2620,9 +2603,6 @@ packages: resolution: {integrity: sha512-/uejZt4dSere1bx12WLlPfv8GktzcaDtuJ7s42/HEZ5zGj9oxRaD4bj7qwSunXkf+pbAhFt2zjpHYUiT5lHf0Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@ungap/structured-clone@1.3.0': - resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - '@unrs/resolver-binding-android-arm-eabi@1.11.1': resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} cpu: [arm] @@ -2751,8 +2731,8 @@ packages: ajv@6.15.0: resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} - ajv@8.18.0: - resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} + ajv@8.20.0: + resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} @@ -2968,8 +2948,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.10.21: - resolution: {integrity: sha512-Q+rUQ7Uz8AHM7DEaNdwvfFCTq7a43lNTzuS94eiWqwyxfV/wJv+oUivef51T91mmRY4d4A1u9rcSvkeufCVXlA==} + baseline-browser-mapping@2.10.23: + resolution: {integrity: sha512-xwVXGqevyKPsiuQdLj+dZMVjidjJV508TBqexND5HrF89cGdCYCJFB3qhcxRHSeMctdCfbR1jrxBajhDy7o29g==} engines: {node: '>=6.0.0'} hasBin: true @@ -3080,8 +3060,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001790: - resolution: {integrity: sha512-bOoxfJPyYo+ds6W0YfptaCWbFnJYjh2Y1Eow5lRv+vI2u8ganPZqNm1JwNh0t2ELQCqIWg4B3dWEusgAmsoyOw==} + caniuse-lite@1.0.30001791: + resolution: {integrity: sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ==} capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} @@ -3507,10 +3487,6 @@ packages: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} @@ -3640,8 +3616,8 @@ packages: resolution: {integrity: sha512-NNTyyolSmKJicgxtoWZ/hoy2Rw56WIoWCFxgnBkXqDgi9qPKMwZs2Nx2b6SHLJvCiWWhZhWr5V46CFPo3PSPag==} engines: {node: '>=18.0.0'} - eslint-config-oclif@6.0.159: - resolution: {integrity: sha512-tzfcFO1kYLJeuSgM4QOVW/GJROeAcd5Nwzx5dwonK4FECoKAArjZQ5ZY7Z+uK/nAABIym5ihxWgdkSrgqbJARg==} + eslint-config-oclif@6.0.160: + resolution: {integrity: sha512-ObWYOTSLk60UdQkJNTDzh7vVQpPtysz8O4Wwf6Ui7+DJErVjCdaYB0F5qAaOoUr2Jq3hnukO0Hh0PY6rAfG9yw==} engines: {node: '>=18.18.0'} eslint-config-xo-space@0.35.0: @@ -3785,10 +3761,6 @@ packages: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-scope@8.4.0: resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3823,12 +3795,6 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@8.57.1: - resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. - hasBin: true - eslint@9.39.4: resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3843,10 +3809,6 @@ packages: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -3965,10 +3927,6 @@ packages: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -4016,10 +3974,6 @@ packages: find-yarn-workspace-root@2.0.0: resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} @@ -4500,10 +4454,6 @@ packages: resolution: {integrity: sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==} engines: {node: '>=4'} - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - is-plain-obj@2.1.0: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} @@ -6139,9 +6089,6 @@ packages: text-hex@1.0.0: resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - thirty-two@1.0.2: resolution: {integrity: sha512-OEI0IWCe+Dw46019YLl6V10Us5bi574EvlJEOcAkB29IzQ/mYD1A6RyNHLjZPiHCmuodxvgF6U+vZO1L15lxVA==} engines: {node: '>=0.2.6'} @@ -7291,8 +7238,8 @@ snapshots: dependencies: '@contentstack/cli-command': 1.8.1(@types/node@22.19.17) '@contentstack/cli-utilities': 1.18.2(@types/node@22.19.17) - '@oclif/core': 4.10.5 - '@oclif/plugin-help': 6.2.44 + '@oclif/core': 4.10.6 + '@oclif/plugin-help': 6.2.45 otplib: 12.0.1 transitivePeerDependencies: - '@types/node' @@ -7301,8 +7248,8 @@ snapshots: '@contentstack/cli-command@1.8.1(@types/node@14.18.63)': dependencies: '@contentstack/cli-utilities': 1.18.2(@types/node@14.18.63) - '@oclif/core': 4.10.5 - '@oclif/plugin-help': 6.2.44 + '@oclif/core': 4.10.6 + '@oclif/plugin-help': 6.2.45 contentstack: 3.27.0 transitivePeerDependencies: - '@types/node' @@ -7311,8 +7258,8 @@ snapshots: '@contentstack/cli-command@1.8.1(@types/node@14.18.63)(debug@4.4.3)': dependencies: '@contentstack/cli-utilities': 1.18.2(@types/node@14.18.63)(debug@4.4.3) - '@oclif/core': 4.10.5 - '@oclif/plugin-help': 6.2.44 + '@oclif/core': 4.10.6 + '@oclif/plugin-help': 6.2.45 contentstack: 3.27.0 transitivePeerDependencies: - '@types/node' @@ -7321,8 +7268,8 @@ snapshots: '@contentstack/cli-command@1.8.1(@types/node@20.19.39)': dependencies: '@contentstack/cli-utilities': 1.18.2(@types/node@20.19.39) - '@oclif/core': 4.10.5 - '@oclif/plugin-help': 6.2.44 + '@oclif/core': 4.10.6 + '@oclif/plugin-help': 6.2.45 contentstack: 3.27.0 transitivePeerDependencies: - '@types/node' @@ -7331,8 +7278,8 @@ snapshots: '@contentstack/cli-command@1.8.1(@types/node@22.19.17)': dependencies: '@contentstack/cli-utilities': 1.18.2(@types/node@22.19.17) - '@oclif/core': 4.10.5 - '@oclif/plugin-help': 6.2.44 + '@oclif/core': 4.10.6 + '@oclif/plugin-help': 6.2.45 contentstack: 3.27.0 transitivePeerDependencies: - '@types/node' @@ -7343,8 +7290,8 @@ snapshots: '@contentstack/cli-command': 1.8.1(@types/node@14.18.63) '@contentstack/cli-utilities': 1.18.2(@types/node@14.18.63) '@contentstack/utils': 1.9.1 - '@oclif/core': 4.10.5 - '@oclif/plugin-help': 6.2.44 + '@oclif/core': 4.10.6 + '@oclif/plugin-help': 6.2.45 lodash: 4.18.1 transitivePeerDependencies: - '@types/node' @@ -7355,8 +7302,8 @@ snapshots: '@contentstack/cli-command': 1.8.1(@types/node@22.19.17) '@contentstack/cli-utilities': 1.18.2(@types/node@22.19.17) '@contentstack/utils': 1.9.1 - '@oclif/core': 4.10.5 - '@oclif/plugin-help': 6.2.44 + '@oclif/core': 4.10.6 + '@oclif/plugin-help': 6.2.45 lodash: 4.18.1 transitivePeerDependencies: - '@types/node' @@ -7364,8 +7311,8 @@ snapshots: '@contentstack/cli-dev-dependencies@1.3.1': dependencies: - '@oclif/core': 4.10.5 - '@oclif/test': 4.1.18(@oclif/core@4.10.5) + '@oclif/core': 4.10.6 + '@oclif/test': 4.1.18(@oclif/core@4.10.6) fancy-test: 2.0.42 lodash: 4.18.1 transitivePeerDependencies: @@ -7373,9 +7320,9 @@ snapshots: '@contentstack/cli-utilities@1.18.2(@types/node@14.18.63)': dependencies: - '@contentstack/management': 1.30.1(debug@4.4.3) + '@contentstack/management': 1.30.2(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.1(debug@4.4.3) - '@oclif/core': 4.10.5 + '@oclif/core': 4.10.6 axios: 1.15.2(debug@4.4.3) chalk: 4.1.2 cli-cursor: 3.1.0 @@ -7408,9 +7355,9 @@ snapshots: '@contentstack/cli-utilities@1.18.2(@types/node@14.18.63)(debug@4.4.3)': dependencies: - '@contentstack/management': 1.30.1(debug@4.4.3) + '@contentstack/management': 1.30.2(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.1(debug@4.4.3) - '@oclif/core': 4.10.5 + '@oclif/core': 4.10.6 axios: 1.15.2(debug@4.4.3) chalk: 4.1.2 cli-cursor: 3.1.0 @@ -7443,9 +7390,9 @@ snapshots: '@contentstack/cli-utilities@1.18.2(@types/node@20.19.39)': dependencies: - '@contentstack/management': 1.30.1(debug@4.4.3) + '@contentstack/management': 1.30.2(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.1(debug@4.4.3) - '@oclif/core': 4.10.5 + '@oclif/core': 4.10.6 axios: 1.15.2(debug@4.4.3) chalk: 4.1.2 cli-cursor: 3.1.0 @@ -7478,9 +7425,9 @@ snapshots: '@contentstack/cli-utilities@1.18.2(@types/node@22.19.17)': dependencies: - '@contentstack/management': 1.30.1(debug@4.4.3) + '@contentstack/management': 1.30.2(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.1(debug@4.4.3) - '@oclif/core': 4.10.5 + '@oclif/core': 4.10.6 axios: 1.15.2(debug@4.4.3) chalk: 4.1.2 cli-cursor: 3.1.0 @@ -7511,7 +7458,7 @@ snapshots: - '@types/node' - debug - '@contentstack/management@1.30.1(debug@4.4.3)': + '@contentstack/management@1.30.2(debug@4.4.3)': dependencies: '@contentstack/utils': 1.9.1 assert: 2.1.0 @@ -7647,11 +7594,6 @@ snapshots: '@esbuild/win32-x64@0.27.7': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@8.57.1)': - dependencies: - eslint: 8.57.1 - eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4)': dependencies: eslint: 9.39.4 @@ -7659,11 +7601,11 @@ snapshots: '@eslint-community/regexpp@4.12.2': {} - '@eslint/compat@1.4.1(eslint@8.57.1)': + '@eslint/compat@1.4.1(eslint@9.39.4)': dependencies: '@eslint/core': 0.17.0 optionalDependencies: - eslint: 8.57.1 + eslint: 9.39.4 '@eslint/config-array@0.21.2': dependencies: @@ -7700,20 +7642,6 @@ snapshots: '@eslint/css-tree': 3.6.9 '@eslint/plugin-kit': 0.3.5 - '@eslint/eslintrc@2.1.4': - dependencies: - ajv: 6.15.0 - debug: 4.4.3(supports-color@8.1.1) - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.1 - minimatch: 3.1.5 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - '@eslint/eslintrc@3.3.5': dependencies: ajv: 6.15.0 @@ -7728,8 +7656,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@8.57.1': {} - '@eslint/js@9.39.4': {} '@eslint/json@0.13.2': @@ -7782,20 +7708,10 @@ snapshots: '@humanfs/types@0.15.0': {} - '@humanwhocodes/config-array@0.13.0': - dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.4.3(supports-color@8.1.1) - minimatch: 3.1.5 - transitivePeerDependencies: - - supports-color - '@humanwhocodes/module-importer@1.0.1': {} '@humanwhocodes/momoa@3.3.10': {} - '@humanwhocodes/object-schema@2.0.3': {} - '@humanwhocodes/retry@0.4.3': {} '@inquirer/ansi@1.0.2': {} @@ -8441,7 +8357,7 @@ snapshots: '@nolyfill/is-core-module@1.0.39': {} - '@oclif/core@4.10.5': + '@oclif/core@4.10.6': dependencies: ansi-escapes: 4.3.2 ansis: 3.17.0 @@ -8483,40 +8399,40 @@ snapshots: wordwrap: 1.0.0 wrap-ansi: 7.0.0 - '@oclif/plugin-help@6.2.44': + '@oclif/plugin-help@6.2.45': dependencies: - '@oclif/core': 4.10.5 + '@oclif/core': 4.10.6 - '@oclif/plugin-not-found@3.2.80(@types/node@14.18.63)': + '@oclif/plugin-not-found@3.2.81(@types/node@14.18.63)': dependencies: '@inquirer/prompts': 7.10.1(@types/node@14.18.63) - '@oclif/core': 4.10.5 + '@oclif/core': 4.10.6 ansis: 3.17.0 fast-levenshtein: 3.0.0 transitivePeerDependencies: - '@types/node' - '@oclif/plugin-not-found@3.2.80(@types/node@20.19.39)': + '@oclif/plugin-not-found@3.2.81(@types/node@20.19.39)': dependencies: '@inquirer/prompts': 7.10.1(@types/node@20.19.39) - '@oclif/core': 4.10.5 + '@oclif/core': 4.10.6 ansis: 3.17.0 fast-levenshtein: 3.0.0 transitivePeerDependencies: - '@types/node' - '@oclif/plugin-not-found@3.2.80(@types/node@22.19.17)': + '@oclif/plugin-not-found@3.2.81(@types/node@22.19.17)': dependencies: '@inquirer/prompts': 7.10.1(@types/node@22.19.17) - '@oclif/core': 4.10.5 + '@oclif/core': 4.10.6 ansis: 3.17.0 fast-levenshtein: 3.0.0 transitivePeerDependencies: - '@types/node' - '@oclif/plugin-warn-if-update-available@3.1.60': + '@oclif/plugin-warn-if-update-available@3.1.61': dependencies: - '@oclif/core': 4.10.5 + '@oclif/core': 4.10.6 ansis: 3.17.0 debug: 4.4.3(supports-color@8.1.1) http-call: 5.3.0 @@ -8525,9 +8441,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@oclif/test@4.1.18(@oclif/core@4.10.5)': + '@oclif/test@4.1.18(@oclif/core@4.10.6)': dependencies: - '@oclif/core': 4.10.5 + '@oclif/core': 4.10.6 ansis: 3.17.0 debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: @@ -8952,10 +8868,10 @@ snapshots: color: 5.0.3 text-hex: 1.0.0 - '@stylistic/eslint-plugin@3.1.0(eslint@8.57.1)(typescript@4.9.5)': + '@stylistic/eslint-plugin@3.1.0(eslint@9.39.4)(typescript@4.9.5)': dependencies: - '@typescript-eslint/utils': 8.59.0(eslint@8.57.1)(typescript@4.9.5) - eslint: 8.57.1 + '@typescript-eslint/utils': 8.59.0(eslint@9.39.4)(typescript@4.9.5) + eslint: 9.39.4 eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -8964,10 +8880,10 @@ snapshots: - supports-color - typescript - '@stylistic/eslint-plugin@3.1.0(eslint@8.57.1)(typescript@5.9.3)': + '@stylistic/eslint-plugin@3.1.0(eslint@9.39.4)(typescript@5.9.3)': dependencies: - '@typescript-eslint/utils': 8.59.0(eslint@8.57.1)(typescript@5.9.3) - eslint: 8.57.1 + '@typescript-eslint/utils': 8.59.0(eslint@9.39.4)(typescript@5.9.3) + eslint: 9.39.4 eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -8976,11 +8892,11 @@ snapshots: - supports-color - typescript - '@stylistic/eslint-plugin@5.10.0(eslint@8.57.1)': + '@stylistic/eslint-plugin@5.10.0(eslint@9.39.4)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) '@typescript-eslint/types': 8.59.0 - eslint: 8.57.1 + eslint: 9.39.4 eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -9157,15 +9073,15 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@8.59.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5)': + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@8.59.0(eslint@9.39.4)(typescript@4.9.5))(eslint@9.39.4)(typescript@4.9.5)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.59.0(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/parser': 8.59.0(eslint@9.39.4)(typescript@4.9.5) '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@4.9.5) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/type-utils': 5.62.0(eslint@9.39.4)(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@9.39.4)(typescript@4.9.5) debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 + eslint: 9.39.4 graphemer: 1.4.0 ignore: 5.3.2 natural-compare-lite: 1.4.0 @@ -9176,16 +9092,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5)': + '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@4.9.5))(eslint@9.39.4)(typescript@4.9.5)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/parser': 6.21.0(eslint@9.39.4)(typescript@4.9.5) '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@4.9.5) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/type-utils': 6.21.0(eslint@9.39.4)(typescript@4.9.5) + '@typescript-eslint/utils': 6.21.0(eslint@9.39.4)(typescript@4.9.5) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 + eslint: 9.39.4 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -9196,16 +9112,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/parser': 6.21.0(eslint@9.39.4)(typescript@5.9.3) '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/type-utils': 6.21.0(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/utils': 6.21.0(eslint@9.39.4)(typescript@5.9.3) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 + eslint: 9.39.4 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -9216,15 +9132,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.59.0(@typescript-eslint/parser@8.59.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5)': + '@typescript-eslint/eslint-plugin@8.59.0(@typescript-eslint/parser@8.59.0(eslint@9.39.4)(typescript@4.9.5))(eslint@9.39.4)(typescript@4.9.5)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.59.0(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/parser': 8.59.0(eslint@9.39.4)(typescript@4.9.5) '@typescript-eslint/scope-manager': 8.59.0 - '@typescript-eslint/type-utils': 8.59.0(eslint@8.57.1)(typescript@4.9.5) - '@typescript-eslint/utils': 8.59.0(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/type-utils': 8.59.0(eslint@9.39.4)(typescript@4.9.5) + '@typescript-eslint/utils': 8.59.0(eslint@9.39.4)(typescript@4.9.5) '@typescript-eslint/visitor-keys': 8.59.0 - eslint: 8.57.1 + eslint: 9.39.4 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@4.9.5) @@ -9232,15 +9148,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.59.0(@typescript-eslint/parser@8.59.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.59.0(@typescript-eslint/parser@8.59.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.59.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/parser': 8.59.0(eslint@9.39.4)(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.59.0 - '@typescript-eslint/type-utils': 8.59.0(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/utils': 8.59.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.59.0(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/utils': 8.59.0(eslint@9.39.4)(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.59.0 - eslint: 8.57.1 + eslint: 9.39.4 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@5.9.3) @@ -9248,52 +9164,52 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5)': + '@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@4.9.5)': dependencies: '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@4.9.5) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 + eslint: 9.39.4 optionalDependencies: typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 + eslint: 9.39.4 optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.59.0(eslint@8.57.1)(typescript@4.9.5)': + '@typescript-eslint/parser@8.59.0(eslint@9.39.4)(typescript@4.9.5)': dependencies: '@typescript-eslint/scope-manager': 8.59.0 '@typescript-eslint/types': 8.59.0 '@typescript-eslint/typescript-estree': 8.59.0(typescript@4.9.5) '@typescript-eslint/visitor-keys': 8.59.0 debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 + eslint: 9.39.4 typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.59.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/parser@8.59.0(eslint@9.39.4)(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.59.0 '@typescript-eslint/types': 8.59.0 '@typescript-eslint/typescript-estree': 8.59.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.59.0 debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 + eslint: 9.39.4 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -9344,61 +9260,61 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@5.62.0(eslint@8.57.1)(typescript@4.9.5)': + '@typescript-eslint/type-utils@5.62.0(eslint@9.39.4)(typescript@4.9.5)': dependencies: '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@9.39.4)(typescript@4.9.5) debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 + eslint: 9.39.4 tsutils: 3.21.0(typescript@4.9.5) optionalDependencies: typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@4.9.5)': + '@typescript-eslint/type-utils@6.21.0(eslint@9.39.4)(typescript@4.9.5)': dependencies: '@typescript-eslint/typescript-estree': 6.21.0(typescript@4.9.5) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/utils': 6.21.0(eslint@9.39.4)(typescript@4.9.5) debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 + eslint: 9.39.4 ts-api-utils: 1.4.3(typescript@4.9.5) optionalDependencies: typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/type-utils@6.21.0(eslint@9.39.4)(typescript@5.9.3)': dependencies: '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/utils': 6.21.0(eslint@9.39.4)(typescript@5.9.3) debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 + eslint: 9.39.4 ts-api-utils: 1.4.3(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.59.0(eslint@8.57.1)(typescript@4.9.5)': + '@typescript-eslint/type-utils@8.59.0(eslint@9.39.4)(typescript@4.9.5)': dependencies: '@typescript-eslint/types': 8.59.0 '@typescript-eslint/typescript-estree': 8.59.0(typescript@4.9.5) - '@typescript-eslint/utils': 8.59.0(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/utils': 8.59.0(eslint@9.39.4)(typescript@4.9.5) debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 + eslint: 9.39.4 ts-api-utils: 2.5.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.59.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.59.0(eslint@9.39.4)(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.59.0 '@typescript-eslint/typescript-estree': 8.59.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.59.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/utils': 8.59.0(eslint@9.39.4)(typescript@5.9.3) debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 + eslint: 9.39.4 ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -9516,89 +9432,89 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@4.9.5)': + '@typescript-eslint/utils@5.62.0(eslint@9.39.4)(typescript@4.9.5)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) '@types/json-schema': 7.0.15 '@types/semver': 7.7.1 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) - eslint: 8.57.1 + eslint: 9.39.4 eslint-scope: 5.1.1 semver: 7.7.4 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@4.9.5)': + '@typescript-eslint/utils@6.21.0(eslint@9.39.4)(typescript@4.9.5)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) '@types/json-schema': 7.0.15 '@types/semver': 7.7.1 '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@4.9.5) - eslint: 8.57.1 + eslint: 9.39.4 semver: 7.7.4 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/utils@6.21.0(eslint@9.39.4)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) '@types/json-schema': 7.0.15 '@types/semver': 7.7.1 '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) - eslint: 8.57.1 + eslint: 9.39.4 semver: 7.7.4 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@4.9.5)': + '@typescript-eslint/utils@7.18.0(eslint@9.39.4)(typescript@4.9.5)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@4.9.5) - eslint: 8.57.1 + eslint: 9.39.4 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/utils@7.18.0(eslint@9.39.4)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.3) - eslint: 8.57.1 + eslint: 9.39.4 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.59.0(eslint@8.57.1)(typescript@4.9.5)': + '@typescript-eslint/utils@8.59.0(eslint@9.39.4)(typescript@4.9.5)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) '@typescript-eslint/scope-manager': 8.59.0 '@typescript-eslint/types': 8.59.0 '@typescript-eslint/typescript-estree': 8.59.0(typescript@4.9.5) - eslint: 8.57.1 + eslint: 9.39.4 typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.59.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/utils@8.59.0(eslint@9.39.4)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) '@typescript-eslint/scope-manager': 8.59.0 '@typescript-eslint/types': 8.59.0 '@typescript-eslint/typescript-estree': 8.59.0(typescript@5.9.3) - eslint: 8.57.1 + eslint: 9.39.4 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -9623,8 +9539,6 @@ snapshots: '@typescript-eslint/types': 8.59.0 eslint-visitor-keys: 5.0.1 - '@ungap/structured-clone@1.3.0': {} - '@unrs/resolver-binding-android-arm-eabi@1.11.1': optional: true @@ -9704,9 +9618,9 @@ snapshots: clean-stack: 2.2.0 indent-string: 4.0.0 - ajv-formats@2.1.1(ajv@8.18.0): + ajv-formats@2.1.1(ajv@8.20.0): optionalDependencies: - ajv: 8.18.0 + ajv: 8.20.0 ajv@6.15.0: dependencies: @@ -9715,7 +9629,7 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.18.0: + ajv@8.20.0: dependencies: fast-deep-equal: 3.1.3 fast-uri: 3.1.0 @@ -9952,7 +9866,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.10.21: {} + baseline-browser-mapping@2.10.23: {} big-json@3.2.0: dependencies: @@ -10000,8 +9914,8 @@ snapshots: browserslist@4.28.2: dependencies: - baseline-browser-mapping: 2.10.21 - caniuse-lite: 1.0.30001790 + baseline-browser-mapping: 2.10.23 + caniuse-lite: 1.0.30001791 electron-to-chromium: 1.5.344 node-releases: 2.0.38 update-browserslist-db: 1.2.3(browserslist@4.28.2) @@ -10085,7 +9999,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001790: {} + caniuse-lite@1.0.30001791: {} capital-case@1.0.4: dependencies: @@ -10318,8 +10232,8 @@ snapshots: conf@10.2.0: dependencies: - ajv: 8.18.0 - ajv-formats: 2.1.1(ajv@8.18.0) + ajv: 8.20.0 + ajv-formats: 2.1.1(ajv@8.20.0) atomically: 1.7.0 debounce-fn: 4.0.0 dot-prop: 6.0.1 @@ -10536,10 +10450,6 @@ snapshots: dependencies: esutils: 2.0.3 - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - dot-case@3.0.4: dependencies: no-case: 3.0.4 @@ -10713,21 +10623,21 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-compat-utils@0.5.1(eslint@8.57.1): + eslint-compat-utils@0.5.1(eslint@9.39.4): dependencies: - eslint: 8.57.1 + eslint: 9.39.4 semver: 7.7.4 - eslint-config-oclif-typescript@3.1.14(eslint@8.57.1)(typescript@4.9.5): + eslint-config-oclif-typescript@3.1.14(eslint@9.39.4)(typescript@4.9.5): dependencies: - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5) - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@4.9.5) - eslint-config-xo-space: 0.35.0(eslint@8.57.1) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) - eslint-plugin-mocha: 10.5.0(eslint@8.57.1) - eslint-plugin-n: 15.7.0(eslint@8.57.1) - eslint-plugin-perfectionist: 2.11.0(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@4.9.5))(eslint@9.39.4)(typescript@4.9.5) + '@typescript-eslint/parser': 6.21.0(eslint@9.39.4)(typescript@4.9.5) + eslint-config-xo-space: 0.35.0(eslint@9.39.4) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4) + eslint-plugin-mocha: 10.5.0(eslint@9.39.4) + eslint-plugin-n: 15.7.0(eslint@9.39.4) + eslint-plugin-perfectionist: 2.11.0(eslint@9.39.4)(typescript@4.9.5) transitivePeerDependencies: - astro-eslint-parser - eslint @@ -10739,16 +10649,16 @@ snapshots: - typescript - vue-eslint-parser - eslint-config-oclif-typescript@3.1.14(eslint@8.57.1)(typescript@5.9.3): + eslint-config-oclif-typescript@3.1.14(eslint@9.39.4)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.3) - eslint-config-xo-space: 0.35.0(eslint@8.57.1) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint@8.57.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) - eslint-plugin-mocha: 10.5.0(eslint@8.57.1) - eslint-plugin-n: 15.7.0(eslint@8.57.1) - eslint-plugin-perfectionist: 2.11.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/parser': 6.21.0(eslint@9.39.4)(typescript@5.9.3) + eslint-config-xo-space: 0.35.0(eslint@9.39.4) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4))(eslint@9.39.4) + eslint-plugin-mocha: 10.5.0(eslint@9.39.4) + eslint-plugin-n: 15.7.0(eslint@9.39.4) + eslint-plugin-perfectionist: 2.11.0(eslint@9.39.4)(typescript@5.9.3) transitivePeerDependencies: - astro-eslint-parser - eslint @@ -10760,34 +10670,34 @@ snapshots: - typescript - vue-eslint-parser - eslint-config-oclif@5.2.2(eslint@8.57.1): + eslint-config-oclif@5.2.2(eslint@9.39.4): dependencies: - eslint-config-xo-space: 0.35.0(eslint@8.57.1) - eslint-plugin-mocha: 10.5.0(eslint@8.57.1) - eslint-plugin-n: 15.7.0(eslint@8.57.1) - eslint-plugin-unicorn: 48.0.1(eslint@8.57.1) + eslint-config-xo-space: 0.35.0(eslint@9.39.4) + eslint-plugin-mocha: 10.5.0(eslint@9.39.4) + eslint-plugin-n: 15.7.0(eslint@9.39.4) + eslint-plugin-unicorn: 48.0.1(eslint@9.39.4) transitivePeerDependencies: - eslint - eslint-config-oclif@6.0.159(eslint@8.57.1)(typescript@4.9.5): + eslint-config-oclif@6.0.160(eslint@9.39.4)(typescript@4.9.5): dependencies: - '@eslint/compat': 1.4.1(eslint@8.57.1) + '@eslint/compat': 1.4.1(eslint@9.39.4) '@eslint/eslintrc': 3.3.5 '@eslint/js': 9.39.4 - '@stylistic/eslint-plugin': 3.1.0(eslint@8.57.1)(typescript@4.9.5) - '@typescript-eslint/eslint-plugin': 8.59.0(@typescript-eslint/parser@8.59.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5) - '@typescript-eslint/parser': 8.59.0(eslint@8.57.1)(typescript@4.9.5) - eslint-config-oclif: 5.2.2(eslint@8.57.1) - eslint-config-xo: 0.49.0(eslint@8.57.1) - eslint-config-xo-space: 0.35.0(eslint@8.57.1) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.59.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) - eslint-plugin-jsdoc: 50.8.0(eslint@8.57.1) - eslint-plugin-mocha: 10.5.0(eslint@8.57.1) - eslint-plugin-n: 17.24.0(eslint@8.57.1)(typescript@4.9.5) - eslint-plugin-perfectionist: 4.15.1(eslint@8.57.1)(typescript@4.9.5) - eslint-plugin-unicorn: 56.0.1(eslint@8.57.1) - typescript-eslint: 8.59.0(eslint@8.57.1)(typescript@4.9.5) + '@stylistic/eslint-plugin': 3.1.0(eslint@9.39.4)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 8.59.0(@typescript-eslint/parser@8.59.0(eslint@9.39.4)(typescript@4.9.5))(eslint@9.39.4)(typescript@4.9.5) + '@typescript-eslint/parser': 8.59.0(eslint@9.39.4)(typescript@4.9.5) + eslint-config-oclif: 5.2.2(eslint@9.39.4) + eslint-config-xo: 0.49.0(eslint@9.39.4) + eslint-config-xo-space: 0.35.0(eslint@9.39.4) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.59.0(eslint@9.39.4)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4) + eslint-plugin-jsdoc: 50.8.0(eslint@9.39.4) + eslint-plugin-mocha: 10.5.0(eslint@9.39.4) + eslint-plugin-n: 17.24.0(eslint@9.39.4)(typescript@4.9.5) + eslint-plugin-perfectionist: 4.15.1(eslint@9.39.4)(typescript@4.9.5) + eslint-plugin-unicorn: 56.0.1(eslint@9.39.4) + typescript-eslint: 8.59.0(eslint@9.39.4)(typescript@4.9.5) transitivePeerDependencies: - eslint - eslint-import-resolver-webpack @@ -10795,25 +10705,25 @@ snapshots: - supports-color - typescript - eslint-config-oclif@6.0.159(eslint@8.57.1)(typescript@5.9.3): + eslint-config-oclif@6.0.160(eslint@9.39.4)(typescript@5.9.3): dependencies: - '@eslint/compat': 1.4.1(eslint@8.57.1) + '@eslint/compat': 1.4.1(eslint@9.39.4) '@eslint/eslintrc': 3.3.5 '@eslint/js': 9.39.4 - '@stylistic/eslint-plugin': 3.1.0(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/eslint-plugin': 8.59.0(@typescript-eslint/parser@8.59.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/parser': 8.59.0(eslint@8.57.1)(typescript@5.9.3) - eslint-config-oclif: 5.2.2(eslint@8.57.1) - eslint-config-xo: 0.49.0(eslint@8.57.1) - eslint-config-xo-space: 0.35.0(eslint@8.57.1) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint@8.57.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.59.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) - eslint-plugin-jsdoc: 50.8.0(eslint@8.57.1) - eslint-plugin-mocha: 10.5.0(eslint@8.57.1) - eslint-plugin-n: 17.24.0(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-perfectionist: 4.15.1(eslint@8.57.1)(typescript@5.9.3) - eslint-plugin-unicorn: 56.0.1(eslint@8.57.1) - typescript-eslint: 8.59.0(eslint@8.57.1)(typescript@5.9.3) + '@stylistic/eslint-plugin': 3.1.0(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.59.0(@typescript-eslint/parser@8.59.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/parser': 8.59.0(eslint@9.39.4)(typescript@5.9.3) + eslint-config-oclif: 5.2.2(eslint@9.39.4) + eslint-config-xo: 0.49.0(eslint@9.39.4) + eslint-config-xo-space: 0.35.0(eslint@9.39.4) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.59.0(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4))(eslint@9.39.4) + eslint-plugin-jsdoc: 50.8.0(eslint@9.39.4) + eslint-plugin-mocha: 10.5.0(eslint@9.39.4) + eslint-plugin-n: 17.24.0(eslint@9.39.4)(typescript@5.9.3) + eslint-plugin-perfectionist: 4.15.1(eslint@9.39.4)(typescript@5.9.3) + eslint-plugin-unicorn: 56.0.1(eslint@9.39.4) + typescript-eslint: 8.59.0(eslint@9.39.4)(typescript@5.9.3) transitivePeerDependencies: - eslint - eslint-import-resolver-webpack @@ -10821,23 +10731,23 @@ snapshots: - supports-color - typescript - eslint-config-xo-space@0.35.0(eslint@8.57.1): + eslint-config-xo-space@0.35.0(eslint@9.39.4): dependencies: - eslint: 8.57.1 - eslint-config-xo: 0.44.0(eslint@8.57.1) + eslint: 9.39.4 + eslint-config-xo: 0.44.0(eslint@9.39.4) - eslint-config-xo@0.44.0(eslint@8.57.1): + eslint-config-xo@0.44.0(eslint@9.39.4): dependencies: confusing-browser-globals: 1.0.11 - eslint: 8.57.1 + eslint: 9.39.4 - eslint-config-xo@0.49.0(eslint@8.57.1): + eslint-config-xo@0.49.0(eslint@9.39.4): dependencies: '@eslint/css': 0.10.0 '@eslint/json': 0.13.2 - '@stylistic/eslint-plugin': 5.10.0(eslint@8.57.1) + '@stylistic/eslint-plugin': 5.10.0(eslint@9.39.4) confusing-browser-globals: 1.0.11 - eslint: 8.57.1 + eslint: 9.39.4 globals: 16.5.0 eslint-import-resolver-node@0.3.10: @@ -10848,94 +10758,94 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint@8.57.1): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 + eslint: 9.39.4 get-tsconfig: 4.14.0 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.16 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4))(eslint@9.39.4) transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 + eslint: 9.39.4 get-tsconfig: 4.14.0 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.16 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.59.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.59.0(eslint@9.39.4)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): + eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@4.9.5) - eslint: 8.57.1 + '@typescript-eslint/parser': 6.21.0(eslint@9.39.4)(typescript@4.9.5) + eslint: 9.39.4 eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): + eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4))(eslint@9.39.4): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.3) - eslint: 8.57.1 + '@typescript-eslint/parser': 6.21.0(eslint@9.39.4)(typescript@5.9.3) + eslint: 9.39.4 eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint@8.57.1) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.59.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.59.0(eslint@9.39.4)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.59.0(eslint@8.57.1)(typescript@4.9.5) - eslint: 8.57.1 + '@typescript-eslint/parser': 8.59.0(eslint@9.39.4)(typescript@4.9.5) + eslint: 9.39.4 eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.59.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.59.0(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4))(eslint@9.39.4): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.59.0(eslint@8.57.1)(typescript@5.9.3) - eslint: 8.57.1 + '@typescript-eslint/parser': 8.59.0(eslint@9.39.4)(typescript@5.9.3) + eslint: 9.39.4 eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint@8.57.1) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4) transitivePeerDependencies: - supports-color - eslint-plugin-es-x@7.8.0(eslint@8.57.1): + eslint-plugin-es-x@7.8.0(eslint@9.39.4): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) '@eslint-community/regexpp': 4.12.2 - eslint: 8.57.1 - eslint-compat-utils: 0.5.1(eslint@8.57.1) + eslint: 9.39.4 + eslint-compat-utils: 0.5.1(eslint@9.39.4) - eslint-plugin-es@4.1.0(eslint@8.57.1): + eslint-plugin-es@4.1.0(eslint@9.39.4): dependencies: - eslint: 8.57.1 + eslint: 9.39.4 eslint-utils: 2.1.0 regexpp: 3.2.0 - eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -10944,9 +10854,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.57.1 + eslint: 9.39.4 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4) hasown: 2.0.3 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -10958,13 +10868,13 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/parser': 6.21.0(eslint@9.39.4)(typescript@4.9.5) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4))(eslint@9.39.4): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -10973,9 +10883,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.57.1 + eslint: 9.39.4 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4))(eslint@9.39.4) hasown: 2.0.3 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -10987,13 +10897,13 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/parser': 6.21.0(eslint@9.39.4)(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.0(eslint@9.39.4)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -11002,9 +10912,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.57.1 + eslint: 9.39.4 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.59.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.59.0(eslint@9.39.4)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4) hasown: 2.0.3 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -11016,13 +10926,13 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.59.0(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/parser': 8.59.0(eslint@9.39.4)(typescript@4.9.5) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.0(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4))(eslint@9.39.4): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -11031,9 +10941,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.57.1 + eslint: 9.39.4 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.59.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.59.0(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4))(eslint@9.39.4) hasown: 2.0.3 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -11045,20 +10955,20 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.59.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/parser': 8.59.0(eslint@9.39.4)(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsdoc@50.8.0(eslint@8.57.1): + eslint-plugin-jsdoc@50.8.0(eslint@9.39.4): dependencies: '@es-joy/jsdoccomment': 0.50.2 are-docs-informative: 0.0.2 comment-parser: 1.4.1 debug: 4.4.3(supports-color@8.1.1) escape-string-regexp: 4.0.0 - eslint: 8.57.1 + eslint: 9.39.4 espree: 10.4.0 esquery: 1.7.0 parse-imports-exports: 0.2.4 @@ -11067,31 +10977,31 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-mocha@10.5.0(eslint@8.57.1): + eslint-plugin-mocha@10.5.0(eslint@9.39.4): dependencies: - eslint: 8.57.1 - eslint-utils: 3.0.0(eslint@8.57.1) + eslint: 9.39.4 + eslint-utils: 3.0.0(eslint@9.39.4) globals: 13.24.0 rambda: 7.5.0 - eslint-plugin-n@15.7.0(eslint@8.57.1): + eslint-plugin-n@15.7.0(eslint@9.39.4): dependencies: builtins: 5.1.0 - eslint: 8.57.1 - eslint-plugin-es: 4.1.0(eslint@8.57.1) - eslint-utils: 3.0.0(eslint@8.57.1) + eslint: 9.39.4 + eslint-plugin-es: 4.1.0(eslint@9.39.4) + eslint-utils: 3.0.0(eslint@9.39.4) ignore: 5.3.2 is-core-module: 2.16.1 minimatch: 3.1.5 resolve: 1.22.12 semver: 7.7.4 - eslint-plugin-n@17.24.0(eslint@8.57.1)(typescript@4.9.5): + eslint-plugin-n@17.24.0(eslint@9.39.4)(typescript@4.9.5): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) enhanced-resolve: 5.21.0 - eslint: 8.57.1 - eslint-plugin-es-x: 7.8.0(eslint@8.57.1) + eslint: 9.39.4 + eslint-plugin-es-x: 7.8.0(eslint@9.39.4) get-tsconfig: 4.14.0 globals: 15.15.0 globrex: 0.1.2 @@ -11101,12 +11011,12 @@ snapshots: transitivePeerDependencies: - typescript - eslint-plugin-n@17.24.0(eslint@8.57.1)(typescript@5.9.3): + eslint-plugin-n@17.24.0(eslint@9.39.4)(typescript@5.9.3): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) enhanced-resolve: 5.21.0 - eslint: 8.57.1 - eslint-plugin-es-x: 7.8.0(eslint@8.57.1) + eslint: 9.39.4 + eslint-plugin-es-x: 7.8.0(eslint@9.39.4) get-tsconfig: 4.14.0 globals: 15.15.0 globrex: 0.1.2 @@ -11116,53 +11026,53 @@ snapshots: transitivePeerDependencies: - typescript - eslint-plugin-perfectionist@2.11.0(eslint@8.57.1)(typescript@4.9.5): + eslint-plugin-perfectionist@2.11.0(eslint@9.39.4)(typescript@4.9.5): dependencies: - '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@4.9.5) - eslint: 8.57.1 + '@typescript-eslint/utils': 7.18.0(eslint@9.39.4)(typescript@4.9.5) + eslint: 9.39.4 minimatch: 9.0.9 natural-compare-lite: 1.4.0 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-perfectionist@2.11.0(eslint@8.57.1)(typescript@5.9.3): + eslint-plugin-perfectionist@2.11.0(eslint@9.39.4)(typescript@5.9.3): dependencies: - '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.9.3) - eslint: 8.57.1 + '@typescript-eslint/utils': 7.18.0(eslint@9.39.4)(typescript@5.9.3) + eslint: 9.39.4 minimatch: 9.0.9 natural-compare-lite: 1.4.0 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-perfectionist@4.15.1(eslint@8.57.1)(typescript@4.9.5): + eslint-plugin-perfectionist@4.15.1(eslint@9.39.4)(typescript@4.9.5): dependencies: '@typescript-eslint/types': 8.59.0 - '@typescript-eslint/utils': 8.59.0(eslint@8.57.1)(typescript@4.9.5) - eslint: 8.57.1 + '@typescript-eslint/utils': 8.59.0(eslint@9.39.4)(typescript@4.9.5) + eslint: 9.39.4 natural-orderby: 5.0.0 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-perfectionist@4.15.1(eslint@8.57.1)(typescript@5.9.3): + eslint-plugin-perfectionist@4.15.1(eslint@9.39.4)(typescript@5.9.3): dependencies: '@typescript-eslint/types': 8.59.0 - '@typescript-eslint/utils': 8.59.0(eslint@8.57.1)(typescript@5.9.3) - eslint: 8.57.1 + '@typescript-eslint/utils': 8.59.0(eslint@9.39.4)(typescript@5.9.3) + eslint: 9.39.4 natural-orderby: 5.0.0 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-unicorn@48.0.1(eslint@8.57.1): + eslint-plugin-unicorn@48.0.1(eslint@9.39.4): dependencies: '@babel/helper-validator-identifier': 7.28.5 - '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) ci-info: 3.9.0 clean-regexp: 1.0.0 - eslint: 8.57.1 + eslint: 9.39.4 esquery: 1.7.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 @@ -11175,14 +11085,14 @@ snapshots: semver: 7.7.4 strip-indent: 3.0.0 - eslint-plugin-unicorn@56.0.1(eslint@8.57.1): + eslint-plugin-unicorn@56.0.1(eslint@9.39.4): dependencies: '@babel/helper-validator-identifier': 7.28.5 - '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) ci-info: 4.4.0 clean-regexp: 1.0.0 core-js-compat: 3.49.0 - eslint: 8.57.1 + eslint: 9.39.4 esquery: 1.7.0 globals: 15.15.0 indent-string: 4.0.0 @@ -11200,11 +11110,6 @@ snapshots: esrecurse: 4.3.0 estraverse: 4.3.0 - eslint-scope@7.2.2: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - eslint-scope@8.4.0: dependencies: esrecurse: 4.3.0 @@ -11214,9 +11119,9 @@ snapshots: dependencies: eslint-visitor-keys: 1.3.0 - eslint-utils@3.0.0(eslint@8.57.1): + eslint-utils@3.0.0(eslint@9.39.4): dependencies: - eslint: 8.57.1 + eslint: 9.39.4 eslint-visitor-keys: 2.1.0 eslint-visitor-keys@1.3.0: {} @@ -11229,49 +11134,6 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@8.57.1: - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) - '@eslint-community/regexpp': 4.12.2 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.1 - '@humanwhocodes/config-array': 0.13.0 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.3.0 - ajv: 6.15.0 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.3(supports-color@8.1.1) - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.7.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.1 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.5 - natural-compare: 1.4.0 - optionator: 0.9.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - eslint@9.39.4: dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) @@ -11317,12 +11179,6 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.16.0) eslint-visitor-keys: 4.2.1 - espree@9.6.1: - dependencies: - acorn: 8.16.0 - acorn-jsx: 5.3.2(acorn@8.16.0) - eslint-visitor-keys: 3.4.3 - esprima@4.0.1: {} esquery@1.7.0: @@ -11457,10 +11313,6 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - file-entry-cache@6.0.1: - dependencies: - flat-cache: 3.2.0 - file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -11508,12 +11360,6 @@ snapshots: dependencies: micromatch: 4.0.8 - flat-cache@3.2.0: - dependencies: - flatted: 3.4.2 - keyv: 4.5.4 - rimraf: 3.0.2 - flat-cache@4.0.1: dependencies: flatted: 3.4.2 @@ -12064,8 +11910,6 @@ snapshots: dependencies: symbol-observable: 1.2.0 - is-path-inside@3.0.3: {} - is-plain-obj@2.1.0: {} is-plain-obj@4.1.0: {} @@ -13131,9 +12975,9 @@ snapshots: '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 '@oclif/core': 4.9.0 - '@oclif/plugin-help': 6.2.44 - '@oclif/plugin-not-found': 3.2.80(@types/node@14.18.63) - '@oclif/plugin-warn-if-update-available': 3.1.60 + '@oclif/plugin-help': 6.2.45 + '@oclif/plugin-not-found': 3.2.81(@types/node@14.18.63) + '@oclif/plugin-warn-if-update-available': 3.1.61 ansis: 3.17.0 async-retry: 1.3.3 change-case: 4.1.2 @@ -13162,9 +13006,9 @@ snapshots: '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 '@oclif/core': 4.9.0 - '@oclif/plugin-help': 6.2.44 - '@oclif/plugin-not-found': 3.2.80(@types/node@20.19.39) - '@oclif/plugin-warn-if-update-available': 3.1.60 + '@oclif/plugin-help': 6.2.45 + '@oclif/plugin-not-found': 3.2.81(@types/node@20.19.39) + '@oclif/plugin-warn-if-update-available': 3.1.61 ansis: 3.17.0 async-retry: 1.3.3 change-case: 4.1.2 @@ -13193,9 +13037,9 @@ snapshots: '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 '@oclif/core': 4.9.0 - '@oclif/plugin-help': 6.2.44 - '@oclif/plugin-not-found': 3.2.80(@types/node@22.19.17) - '@oclif/plugin-warn-if-update-available': 3.1.60 + '@oclif/plugin-help': 6.2.45 + '@oclif/plugin-not-found': 3.2.81(@types/node@22.19.17) + '@oclif/plugin-warn-if-update-available': 3.1.61 ansis: 3.17.0 async-retry: 1.3.3 change-case: 4.1.2 @@ -14089,8 +13933,6 @@ snapshots: text-hex@1.0.0: {} - text-table@0.2.0: {} - thirty-two@1.0.2: {} through2@2.0.5: @@ -14342,24 +14184,24 @@ snapshots: typedarray@0.0.6: {} - typescript-eslint@8.59.0(eslint@8.57.1)(typescript@4.9.5): + typescript-eslint@8.59.0(eslint@9.39.4)(typescript@4.9.5): dependencies: - '@typescript-eslint/eslint-plugin': 8.59.0(@typescript-eslint/parser@8.59.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5) - '@typescript-eslint/parser': 8.59.0(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 8.59.0(@typescript-eslint/parser@8.59.0(eslint@9.39.4)(typescript@4.9.5))(eslint@9.39.4)(typescript@4.9.5) + '@typescript-eslint/parser': 8.59.0(eslint@9.39.4)(typescript@4.9.5) '@typescript-eslint/typescript-estree': 8.59.0(typescript@4.9.5) - '@typescript-eslint/utils': 8.59.0(eslint@8.57.1)(typescript@4.9.5) - eslint: 8.57.1 + '@typescript-eslint/utils': 8.59.0(eslint@9.39.4)(typescript@4.9.5) + eslint: 9.39.4 typescript: 4.9.5 transitivePeerDependencies: - supports-color - typescript-eslint@8.59.0(eslint@8.57.1)(typescript@5.9.3): + typescript-eslint@8.59.0(eslint@9.39.4)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.59.0(@typescript-eslint/parser@8.59.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/parser': 8.59.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.59.0(@typescript-eslint/parser@8.59.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/parser': 8.59.0(eslint@9.39.4)(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.59.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.59.0(eslint@8.57.1)(typescript@5.9.3) - eslint: 8.57.1 + '@typescript-eslint/utils': 8.59.0(eslint@9.39.4)(typescript@5.9.3) + eslint: 9.39.4 typescript: 5.9.3 transitivePeerDependencies: - supports-color