From e72ae978a4bb05b0fb6fc3a67f2ebb947ed2f242 Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Tue, 30 Jun 2026 20:12:32 +0530 Subject: [PATCH 01/37] Delete issues-jira.yml --- .github/workflows/issues-jira.yml | 118 ------------------------------ 1 file changed, 118 deletions(-) delete mode 100644 .github/workflows/issues-jira.yml diff --git a/.github/workflows/issues-jira.yml b/.github/workflows/issues-jira.yml deleted file mode 100644 index 5f65d0b60..000000000 --- a/.github/workflows/issues-jira.yml +++ /dev/null @@ -1,118 +0,0 @@ -name: Create Jira Ticket for Github Issue - -on: - issues: - types: [opened, reopened] - -jobs: - issue-jira: - runs-on: ubuntu-latest - steps: - - name: Create Jira Issue - id: create_jira - uses: actions/github-script@v9 - with: - script: | - const baseUrl = process.env.JIRA_BASE_URL; - const userEmail = process.env.JIRA_USER_EMAIL; - const jiraToken = process.env.JIRA_API_TOKEN; - const jiraProject = process.env.JIRA_PROJECT; - const jiraIssueType = process.env.JIRA_ISSUE_TYPE; - const jiraFields = JSON.parse(process.env.ISSUES_JIRA_FIELDS); - - let requestBody = JSON.stringify({ - fields: { - ...jiraFields, - "project": { - "key": jiraProject - }, - "issuetype": { - "name": jiraIssueType - }, - "summary": "Github | Issue | ${{ github.event.repository.name }} | ${{ github.event.issue.title }}", - "description": { - "version": 1, - "type": "doc", - "content": [ - { - "type": "paragraph", - "content": [ - { - "type": "text", - "text": "Github Issue", - "marks": [ - { - "type": "strong" - } - ] - }, - { - "type": "text", - "text": ": " - }, - { - "type": "text", - "text": "${{ github.event.issue.html_url }}", - "marks": [ - { - "type": "link", - "attrs": { - "href": "${{ github.event.issue.html_url }}" - } - } - ] - } - ] - }, - { - "type": "paragraph", - "content": [ - { - "type": "text", - "text": "Description", - "marks": [ - { - "type": "strong" - } - ] - }, - { - "type": "text", - "text": ":" - } - ] - }, - { - "type": "codeBlock", - "content": [ - { - "type": "text", - "text": `${{ github.event.issue.body }}` - } - ] - } - ] - } - } - }); - - const response = await fetch(`${baseUrl}/rest/api/3/issue`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - 'Authorization': `Basic ${btoa(userEmail + ":" + jiraToken)}` - }, - body: requestBody - }); - if (!response.ok) { - throw new Error(`JIRA API error! Status: ${response.status}`); - } - const data = await response.json(); - console.log('Jira Issue Created:', data.key); - env: - JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }} - JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }} - JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} - JIRA_PROJECT: ${{ secrets.JIRA_PROJECT }} - JIRA_ISSUE_TYPE: ${{ secrets.JIRA_ISSUE_TYPE }} - ISSUES_JIRA_FIELDS: "${{ secrets.ISSUES_JIRA_FIELDS }}" From 60e5a43cee058f79f4374c99963fec1499dcffaa Mon Sep 17 00:00:00 2001 From: raj pandey Date: Mon, 6 Jul 2026 13:47:33 +0530 Subject: [PATCH 02/37] fix: added dependency overrides --- .talismanrc | 2 +- pnpm-lock.yaml | 2162 ++++++++++++++++++++----------------------- pnpm-workspace.yaml | 2 + 3 files changed, 1000 insertions(+), 1166 deletions(-) diff --git a/.talismanrc b/.talismanrc index 71ea6de83..4940ba110 100644 --- a/.talismanrc +++ b/.talismanrc @@ -1,4 +1,4 @@ fileignoreconfig: - filename: pnpm-lock.yaml - checksum: 07642e8dd04d580185a459e5b088d8a1bb4e91be4e04f4842bf4fe4775205bf6 + checksum: 96e1bd3333f28545394ad65b791405087afa5b5cdc9da9e587bd9f9d00e89ee9 version: '1.0' diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d534afd31..b238ecd75 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,8 @@ overrides: tmp: 0.2.7 uuid: 14.0.0 lodash: 4.18.1 + brace-expansion: 5.0.7 + js-yaml: 4.2.0 importers: @@ -55,7 +57,7 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.18 - version: 4.1.20(@oclif/core@4.11.11) + version: 4.1.20(@oclif/core@4.11.14) '@types/adm-zip': specifier: ^0.5.8 version: 0.5.8 @@ -79,10 +81,10 @@ importers: version: 0.2.6 '@typescript-eslint/eslint-plugin': specifier: ^8.58.2 - version: 8.62.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@5.9.3))(eslint@10.5.0)(typescript@5.9.3) + version: 8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@5.9.3))(eslint@10.6.0)(typescript@5.9.3) '@typescript-eslint/parser': specifier: ^8.58.2 - version: 8.62.0(eslint@10.5.0)(typescript@5.9.3) + version: 8.62.1(eslint@10.6.0)(typescript@5.9.3) axios: specifier: ^1.16.1 version: 1.18.1(debug@4.4.3) @@ -94,13 +96,13 @@ importers: version: 16.6.1 eslint: specifier: ^10.5.0 - version: 10.5.0 + version: 10.6.0 eslint-config-oclif: specifier: ^6.0.157 - version: 6.0.174(eslint@10.5.0)(typescript@5.9.3) + version: 6.0.175(eslint@10.6.0)(typescript@5.9.3) eslint-config-oclif-typescript: specifier: ^3.1.14 - version: 3.1.14(eslint@10.5.0)(typescript@5.9.3) + version: 3.1.14(eslint@10.6.0)(typescript@5.9.3) mocha: specifier: ^10.8.2 version: 10.8.2 @@ -109,7 +111,7 @@ importers: version: 15.1.0 oclif: specifier: ^4.23.8 - version: 4.23.24(@types/node@20.19.43) + version: 4.23.27(@types/node@20.19.43) shx: specifier: ^0.4.0 version: 0.4.0 @@ -133,7 +135,7 @@ importers: version: 1.18.5(@types/node@20.19.43) '@oclif/core': specifier: ^4.11.4 - version: 4.11.11 + version: 4.11.14 chalk: specifier: ^4.1.2 version: 4.1.2 @@ -142,7 +144,7 @@ importers: version: 4.3.6 fs-extra: specifier: ^11.3.0 - version: 11.3.5 + version: 11.3.6 lodash: specifier: 4.18.1 version: 4.18.1 @@ -152,7 +154,7 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.18 - version: 4.1.20(@oclif/core@4.11.11) + version: 4.1.20(@oclif/core@4.11.14) '@types/chai': specifier: ^4.3.20 version: 4.3.20 @@ -170,13 +172,13 @@ importers: version: 4.5.0 eslint: specifier: ^10.5.0 - version: 10.5.0 + version: 10.6.0 eslint-config-oclif: specifier: ^6.0.62 - version: 6.0.174(eslint@10.5.0)(typescript@5.9.3) + version: 6.0.175(eslint@10.6.0)(typescript@5.9.3) eslint-config-oclif-typescript: specifier: ^3.1.14 - version: 3.1.14(eslint@10.5.0)(typescript@5.9.3) + version: 3.1.14(eslint@10.6.0)(typescript@5.9.3) mocha: specifier: ^10.8.2 version: 10.8.2 @@ -185,7 +187,7 @@ importers: version: 15.1.0 oclif: specifier: ^4.17.46 - version: 4.23.24(@types/node@20.19.43) + version: 4.23.27(@types/node@20.19.43) shx: specifier: ^0.4.0 version: 0.4.0 @@ -215,7 +217,7 @@ importers: version: 1.18.5(@types/node@14.18.63)(debug@4.4.3) '@oclif/core': specifier: ^4.11.4 - version: 4.11.11 + version: 4.11.14 inquirer: specifier: 8.2.7 version: 8.2.7(@types/node@14.18.63) @@ -228,7 +230,7 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.18 - version: 4.1.20(@oclif/core@4.11.11) + version: 4.1.20(@oclif/core@4.11.14) '@types/inquirer': specifier: ^9.0.8 version: 9.0.10 @@ -246,7 +248,7 @@ importers: version: 4.5.0 eslint: specifier: ^10.5.0 - version: 10.5.0 + version: 10.6.0 mocha: specifier: 10.8.2 version: 10.8.2 @@ -255,7 +257,7 @@ importers: version: 15.1.0 oclif: specifier: ^4.17.46 - version: 4.23.24(@types/node@14.18.63) + version: 4.23.27(@types/node@14.18.63) tmp: specifier: 0.2.7 version: 0.2.7 @@ -273,7 +275,7 @@ importers: version: 1.18.5(@types/node@22.20.0) '@oclif/core': specifier: ^4.11.4 - version: 4.11.11 + version: 4.11.14 chalk: specifier: ^4.1.2 version: 4.1.2 @@ -295,10 +297,10 @@ importers: version: 9.0.0 eslint: specifier: ^10.5.0 - version: 10.5.0 + version: 10.6.0 eslint-config-oclif: specifier: ^6.0.62 - version: 6.0.174(eslint@10.5.0)(typescript@4.9.5) + version: 6.0.175(eslint@10.6.0)(typescript@4.9.5) mocha: specifier: 10.8.2 version: 10.8.2 @@ -307,7 +309,7 @@ importers: version: 15.1.0 oclif: specifier: ^4.17.46 - version: 4.23.24(@types/node@22.20.0) + version: 4.23.27(@types/node@22.20.0) sinon: specifier: ^21.0.1 version: 21.1.2 @@ -359,10 +361,10 @@ importers: version: 21.0.1 '@typescript-eslint/eslint-plugin': specifier: ^8.59.2 - version: 8.62.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@6.0.3))(eslint@10.5.0)(typescript@6.0.3) + version: 8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@6.0.3))(eslint@10.6.0)(typescript@6.0.3) '@typescript-eslint/parser': specifier: ^8.59.2 - version: 8.62.0(eslint@10.5.0)(typescript@6.0.3) + version: 8.62.1(eslint@10.6.0)(typescript@6.0.3) chai: specifier: ^6.2.2 version: 6.2.2 @@ -374,19 +376,19 @@ importers: version: 17.4.2 eslint: specifier: ^10.5.0 - version: 10.5.0 + version: 10.6.0 eslint-config-oclif: specifier: ^6.0.162 - version: 6.0.174(eslint@10.5.0)(typescript@6.0.3) + version: 6.0.175(eslint@10.6.0)(typescript@6.0.3) eslint-config-oclif-typescript: specifier: ^3.1.14 - version: 3.1.14(eslint@10.5.0)(typescript@6.0.3) + version: 3.1.14(eslint@10.6.0)(typescript@6.0.3) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@10.5.0) + version: 10.1.8(eslint@10.6.0) eslint-plugin-prettier: specifier: ^5.5.5 - version: 5.5.6(eslint-config-prettier@10.1.8(eslint@10.5.0))(eslint@10.5.0)(prettier@3.9.3) + version: 5.5.6(eslint-config-prettier@10.1.8(eslint@10.6.0))(eslint@10.6.0)(prettier@3.9.4) husky: specifier: ^9.1.7 version: 9.1.7 @@ -401,10 +403,10 @@ importers: version: 18.0.0 oclif: specifier: ^4.23.8 - version: 4.23.24(@types/node@20.19.43) + version: 4.23.27(@types/node@20.19.43) prettier: specifier: ^3.8.3 - version: 3.9.3 + version: 3.9.4 shx: specifier: ^0.4.0 version: 0.4.0 @@ -434,7 +436,7 @@ importers: version: 1.18.5(@types/node@22.20.0) '@oclif/core': specifier: ^4.11.4 - version: 4.11.11 + version: 4.11.14 chalk: specifier: ^4.1.2 version: 4.1.2 @@ -453,16 +455,16 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.18 - version: 4.1.20(@oclif/core@4.11.11) + version: 4.1.20(@oclif/core@4.11.14) chai: specifier: ^4.5.0 version: 4.5.0 eslint: specifier: ^10.5.0 - version: 10.5.0 + version: 10.6.0 eslint-config-oclif: specifier: ^6.0.62 - version: 6.0.174(eslint@10.5.0)(typescript@6.0.3) + version: 6.0.175(eslint@10.6.0)(typescript@6.0.3) mocha: specifier: ^10.8.2 version: 10.8.2 @@ -471,7 +473,7 @@ importers: version: 15.1.0 oclif: specifier: ^4.23.8 - version: 4.23.24(@types/node@22.20.0) + version: 4.23.27(@types/node@22.20.0) packages/contentstack-cli-cm-regex-validate: dependencies: @@ -532,22 +534,22 @@ importers: version: 1.1.6 '@typescript-eslint/eslint-plugin': specifier: ^8.59.2 - version: 8.62.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@5.9.3))(eslint@10.5.0)(typescript@5.9.3) + version: 8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@5.9.3))(eslint@10.6.0)(typescript@5.9.3) chai: specifier: ^4.5.0 version: 4.5.0 eslint: specifier: ^10.5.0 - version: 10.5.0 + version: 10.6.0 eslint-config-oclif: specifier: ^4.0.0 - version: 4.0.0(eslint@10.5.0) + version: 4.0.0(eslint@10.6.0) eslint-config-oclif-typescript: specifier: ^3.1.14 - version: 3.1.14(eslint@10.5.0)(typescript@5.9.3) + version: 3.1.14(eslint@10.6.0)(typescript@5.9.3) eslint-plugin-unicorn: specifier: ^48.0.1 - version: 48.0.1(eslint@10.5.0) + version: 48.0.1(eslint@10.6.0) globby: specifier: ^11.1.0 version: 11.1.0 @@ -565,7 +567,7 @@ importers: version: 15.1.0 oclif: specifier: ^4.23.21 - version: 4.23.24(@types/node@18.19.130) + version: 4.23.27(@types/node@18.19.130) ts-jest: specifier: ^29.4.11 version: 29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@30.4.2(@types/node@18.19.130)(ts-node@10.9.2(@types/node@18.19.130)(typescript@5.9.3)))(typescript@5.9.3) @@ -593,7 +595,7 @@ importers: version: 6.2.53 '@oclif/test': specifier: ^4.1.18 - version: 4.1.20(@oclif/core@4.11.11) + version: 4.1.20(@oclif/core@4.11.14) '@types/jest': specifier: ^29.5.14 version: 29.5.14 @@ -602,28 +604,28 @@ importers: version: 22.20.0 '@typescript-eslint/eslint-plugin': specifier: ^8.59.3 - version: 8.62.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@5.9.3))(eslint@10.5.0)(typescript@5.9.3) + version: 8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@5.9.3))(eslint@10.6.0)(typescript@5.9.3) '@typescript-eslint/parser': specifier: ^8.59.3 - version: 8.62.0(eslint@10.5.0)(typescript@5.9.3) + version: 8.62.1(eslint@10.6.0)(typescript@5.9.3) dotenv: specifier: ^16.6.1 version: 16.6.1 eslint: specifier: ^10.5.0 - version: 10.5.0 + version: 10.6.0 eslint-config-oclif: specifier: ^6.0.165 - version: 6.0.174(eslint@10.5.0)(typescript@5.9.3) + version: 6.0.175(eslint@10.6.0)(typescript@5.9.3) eslint-config-oclif-typescript: specifier: ^3.1.14 - version: 3.1.14(eslint@10.5.0)(typescript@5.9.3) + version: 3.1.14(eslint@10.6.0)(typescript@5.9.3) jest: specifier: ^29.7.0 version: 29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@5.9.3)) oclif: specifier: ^4.23.8 - version: 4.23.24(@types/node@22.20.0) + version: 4.23.27(@types/node@22.20.0) ts-jest: specifier: ^29.4.9 version: 29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@5.9.3)))(typescript@5.9.3) @@ -650,7 +652,7 @@ importers: version: 1.18.5(@types/node@14.18.63)(debug@4.4.3) '@oclif/core': specifier: ^4.11.4 - version: 4.11.11 + version: 4.11.14 chalk: specifier: ^4.1.2 version: 4.1.2 @@ -675,7 +677,7 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.18 - version: 4.1.20(@oclif/core@4.11.11) + version: 4.1.20(@oclif/core@4.11.14) '@types/chai': specifier: ^4.3.0 version: 4.3.20 @@ -690,16 +692,16 @@ importers: version: 10.0.20 '@typescript-eslint/eslint-plugin': specifier: ^5.62.0 - version: 5.62.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@4.9.5))(eslint@10.5.0)(typescript@4.9.5) + version: 5.62.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@4.9.5))(eslint@10.6.0)(typescript@4.9.5) chai: specifier: ^4.5.0 version: 4.5.0 eslint: specifier: ^10.5.0 - version: 10.5.0 + version: 10.6.0 eslint-config-oclif: specifier: ^6.0.62 - version: 6.0.174(eslint@10.5.0)(typescript@4.9.5) + version: 6.0.175(eslint@10.6.0)(typescript@4.9.5) mocha: specifier: ^10.8.2 version: 10.8.2 @@ -708,7 +710,7 @@ importers: version: 15.1.0 oclif: specifier: ^4.23.8 - version: 4.23.24(@types/node@14.18.63) + version: 4.23.27(@types/node@14.18.63) sinon: specifier: ^21.0.1 version: 21.1.2 @@ -784,13 +786,13 @@ importers: version: 22.20.0 eslint: specifier: ^10.5.0 - version: 10.5.0 + version: 10.6.0 eslint-config-oclif: specifier: ^6.0.162 - version: 6.0.174(eslint@10.5.0)(typescript@4.9.5) + version: 6.0.175(eslint@10.6.0)(typescript@4.9.5) eslint-config-oclif-typescript: specifier: ^3.1.14 - version: 3.1.14(eslint@10.5.0)(typescript@4.9.5) + version: 3.1.14(eslint@10.6.0)(typescript@4.9.5) globby: specifier: ^11.1.0 version: 11.1.0 @@ -799,7 +801,7 @@ importers: version: 29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@4.9.5)) oclif: specifier: ^4.23.8 - version: 4.23.24(@types/node@22.20.0) + version: 4.23.27(@types/node@22.20.0) ts-jest: specifier: ^29.4.10 version: 29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@4.9.5)))(typescript@4.9.5) @@ -823,7 +825,7 @@ importers: version: link:../contentstack-variants '@oclif/core': specifier: ^4.11.4 - version: 4.11.11 + version: 4.11.14 async: specifier: ^3.2.6 version: 3.2.6 @@ -869,7 +871,7 @@ importers: version: 6.2.53 '@oclif/test': specifier: ^4.1.18 - version: 4.1.20(@oclif/core@4.11.11) + version: 4.1.20(@oclif/core@4.11.14) '@types/big-json': specifier: ^3.2.5 version: 3.2.5 @@ -899,7 +901,7 @@ importers: version: 9.0.0 eslint: specifier: ^10.5.0 - version: 10.5.0 + version: 10.6.0 mocha: specifier: 10.8.2 version: 10.8.2 @@ -908,7 +910,7 @@ importers: version: 15.1.0 oclif: specifier: ^4.23.8 - version: 4.23.24(@types/node@22.20.0) + version: 4.23.27(@types/node@22.20.0) sinon: specifier: ^17.0.1 version: 17.0.2 @@ -932,7 +934,7 @@ importers: version: 1.18.5(@types/node@20.19.43) '@oclif/core': specifier: ^4.11.4 - version: 4.11.11 + version: 4.11.14 fast-csv: specifier: ^4.3.6 version: 4.3.6 @@ -945,7 +947,7 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.18 - version: 4.1.20(@oclif/core@4.11.11) + version: 4.1.20(@oclif/core@4.11.14) '@types/chai': specifier: ^4.3.20 version: 4.3.20 @@ -963,13 +965,13 @@ importers: version: 4.5.0 eslint: specifier: ^10.5.0 - version: 10.5.0 + version: 10.6.0 eslint-config-oclif: specifier: ^6.0.62 - version: 6.0.174(eslint@10.5.0)(typescript@5.9.3) + version: 6.0.175(eslint@10.6.0)(typescript@5.9.3) eslint-config-oclif-typescript: specifier: ^3.1.14 - version: 3.1.14(eslint@10.5.0)(typescript@5.9.3) + version: 3.1.14(eslint@10.6.0)(typescript@5.9.3) mocha: specifier: ^10.8.2 version: 10.8.2 @@ -978,7 +980,7 @@ importers: version: 15.1.0 oclif: specifier: ^4.23.8 - version: 4.23.24(@types/node@20.19.43) + version: 4.23.27(@types/node@20.19.43) sinon: specifier: ^19.0.5 version: 19.0.5 @@ -1005,7 +1007,7 @@ importers: version: 1.5.4(debug@4.4.3) '@oclif/core': specifier: ^4.8.0 - version: 4.11.11 + version: 4.11.14 axios: specifier: ^1.18.1 version: 1.18.1(debug@4.4.3) @@ -1048,22 +1050,22 @@ importers: version: 10.0.0 '@typescript-eslint/eslint-plugin': specifier: ^6.19.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@10.5.0)(typescript@5.9.3))(eslint@10.5.0)(typescript@5.9.3) + version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@10.6.0)(typescript@5.9.3))(eslint@10.6.0)(typescript@5.9.3) '@typescript-eslint/parser': specifier: ^6.19.0 - version: 6.21.0(eslint@10.5.0)(typescript@5.9.3) + version: 6.21.0(eslint@10.6.0)(typescript@5.9.3) eslint: specifier: ^10.5.0 - version: 10.5.0 + version: 10.6.0 oclif: specifier: ^4.8.0 - version: 4.23.24(@types/node@20.19.43) + version: 4.23.27(@types/node@20.19.43) typescript: specifier: ^5.3.3 version: 5.9.3 vitest: specifier: ^4.1.9 - version: 4.1.9(@types/node@20.19.43)(jsdom@23.2.0)(vite@8.1.0(@types/node@20.19.43)(yaml@2.9.0)) + version: 4.1.10(@types/node@20.19.43)(jsdom@23.2.0)(vite@8.1.3(@types/node@20.19.43)(yaml@2.9.0)) packages/contentstack-import: dependencies: @@ -1081,7 +1083,7 @@ importers: version: link:../contentstack-variants '@oclif/core': specifier: ^4.11.4 - version: 4.11.11 + version: 4.11.14 big-json: specifier: ^3.2.0 version: 3.2.0 @@ -1096,7 +1098,7 @@ importers: version: 4.4.3(supports-color@8.1.1) fs-extra: specifier: ^11.3.3 - version: 11.3.5 + version: 11.3.6 lodash: specifier: 4.18.1 version: 4.18.1 @@ -1118,7 +1120,7 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.18 - version: 4.1.20(@oclif/core@4.11.11) + version: 4.1.20(@oclif/core@4.11.14) '@types/big-json': specifier: ^3.2.5 version: 3.2.5 @@ -1139,13 +1141,13 @@ importers: version: 14.18.63 '@typescript-eslint/eslint-plugin': specifier: ^5.62.0 - version: 5.62.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@4.9.5))(eslint@10.5.0)(typescript@4.9.5) + version: 5.62.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@4.9.5))(eslint@10.6.0)(typescript@4.9.5) eslint: specifier: ^10.5.0 - version: 10.5.0 + version: 10.6.0 eslint-config-oclif: specifier: ^6.0.89 - version: 6.0.174(eslint@10.5.0)(typescript@4.9.5) + version: 6.0.175(eslint@10.6.0)(typescript@4.9.5) mocha: specifier: ^10.8.2 version: 10.8.2 @@ -1154,7 +1156,7 @@ importers: version: 15.1.0 oclif: specifier: ^4.23.8 - version: 4.23.24(@types/node@14.18.63) + version: 4.23.27(@types/node@14.18.63) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@14.18.63)(typescript@4.9.5) @@ -1172,7 +1174,7 @@ importers: version: 1.18.5(@types/node@14.18.63)(debug@4.4.3) '@oclif/core': specifier: ^4.11.4 - version: 4.11.11 + version: 4.11.14 big-json: specifier: ^3.2.0 version: 3.2.0 @@ -1181,7 +1183,7 @@ importers: version: 4.1.2 fs-extra: specifier: ^11.3.0 - version: 11.3.5 + version: 11.3.6 lodash: specifier: 4.18.1 version: 4.18.1 @@ -1215,13 +1217,13 @@ importers: version: 14.18.63 '@typescript-eslint/eslint-plugin': specifier: ^5.62.0 - version: 5.62.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@4.9.5))(eslint@10.5.0)(typescript@4.9.5) + version: 5.62.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@4.9.5))(eslint@10.6.0)(typescript@4.9.5) chai: specifier: ^4.5.0 version: 4.5.0 eslint: specifier: ^10.5.0 - version: 10.5.0 + version: 10.6.0 mocha: specifier: ^10.8.2 version: 10.8.2 @@ -1230,7 +1232,7 @@ importers: version: 15.1.0 oclif: specifier: ^4.23.8 - version: 4.23.24(@types/node@14.18.63) + version: 4.23.27(@types/node@14.18.63) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@14.18.63)(typescript@4.9.5) @@ -1251,7 +1253,7 @@ importers: version: 2.1.0 '@oclif/core': specifier: ^4.11.4 - version: 4.11.11 + version: 4.11.14 '@oclif/plugin-help': specifier: ^6.2.37 version: 6.2.53 @@ -1276,16 +1278,16 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.18 - version: 4.1.20(@oclif/core@4.11.11) + version: 4.1.20(@oclif/core@4.11.14) chai: specifier: ^4.5.0 version: 4.5.0 eslint: specifier: ^10.5.0 - version: 10.5.0 + version: 10.6.0 eslint-config-oclif: specifier: ^6.0.165 - version: 6.0.174(eslint@10.5.0)(typescript@6.0.3) + version: 6.0.175(eslint@10.6.0)(typescript@6.0.3) husky: specifier: ^9.1.7 version: 9.1.7 @@ -1300,7 +1302,7 @@ importers: version: 15.1.0 oclif: specifier: ^4.23.8 - version: 4.23.24 + version: 4.23.27 querystring: specifier: ^0.2.1 version: 0.2.1 @@ -1318,7 +1320,7 @@ importers: version: 1.18.5(@types/node@14.18.63)(debug@4.4.3) '@oclif/core': specifier: ^4.11.4 - version: 4.11.11 + version: 4.11.14 async: specifier: ^3.2.6 version: 3.2.6 @@ -1343,7 +1345,7 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.18 - version: 4.1.20(@oclif/core@4.11.11) + version: 4.1.20(@oclif/core@4.11.14) '@types/mocha': specifier: ^8.2.3 version: 8.2.3 @@ -1355,10 +1357,10 @@ importers: version: 4.5.0 eslint: specifier: ^10.5.0 - version: 10.5.0 + version: 10.6.0 eslint-config-oclif: specifier: ^6.0.62 - version: 6.0.174(eslint@10.5.0)(typescript@4.9.5) + version: 6.0.175(eslint@10.6.0)(typescript@4.9.5) jsdoc-to-markdown: specifier: ^8.0.3 version: 8.0.3 @@ -1373,7 +1375,7 @@ importers: version: 15.1.0 oclif: specifier: ^4.23.8 - version: 4.23.24(@types/node@14.18.63) + version: 4.23.27(@types/node@14.18.63) sinon: specifier: ^19.0.5 version: 19.0.5 @@ -1403,7 +1405,7 @@ importers: version: link:../contentstack-variants '@oclif/core': specifier: ^4.11.4 - version: 4.11.11 + version: 4.11.14 async: specifier: ^3.2.6 version: 3.2.6 @@ -1443,7 +1445,7 @@ importers: version: 6.2.53 '@oclif/test': specifier: ^4.1.18 - version: 4.1.20(@oclif/core@4.11.11) + version: 4.1.20(@oclif/core@4.11.14) '@types/big-json': specifier: ^3.2.5 version: 3.2.5 @@ -1476,10 +1478,10 @@ importers: version: 9.0.0 eslint: specifier: ^10.5.0 - version: 10.5.0 + version: 10.6.0 eslint-config-oclif: specifier: ^6.0.157 - version: 6.0.174(eslint@10.5.0)(typescript@4.9.5) + version: 6.0.175(eslint@10.6.0)(typescript@4.9.5) husky: specifier: ^9.1.7 version: 9.1.7 @@ -1491,7 +1493,7 @@ importers: version: 15.1.0 oclif: specifier: ^4.23.8 - version: 4.23.24(@types/node@20.19.43) + version: 4.23.27(@types/node@20.19.43) sinon: specifier: ^17.0.2 version: 17.0.2 @@ -1546,19 +1548,19 @@ importers: version: 0.2.6 eslint: specifier: ^10.5.0 - version: 10.5.0 + version: 10.6.0 eslint-config-oclif: specifier: ^6.0.137 - version: 6.0.174(eslint@10.5.0)(typescript@4.9.5) + version: 6.0.175(eslint@10.6.0)(typescript@4.9.5) eslint-config-oclif-typescript: specifier: ^3.1.14 - version: 3.1.14(eslint@10.5.0)(typescript@4.9.5) + version: 3.1.14(eslint@10.6.0)(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)) oclif: specifier: ^4.23.8 - version: 4.23.24(@types/node@14.18.63) + version: 4.23.27(@types/node@14.18.63) ts-jest: specifier: ^29.4.6 version: 29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@29.7.0(@types/node@14.18.63)(ts-node@8.10.2(typescript@4.9.5)))(typescript@4.9.5) @@ -1576,7 +1578,7 @@ importers: version: 1.18.5(@types/node@20.19.43) '@oclif/core': specifier: ^4.11.4 - version: 4.11.11 + version: 4.11.14 lodash: specifier: 4.18.1 version: 4.18.1 @@ -1592,7 +1594,7 @@ importers: version: 1.3.1 '@oclif/test': specifier: ^4.1.18 - version: 4.1.20(@oclif/core@4.11.11) + version: 4.1.20(@oclif/core@4.11.14) '@types/node': specifier: ^20.19.39 version: 20.19.43 @@ -1635,111 +1637,80 @@ packages: '@asamuzakjp/dom-selector@2.0.2': resolution: {integrity: sha512-x1KXOatwofR6ZAYzXRBL5wrdV0vwNxlTCK9NCuLqAzQYARqGcvFwiJA6A1ERuh+dgeA4Dxm3JBYictIes+SqUQ==} - '@aws-crypto/crc32@5.2.0': - resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} - engines: {node: '>=16.0.0'} - - '@aws-crypto/crc32c@5.2.0': - resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} - - '@aws-crypto/sha1-browser@5.2.0': - resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} - - '@aws-crypto/sha256-browser@5.2.0': - resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} - - '@aws-crypto/sha256-js@5.2.0': - resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} - engines: {node: '>=16.0.0'} - - '@aws-crypto/supports-web-crypto@5.2.0': - resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} - - '@aws-crypto/util@5.2.0': - resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - - '@aws-sdk/checksums@3.1000.8': - resolution: {integrity: sha512-v0U9S7gBIme3OTgt1LdbAF4RpvavCc+4GK1+1xqAcqtbrHsEhjQo6R45LKcjhs/+WrRJij1Y0Gztw7QPAIeUfA==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/client-cloudfront@3.1075.0': - resolution: {integrity: sha512-Qw7Cmecwpjy4h5+ylsl1Du2QEWexz8MeQXThbpH4jRfxF4LRKCmZ3NJqrFEbT6rG+XkMsR/XOhUcpiVB+6YMNg==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/client-s3@3.1075.0': - resolution: {integrity: sha512-h1A6nIl1YX6Y45enGsTK7ef3ZrOnBiQJ1qF5R2K/nMWfsu6A9mc2Y5T66nxerABzyjjyyvign3MrzafnFoQKmA==} + '@aws-sdk/checksums@3.1000.12': + resolution: {integrity: sha512-RgNDWfhNRIlNEzePIRrYTNi/6q+wwRMMapojn8YVzw4ZcJRa/gxVMtUbeZARR1gmopuv6oIhMbY7J66qIQ0ynw==} engines: {node: '>=20.0.0'} - '@aws-sdk/core@3.974.23': - resolution: {integrity: sha512-MiWR/uWjxjFXGzrE0Ghc5lWxUxzHsUWFhV+OX7M4cR9SrmrnZs6TXavnCWnzzdwJeFri34xQo81rvGNzK3c4BQ==} + '@aws-sdk/client-cloudfront@3.1079.0': + resolution: {integrity: sha512-plOK/g0hvn+rFfzL+1NyhJNQ1RVCfW2Svfzknp0ctU16ji1S9BIK3HL4/8rlbqNgQeH3aiyfurtnYVNMhKHe4Q==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-env@3.972.49': - resolution: {integrity: sha512-liB3yQNHCM9k/gu/w36XHMKPluT7HTlnGUhRbBGSISDQkcr/Sy1zsZabiuvQj8WG5yW573u9RehrBvvnIQ9OEQ==} + '@aws-sdk/client-s3@3.1079.0': + resolution: {integrity: sha512-di9U/7Po7qlVYb2dq58ULsbBAE1pBIk53rux+50LQCvH1X+/l1Ys+BIk/QLBtdaK1nADk0xRNEBbA1QWVnMccw==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-http@3.972.51': - resolution: {integrity: sha512-XET0H2oofciJ5lMRWNIvRjAP7Q3wv2XT+JtJJEdhPWUMwe3TvQ9qcxonpu7vXmNngncvFpi4E2It+Tamas/naA==} + '@aws-sdk/core@3.974.27': + resolution: {integrity: sha512-WRWEgIq6vx+NU6ot3VrRu4Jovj9MIObitSi6of/GV5THDDPccBhivCRNkWJutMM+m3GvdeI3l/UbGNcoOobxOA==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-ini@3.972.56': - resolution: {integrity: sha512-IAmc61hbgQiHht9U3x0tnRwz0lzdwOwD/i9voRgdJrKamF+JtmrBOsW9GwB7mfFonNWOWL4qARWYrF8veEMe3w==} + '@aws-sdk/credential-provider-env@3.972.53': + resolution: {integrity: sha512-+KDA3uc/HZ1vIneGu5QMQb0gAXDYrm2vOE60+BJ7lS0YinMQ5i2oV4PR1A16XkF6K1IbSwjEHd1hQIIgMsK48w==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-login@3.972.55': - resolution: {integrity: sha512-hBBkANo3cDn+h2qxxzER4a+J8JCO9o9Z/YYmU7iky6AcaarX5RRdRcHNC6SLdwY0vAXQygn6soUbDqPn3GghaA==} + '@aws-sdk/credential-provider-http@3.972.55': + resolution: {integrity: sha512-1gBfkWY3RWeBlCoB9lIJjXMx45/54wxcgfzv6BY9otTmMrZPcNPi1v+MwZxxaCUg441NV3jsr1efnFNCXiW70g==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-node@3.972.58': - resolution: {integrity: sha512-OyCLVmSI7pZO8hxwNVX6pXhTVlJqRBTp+ijdEfJSUj0RyjHnF602OfAarOzGq6wkGodeFkYBt8MmJ6A6ycRgWw==} + '@aws-sdk/credential-provider-ini@3.972.60': + resolution: {integrity: sha512-CV2md+PXvABwRjApWGhQ0wACy9WSFIhnUGrovLcjnjBCd/46TbuivLADtkF8IWNjtCQmQ+2IagSaxqBYqXBNAQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-process@3.972.49': - resolution: {integrity: sha512-C8h36lBuC/RnBSsjlO+dn6xZm3KbAl5vpJaVPAfQnMmz2/OISmKOc8XZcqMQgO2ADwBYNRMM6Kf3vz9G/TulMQ==} + '@aws-sdk/credential-provider-login@3.972.59': + resolution: {integrity: sha512-JG4S9yyA1GFzJdJXqLKrUzZbyK+VDp2QIsJD7YOicJHAhqymfHpDJIok2dLnhOdVB0I37RjdC53uOwCMVS00gw==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-sso@3.972.55': - resolution: {integrity: sha512-1FkOz74Ea5QGS9jtIoXp55T/IkSS3spv+nLTT07fRY/+T5xmEOqaYBVIaEmX4zTNvbV6g2lrtlaVKWEoNyJt3w==} + '@aws-sdk/credential-provider-node@3.972.62': + resolution: {integrity: sha512-S6Slq3Tx7bvFk5yc34XNADyZYTX2HUXvaFAnowGRQnhjBO8J/mP62Fn7lxvJwjaDyYm/7gh9h6HEHaltRyMFXw==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-web-identity@3.972.55': - resolution: {integrity: sha512-g2BoECD1q01kTPByi56+VLVvdWDzMkKIcr77qixpqH0okw2t0U5CoPv+6S8v/D1Y2Wa6QKKtn6XAtDzP+Kfpvg==} + '@aws-sdk/credential-provider-process@3.972.53': + resolution: {integrity: sha512-EhfH+MQlqOMCkXIVa8MMObPzAQqwTTtxA7KhEJiyPeuNVA8PLOOUpgK7nBrgaDaGiIDLN/9LpGdaHuDjomeRTw==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-flexible-checksums@3.974.33': - resolution: {integrity: sha512-qMgQSPemQq2/eW/e/0+SpY4kYR5L7dUgBiVdEc5bd+ztHNv07ZMYiI+sTiir3TgKndFfglSw/VFi7oZJ6bZ63g==} + '@aws-sdk/credential-provider-sso@3.972.59': + resolution: {integrity: sha512-h8793pOjcImx0SB+VcLONcaQQ57VAvKVuqyewQMRKqqH+CSXsG2dwOeLMUJPMxLdNvL7dXOM0ueTukyNUnu5mA==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-sdk-s3@3.972.54': - resolution: {integrity: sha512-GDfDQ0gwLFRKN9gWIKcmVrHJ3e7XagnY7N1LLzMVNgnOnuY7f/ALgmy3CuBjosWD95T/Z6e+gs1IeWmLPkyLKQ==} + '@aws-sdk/credential-provider-web-identity@3.972.59': + resolution: {integrity: sha512-VoyO9+vl3XVmpZwn4obskrWIkrA/Jf3lSe1E3ZERlaN9u0D4YZ6+HywC3+L98QOXqZesEfedk67gRER8tK8+8w==} engines: {node: '>=20.0.0'} - '@aws-sdk/nested-clients@3.997.23': - resolution: {integrity: sha512-gO93ZPsI2bxeFZD42f1/qjDw6FAZkNZcKRO94LIiT03fzOmcJ9e/tunxjVjA1Rl69ClmVJzz8H3G9CdKef10PA==} + '@aws-sdk/middleware-sdk-s3@3.972.58': + resolution: {integrity: sha512-6uaWRRYJGhOqc9EoTSbLDf9nI/doSAb5vAwGshs5/Hlv5Ce25b246lBkbRd/77fLAi+uMI1a70mJzVyLyCEufQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/signature-v4-multi-region@3.996.35': - resolution: {integrity: sha512-6L/VWs+Wch2stHemCGTmUNqKLMzURxQDK5boNG3Jn3kAOp71meDUuS5sbObpEvFxHDq0uWeSLFDNSYsjNt+Dlg==} + '@aws-sdk/nested-clients@3.997.27': + resolution: {integrity: sha512-A8PIePF9NIIOJ/4Lg1rl9xm/+QaKkHGetq+Z9wb5B+3Da31YYXRo8n7IDMh5C+HQI5eyEmjrwkGWVdYtnLtbXQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/token-providers@3.1074.0': - resolution: {integrity: sha512-pv80IzgGW4RnXWtft692chZOM9i6PhebVsLCcnaM4dBEPZva2fE6FXAHs76G7Rc7s3yGyX/68G0nZMrUy+Vmpg==} + '@aws-sdk/signature-v4-multi-region@3.996.38': + resolution: {integrity: sha512-C379Sk+MiFZCfWZphKlMyLHKxV22OjoGM5KJjj5IJNJcOCWL4IGIpnEGzv1FQiRwhYXfq55SJMfxlqPE08JJ9g==} engines: {node: '>=20.0.0'} - '@aws-sdk/types@3.973.13': - resolution: {integrity: sha512-pEHZqRkAlHfnfAU9tK+WpKv/gBNjGJrHMgA3A0iYRGyswBS2t0pfez+lWlwktb3Bqa0ovh7w/QJTFwp3fDxLNg==} + '@aws-sdk/token-providers@3.1079.0': + resolution: {integrity: sha512-cbietrLlHPhhmbnMPTuDS4Zj/KNGhY+3vVhn6dwjO6Dqzrwothzg2srtcY34T9mlICsTXn34avDoWLHSntP54A==} engines: {node: '>=20.0.0'} - '@aws-sdk/util-locate-window@3.965.8': - resolution: {integrity: sha512-uUbMs1cBZPafD0ohUj6EwNf0fPZ534NvBxHox4hjX+0Rxq5paSYUem7+hi833pYrzrcnBATKIYpR02MDXT5M9g==} + '@aws-sdk/types@3.973.15': + resolution: {integrity: sha512-IULn8uBV/SMtmOIANsm4WHXIOtVPBWfOWs3WGL0j/sI+KhaYehvOw0ET+9urnn8MBpiijuU/0JOpuwKOE451PQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/xml-builder@3.972.31': - resolution: {integrity: sha512-SzE4Pgyl+hDF+BuyuzxUSpwnuUu9lJuO1YGgteG89/4Qv0+2IQiVQqdbPV32IozLvXWQChPQcdkk/sKvb1QHiQ==} + '@aws-sdk/xml-builder@3.972.33': + resolution: {integrity: sha512-ezbwz9WpuLctm6o7P2t2naDhVVPI5jFGrVefVybhcKGjU57VIyT46pQVO0RI2RYkUdhdj2Z9uSIlAzGZE9NW9A==} engines: {node: '>=20.0.0'} - '@aws/lambda-invoke-store@0.2.4': - resolution: {integrity: sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==} + '@aws/lambda-invoke-store@0.3.0': + resolution: {integrity: sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ==} engines: {node: '>=18.0.0'} '@babel/code-frame@7.29.7': @@ -2966,8 +2937,8 @@ packages: resolution: {integrity: sha512-Fg93aNFvXzBq5L7ztVHFP2nYwWU1oTCq48G0TjF/qC1UN36KWa2H5Hsm72kERd5x/sjy2M2Tn4kDEorUlpXOlw==} engines: {node: '>=18.0.0'} - '@oclif/core@4.11.11': - resolution: {integrity: sha512-LoGzrvkH9I8dwhxuLafcf90MAp+fYfAiAhpyixaVAWaclIgs+vXeMMQwBG90/wqjdygIKcFAqNnNJrfl3s3X8Q==} + '@oclif/core@4.11.14': + resolution: {integrity: sha512-cZ5Ktd+rT0PO+o7KBH4vRFTgg+xMLf8F41WK39p8MkXEViZA/Qqe+4lzZT6102zgUxMORET1HtF9t5w8CB3tnQ==} engines: {node: '>=18.0.0'} '@oclif/linewrap@1.0.0': @@ -3023,8 +2994,8 @@ packages: '@otplib/preset-v11@12.0.1': resolution: {integrity: sha512-9hSetMI7ECqbFiKICrNa4w70deTUfArtwXykPUvSHWOdzOlfa9ajglu7mNCntlvxycTiOAXkQGwjQCzzDEMRMg==} - '@oxc-project/types@0.137.0': - resolution: {integrity: sha512-WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA==} + '@oxc-project/types@0.138.0': + resolution: {integrity: sha512-1a7ZKmrRTCoN1XMZ4L0PyyqrMnrNlLyPuOkdSX2MZg7IiIGRUyurNhAm73ptDOraoBcIordsIGKNPKUzy3ZmfA==} '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -3050,91 +3021,91 @@ packages: resolution: {integrity: sha512-pmNVGuooS30Mm7YbZd5T7E5zYVO6D5Ct91sn4T39mUvMUc3sCGridcnhAufL1/Bz2QzAtzEn0agNrdk3+5yWzw==} hasBin: true - '@rolldown/binding-android-arm64@1.1.3': - resolution: {integrity: sha512-DT6Z3PhvioeHMvxo+xHc3KtqggrI7CCTXCmC2h/5zUlp5jVitv7XEy+9q5/7v8IolhlioawpMo8Kg0EEBy7J0g==} + '@rolldown/binding-android-arm64@1.1.4': + resolution: {integrity: sha512-EZLpf/8y7GXkkra90ML47kzik/GMP3EMcE9bPyHmRfxLC6z9+aW5A8poCsoxjrT5GfEcNAAvWwUHjvP1pUQkfw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.1.3': - resolution: {integrity: sha512-0NwgwsjM7LrsuVnXMK3koTpagBNOhloc/BNjKqZjv4V5zI5r13qx69uVhRx+o5Z0yy4Hzq+lpy7TAgUG/ocvrw==} + '@rolldown/binding-darwin-arm64@1.1.4': + resolution: {integrity: sha512-aUi+HBvmYb7j8krl1+qJgkG8C17fO79gk3c+jPw4S8glRFc1DTija9S3EyaTSQUm5GJXYKDAsugBEhFHH2vYiQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.1.3': - resolution: {integrity: sha512-YtiBp4disu6V560loT6PjMdiRaWmVvDNrUunAalbiFx2ggeJwxdAsgZMcoGP17uyAsTwAj5V1niksxlHnVQ1Sw==} + '@rolldown/binding-darwin-x64@1.1.4': + resolution: {integrity: sha512-F7hHC3gwY11+vByKPRWqwGbeXWVgKmL+pTGCinaEhdihzBV2aQ0fvZOch9cXYUOKuKKq429HeYXOqQLc7wFCEg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.1.3': - resolution: {integrity: sha512-yD3EkEdXk2LypPxnf/kSZHirarsI8gcPzc62SukhR9VJTyvV+F9Q/GxWNuCojc7sXyuVC4DxRGhdDK4X8VSsbw==} + '@rolldown/binding-freebsd-x64@1.1.4': + resolution: {integrity: sha512-sI5yw+7s92SK6odiEhD5lKCBlWcpjHS5qyqpVQbZAJ0fIzEUXrmbl3DH2ybR3PZogulNJF+COLtmA8hUfvkCCQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.1.3': - resolution: {integrity: sha512-c+8vieQbsD7HNAHKIA34w0GJ9FedFFuJGD+7E6vz7Q3uqAIugL5p45fhlsj4UaAsHpcmlqugBWMhA0/j7o0sIg==} + '@rolldown/binding-linux-arm-gnueabihf@1.1.4': + resolution: {integrity: sha512-mCi0OKgEieFircrtVYmQAFGszRtMnZ6fpZAXrxanXAu7lqZcsK1E1RAaZNG0uKAnxox3B1f4EyQNnoyMfN1vAA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.1.3': - resolution: {integrity: sha512-50jD0uUwLvur7Zz9LHz17kaAdTPjn5wN93hEgjvmYFRZwiR7ZJYovTd5ipyWJDAnXKvZ+wgc+/Ika6dwSF5OcA==} + '@rolldown/binding-linux-arm64-gnu@1.1.4': + resolution: {integrity: sha512-B9Ial3Kv5sh0SHnB1g/QWcUQCEvCF6QKGAl4zXypYj65mVI+B4AhFBwPtSN7pDrJeIx8Z7zdy4ntx+wQABom7w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@1.1.3': - resolution: {integrity: sha512-BO9+oPL8K9poZJBfYPsXNtYjPE5uM3qeehT3aFcW4LITOl+iSqhp0abzjR2nWBUNjIZeKXjAEWBZ64WjNoHd6w==} + '@rolldown/binding-linux-arm64-musl@1.1.4': + resolution: {integrity: sha512-lZVym0PuHE1KZ22gmFTC15lAkrg9iTszR617oYRB/iPY1A56ywoJzVKOJBKaot5RiikCObmur6pogpse3gRcng==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-ppc64-gnu@1.1.3': - resolution: {integrity: sha512-f3VpLB1vQ0Eo6ecr/6cekLnvYMFF4YBFoVGkfkvPLq1bAkbAwHYQPZKoAmG6OJyTcxxoC+AvezGx/S1obNC0Mw==} + '@rolldown/binding-linux-ppc64-gnu@1.1.4': + resolution: {integrity: sha512-t2DNiLJWNTbnEHyUzTumldML6ET4/g16467LZoDDJ3tSxGvguL5/NyC2lCsNKuyRycg9XeDQF5SSv+TNOhQEXg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] - '@rolldown/binding-linux-s390x-gnu@1.1.3': - resolution: {integrity: sha512-AmurZ26Pqx/RI9N1gzEOCklkKXl927yjfXWUUS0O7Puh8ARM/Ob8qfrD3qnWksScdw6cSrW5PSHE9DyLu7+PtA==} + '@rolldown/binding-linux-s390x-gnu@1.1.4': + resolution: {integrity: sha512-0WIRnL1Uw4BvTZRLQt+PVgo6ZKTJadlC2btP+/EOXv2f/DWbY0rEgl+y834mIVwP1FkTlWVTrGGJXf12lru7EQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] - '@rolldown/binding-linux-x64-gnu@1.1.3': - resolution: {integrity: sha512-JJpqs8bRGITDOdbkNKnlojzBabbOHrqjSvDr0IVsZObE1lBcPjxItUEY9eWIDbxaJ3cGrXPWGfGkIxFijg/URg==} + '@rolldown/binding-linux-x64-gnu@1.1.4': + resolution: {integrity: sha512-JWtGshGfX+oENAKonoNkqEJX+7hC8yfhi9GUyPX1VX4mdh1y5r+ZiJLR5XzAB0aoP6s/PcILsGjKq8O0mm24bw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-musl@1.1.3': - resolution: {integrity: sha512-rSJcdjPxzA/by/6/rYs+v+bXU7UjvnbUWz8MJb6kh6+knqB1dCrtHg0uu7C/4haqJvqdkYHQ5IGn+tCH9GLW/g==} + '@rolldown/binding-linux-x64-musl@1.1.4': + resolution: {integrity: sha512-rT6yQcxUuXs4CnbofqwHRRV0iem349rLMYpTjkgQGLjrY4ado/eDzwPZPTCgTOlF6Nkp8NEv70yLMTn6qkWxsQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rolldown/binding-openharmony-arm64@1.1.3': - resolution: {integrity: sha512-hQ3/PYkDJICgevvyNcVrihVeqq7k1Pp3VZ9lY+dauAYUJKO+auqApvANhvR1An9BhmqYKvW2Mu1F9u4DXSMLxQ==} + '@rolldown/binding-openharmony-arm64@1.1.4': + resolution: {integrity: sha512-KXMGoboq5cyaCQjDA4GLuRiOwBQ0EyFnJoVViLeZ45/3rFItRODEr+NdsBcVpll40hhNArlm/speWGRvj08LzA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.1.3': - resolution: {integrity: sha512-Elcv/BtML9lXrV6JuKITc/grN2kYV9gjsQpW8Jfw4ioK0TOkjBjye0nnyqQNy9STNaI20lXNaQBRrD5gSgR0Yg==} + '@rolldown/binding-wasm32-wasi@1.1.4': + resolution: {integrity: sha512-5K83rb36oJiY7BCyE9zLZtGcPV4g5wvq+xwdO0XPIwDVZI8cyB/AUjkNXGb92/rnmezEkjMOpgY61rtwjQtFwg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.1.3': - resolution: {integrity: sha512-2DrEfhluH9yhiaFApmsjsjwrSYbNcY1oFTzYSP1a535jDbV98zCFanA/96TBUd0iDFcxGmw9QRExwGCXz3U+/g==} + '@rolldown/binding-win32-arm64-msvc@1.1.4': + resolution: {integrity: sha512-PnWBtw3TV5KOg69HQQDR0mnQuyCmSGR2pAB4DC1rPF808fgKeTUMj2EOEyKATpgiuxuR5APQmiDO7PDgEjTFSA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.1.3': - resolution: {integrity: sha512-OL4OMk7UPXOeVGGd3qo5zJyPIljf4AFgk5QAkPPS+OoLuOOozhuaQGC18MxVTnw/06q93gShAJzlwnSCY9YtqA==} + '@rolldown/binding-win32-x64-msvc@1.1.4': + resolution: {integrity: sha512-M1lpniBePobTfsa7Ks9a199e1akxsXn+GYBUKsEzv3YFzOm1HJAMNwKI3qr0Zq+mxwx9gOZoTdP1yXRYsZUocQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -3376,42 +3347,30 @@ packages: Deprecated: no longer maintained and no longer used by Sinon packages. See https://github.com/sinonjs/nise/issues/243 for replacement details. - '@smithy/core@3.26.0': - resolution: {integrity: sha512-mLUktFAn+Pa2agl1J7VgtYNFWCX8/b4GMJSK1hCu4YCvtBfM6F8Os3EP4ry+DFFlXOf3wyvlgXhuUdFoy52D3g==} + '@smithy/core@3.29.1': + resolution: {integrity: sha512-qoiY4nrk5OCu1+eIR1VB8l5DmON/oKiqrd5zZFAhXJXjJlLWQusKEW/SkBDAtGDcPaz86m9kfcE1lngU0GlM6A==} engines: {node: '>=18.0.0'} - '@smithy/credential-provider-imds@4.4.2': - resolution: {integrity: sha512-18UMDMyrAbDcpmL1gLUA7ww0fRTcdCrSjSJOi2Sbld+tVjwD/pW+OAwjlScFLR7vvBnhZrIPQ7kVuTf1mnJLug==} + '@smithy/credential-provider-imds@4.4.6': + resolution: {integrity: sha512-B2WQ/PV/H6Jeg3lrIq6bKUfa6Hy01mtK7CGs6lhjzHA6k4aagldH6T6eEjnzKl4HI0cJnAsxfJ19pgb5PV+CVQ==} engines: {node: '>=18.0.0'} - '@smithy/fetch-http-handler@5.5.2': - resolution: {integrity: sha512-Ei/UK/QMhq0rKaMqGPlOAkE2yS9DZeYmZdk1RAKc3vp3zxgleZHZyBLlZv8yLsxljX4svCRuMTD6u3LLIcU4Bg==} + '@smithy/fetch-http-handler@5.6.3': + resolution: {integrity: sha512-CwCc/7SMTj45y97MUnDTbTaxvtAsiNNRm81z3abROIuMbMsC2Iy5EKfkkVdsKrz8WExQAAMx1EJapq+9j4fFTQ==} engines: {node: '>=18.0.0'} - '@smithy/is-array-buffer@2.2.0': - resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} - engines: {node: '>=14.0.0'} - - '@smithy/node-http-handler@4.8.2': - resolution: {integrity: sha512-wfl1uwrAqMH9/pi4kqBo5LBcFwrJLxuDLqL7p7qNcJIFcyZDUc6pzhYk4CYv+DP7fIUpQCZumwNnkhPKS52osQ==} + '@smithy/node-http-handler@4.9.3': + resolution: {integrity: sha512-qZTa4gQFUo8RM02rk6q5UVTDLNrQ1oS20LsepBzqq1QBVc/EHJ03OOUADcqMZiXHArW+Y7+OGY0BpdTwZRq/Yg==} engines: {node: '>=18.0.0'} - '@smithy/signature-v4@5.5.2': - resolution: {integrity: sha512-7xHpmPY4rt0IOmeAA8EfjgEH8isT+587TCdy9H6a7d4OMi5CQ0oEHhWllunvPu4j4Cq0vTFwdxXN/kABWPjdyA==} + '@smithy/signature-v4@5.6.2': + resolution: {integrity: sha512-QgHflghMoPxCJ9axiCVh8KZfbC9fuP6vkXXyK//E3cq7nLaSSyyLj0GAoqVWezYeDQmXIZhmlRvLE16jsqDK6g==} engines: {node: '>=18.0.0'} - '@smithy/types@4.15.0': - resolution: {integrity: sha512-Z5TAOxygoFvybJV3igo5SloFflSokHx2hu1eFA+DxDTcn+FtKxUSui+rbTRG1pAafMA888Z3MVvCWUuvCrTXjg==} + '@smithy/types@4.15.1': + resolution: {integrity: sha512-x3L0XSACF6UYzKpa9biqiRMgvH5+wnFFew9Tm/grFYqgaupPwx/+ojDPpPJM8dZON3S9tjz5U+PQYsCBd1Mw5Q==} engines: {node: '>=18.0.0'} - '@smithy/util-buffer-from@2.2.0': - resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} - engines: {node: '>=14.0.0'} - - '@smithy/util-utf8@2.3.0': - resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} - engines: {node: '>=14.0.0'} - '@so-ric/colorspace@1.1.6': resolution: {integrity: sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==} @@ -3701,11 +3660,11 @@ packages: typescript: optional: true - '@typescript-eslint/eslint-plugin@8.62.0': - resolution: {integrity: sha512-o+mpz7EYiMzXoySXiKmzlabIvTVqUuK5yLrAedRPRDA0IpPFMUV1IXt6OqljIxX/kumN6EjUYp41Hqelh6p/Dw==} + '@typescript-eslint/eslint-plugin@8.62.1': + resolution: {integrity: sha512-4EQM77WgVNxj7OkL/5b/D/xZsw00G577+UriYTC7JF5opcF3T2AuoeY7ueLaZgSVjSgCS6yOAJB5bRGLPSJUzA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.62.0 + '@typescript-eslint/parser': ^8.62.1 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' @@ -3719,15 +3678,15 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.62.0': - resolution: {integrity: sha512-dzHeT2gySzZtLDsuqxU9AkYgIsQoHAHtRBpOqM+Ofzx1Bwrd2RcCjQJ+6iQbsHOIR6NS33bF2W1k3blN1zLDrA==} + '@typescript-eslint/parser@8.62.1': + resolution: {integrity: sha512-sPhE4iHuJDSvoAiec+Ro8JyXw8f0ql13HFR82P99nCm9GwTEKG0KYLvDe6REk8BCXuit6vJAv/Yxg5ABaNS2rA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.62.0': - resolution: {integrity: sha512-wexnCqiTg7BOGtbLDftYpRWlmLq4xfoMd7BKFR6Y75sZS3QmRKLdN3yWLhmIYgqMmP/OXWpj3H8odkb5nGURCQ==} + '@typescript-eslint/project-service@8.62.1': + resolution: {integrity: sha512-yQ3RgY5RkSBpsNS1Bx/JQEcA24FOSdfGktoyprAr5u18390UQdtVcfnEv4nIrIshNnavlVyZBKxQwT1fIAE6cg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' @@ -3744,12 +3703,12 @@ packages: resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/scope-manager@8.62.0': - resolution: {integrity: sha512-1lX38kNxXIRb8mEc3lbq5mdHq1Pf2+U0nFU65KfT18mtPxxl0fvjuEE92mHuXPuCtElJhOrddOpyMlM3Z0umEA==} + '@typescript-eslint/scope-manager@8.62.1': + resolution: {integrity: sha512-r4d249KbQ1SFdpeStvob8Ih6aPPIzfqllPVOtvhve6ZcpuVcYo5/7zUWckKpHE7StASX4kTKZTLf0WQm/wPkcg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.62.0': - resolution: {integrity: sha512-y2GAdB6ykaXUvuspbYnizQc4oDDz0Tz/Yc7iWrXf9mx8vm/L/0vLHCe0tS2boG96Zy+DivnVDQ9ZUEWoHqqx1g==} + '@typescript-eslint/tsconfig-utils@8.62.1': + resolution: {integrity: sha512-xadytJqX9vJVQ2fdQjkcIVigwaOJNWkpjdLt6cEQ+xPnrI1fkp+/jZE/I97k9KUjqtpd25i0HeyZf3T6dutv2g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' @@ -3774,8 +3733,8 @@ packages: typescript: optional: true - '@typescript-eslint/type-utils@8.62.0': - resolution: {integrity: sha512-+g5O3j0w2ldzC86Pv6fvbO/xhAonbJFIdf/MKQ1d30gndlsVzUOE83ldfSE15Qrl9fhFjK6AovHs5Wpp6vx86w==} + '@typescript-eslint/type-utils@8.62.1': + resolution: {integrity: sha512-aXM5xlqXiTxPibXB93cLAURfT3rlizf7uMXISCXy66Isr/9hISJx3yDsKl0L7lKa51b8JpFuNKby0/O0pEm9jg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -3793,8 +3752,8 @@ packages: resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/types@8.62.0': - resolution: {integrity: sha512-KvAclkktORPvM54TgLgA4z9HIV1M8zOgw9ZVNXl9f/8dLYfXYX1wkMXP7qmabpijQRV5bHJLOmoyGQbLMaUYeg==} + '@typescript-eslint/types@8.62.1': + resolution: {integrity: sha512-ooCzJFaf+Hg+uG6fA3NRFGuFjlfNlDhBthbv4ZPU/0elCAFUfnyXUvf/WOpHz/jYwSmvU2GkR2LtyUfy1AxZ1Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@5.62.0': @@ -3824,8 +3783,8 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@8.62.0': - resolution: {integrity: sha512-+hVbNxtW64pIcZWDPGbyaKF7vp2IBTVY5ma1blwwksrjdsbdqqEKvJWMGbBofei4F6Dovx1M0RJgoFeNu2279A==} + '@typescript-eslint/typescript-estree@8.62.1': + resolution: {integrity: sha512-xMcW9oP9u7fAMXYs9A65CVmtLQe2r//oXINHfi8HV+oiqhih17sbLdhXr4540YWlgpDKQdY854OL5ZrdCiQsAA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' @@ -3848,8 +3807,8 @@ packages: peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/utils@8.62.0': - resolution: {integrity: sha512-82r66fi9zYwZ+mTq3vKgwjbZ1PVk/DJzrXFLpG6RnBbdvH8TEGVHIs9H4d2drhkOzf0syZuD/OZvvlu6GDbP4g==} + '@typescript-eslint/utils@8.62.1': + resolution: {integrity: sha512-sHtbPfuKNZCG+ih8SyjjucqRntSVmp8XgL5u6o9mAhiSn8ds5o/M/XdM0abweme2Tln3szOstOrZ9OXitvPh0g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -3867,8 +3826,8 @@ packages: resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/visitor-keys@8.62.0': - resolution: {integrity: sha512-CY3uyFSRbcQv3nnSv8S0+lDftMVz6P963PoRlxrV7ew/Md564g9ut60PYzdLM5qW4jFn93GBF+Soi90ISAN+GQ==} + '@typescript-eslint/visitor-keys@8.62.1': + resolution: {integrity: sha512-4g3BLxfdTMy8iZG0MaBkadnlRrCJ74cQiFbyEVMrkwIoqdyaXXQM22cotDvrl4x28wgIZ9rEJRoM+mmhSJpJ1g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.2': @@ -3984,11 +3943,11 @@ packages: cpu: [x64] os: [win32] - '@vitest/expect@4.1.9': - resolution: {integrity: sha512-vl/rYsUKcBr3SnQn166+XR5ZQcgMx3DQhFWdfli/cWpLnLUmbxZvyrJZotLFUryib+LtArYMSTJ5RbQ57ZqrlA==} + '@vitest/expect@4.1.10': + resolution: {integrity: sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==} - '@vitest/mocker@4.1.9': - resolution: {integrity: sha512-EVkXzBjrPGM+cK8/ANWgBrkUCfJfb38/EfTSO8h7pWvKkyPkpWxvR7BkD2MyItMF62C97zAEoqdpUixwR/e+Rw==} + '@vitest/mocker@4.1.10': + resolution: {integrity: sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3998,20 +3957,20 @@ packages: vite: optional: true - '@vitest/pretty-format@4.1.9': - resolution: {integrity: sha512-s0iufns3iIFitdgm+YR7g1whCAaGtXz459VS9/PqyKDEEFgYIhsHOQmXgIgDuYCt7DeQmiZT0Qe2OA2p4ZPu5A==} + '@vitest/pretty-format@4.1.10': + resolution: {integrity: sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==} - '@vitest/runner@4.1.9': - resolution: {integrity: sha512-KXLMDtc7oe70+3mJfGrPUWPesswH+3sTxAMAMl8DG7I8IUQT4XW718dY5ID3vPUcmlu27CcKfY4P3h3I29SLJg==} + '@vitest/runner@4.1.10': + resolution: {integrity: sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==} - '@vitest/snapshot@4.1.9': - resolution: {integrity: sha512-Jc7RKGNBo8Z28WYIm0Niej4xdSPByRf6mU58VpHQkd6Zh05rlnA+twjbK5HyeIGHxrzsc3mJgS43uM0CZKzaIA==} + '@vitest/snapshot@4.1.10': + resolution: {integrity: sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==} - '@vitest/spy@4.1.9': - resolution: {integrity: sha512-fHpsS6mIi+PiEW+vcRVOMkX1oSaPKne3VOclSFICPcGOmfKgXPU5iAah+wcNcj2xPrCCmfq99IDGf+EojhhvhA==} + '@vitest/spy@4.1.10': + resolution: {integrity: sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==} - '@vitest/utils@4.1.9': - resolution: {integrity: sha512-A51o8ymO5PpqlWNnBP9ZHPXDIpuMtTLlGSjN7la4US+LJzoUMyhwjA5QXlm39JexgwHKW4Xjs8Z2d3dLCXOeuA==} + '@vitest/utils@4.1.10': + resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==} '@wry/caches@1.0.1': resolution: {integrity: sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==} @@ -4183,9 +4142,6 @@ packages: arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -4371,9 +4327,6 @@ packages: peerDependencies: '@babel/core': ^7.11.0 || ^8.0.0-beta.1 - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - balanced-match@4.0.4: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} @@ -4381,8 +4334,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.10.40: - resolution: {integrity: sha512-BSSLZ9/Cjjv7Gtj5B68ZzXcXUg8iOf3fme+FCuh8rC/Go+Kmh8cox7M3A8dolou16s64QjLPOSdngh7GxXvkSw==} + baseline-browser-mapping@2.10.42: + resolution: {integrity: sha512-c/jurFrDLyui7o1J86yLkRu4LMsTYcBohveus7/I2Hzdn9KIP2bdJPTue/lR1KH46enoPbD77GKeSYNdyPoD3Q==} engines: {node: '>=6.0.0'} hasBin: true @@ -4412,12 +4365,6 @@ packages: bowser@2.14.1: resolution: {integrity: sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==} - brace-expansion@1.1.15: - resolution: {integrity: sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==} - - brace-expansion@2.1.1: - resolution: {integrity: sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==} - brace-expansion@5.0.7: resolution: {integrity: sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==} engines: {node: 18 || 20 || >=22} @@ -4507,8 +4454,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001799: - resolution: {integrity: sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==} + caniuse-lite@1.0.30001802: + resolution: {integrity: sha512-vmv8ub2xwTNmljSKf82mtCk5JH7hC+YgzLj3P5zotvA0tPQ9016tdNNOG8WRca1IxOnhSsivB+J0z5FeE5LOUw==} capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} @@ -4749,9 +4696,6 @@ packages: compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - concat-stream@2.0.0: resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} engines: {'0': node >= 6.0} @@ -5148,8 +5092,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.381: - resolution: {integrity: sha512-n9Wa6yB+vDsGuA8AKbl/0z7HbvWqt5jxIdvr1IUicd0ryPrk7/xzwqLv8D9AbbvZ6avVNtXYLTfmgFHkwkyelg==} + electron-to-chromium@1.5.387: + resolution: {integrity: sha512-TaxwufTFDufvPEoXdhwVrA3UdFWBeWGkYoJ1K8ldF1xe6gKfth6iRNS5lTQ5JPNOHdGQm8PT1QYKUqFLCiUefQ==} elegant-spinner@1.0.1: resolution: {integrity: sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==} @@ -5217,8 +5161,8 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-module-lexer@2.2.0: - resolution: {integrity: sha512-3lGxdTXCLfe1MYfTz1y2ksAAUM4NAOP6rPEjxGJVKO7TZ5+tvHCaQWGpC4Y3IXvW3ece0Cz1cIP4FWBxOnGCTQ==} + es-module-lexer@2.3.0: + resolution: {integrity: sha512-KLdwQm2NvGLDkQDCGvmiQrhkd0JbMzXthwQAUgWjQuQdBLFa3eiBP5arXZyA+f8x+x7OXgud6bq2rxjGtHV2tw==} es-object-atoms@1.1.2: resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} @@ -5276,8 +5220,8 @@ packages: resolution: {integrity: sha512-5tkUQeC33rHAhJxaGeBGYIflDLumeV2qD/4XLBdXhB/6F/+Jnwdce9wYHSvkx0JUqUQShpQv8JEVkBp/zzD7hg==} engines: {node: '>=12.0.0'} - eslint-config-oclif@6.0.174: - resolution: {integrity: sha512-K2Fz0KdcYlypl5sRO2gxbIPD8M4RyhtZK20soW5HoLpvNXInaa7ruZvUHozwee9blQReV9Z1uFldPpWpUkXHlg==} + eslint-config-oclif@6.0.175: + resolution: {integrity: sha512-QO5NHJaMk2HkglS0mywfIrwDSXNeKfIS+uhNrXuuSLKeLPOpDYytsz5LMOGQxuHlkHpOYSrzDyL2yDR2WGgwGA==} engines: {node: '>=18.18.0'} eslint-config-prettier@10.1.8: @@ -5332,8 +5276,8 @@ packages: eslint-plugin-import-x: optional: true - eslint-module-utils@2.13.0: - resolution: {integrity: sha512-bLohSkT6469rRs8czj0tLTD8vaeIS/whvPRJVjDr7IuoTT1k5DYDERlNycjDj/HkOlvQdYurmfZ/g3fG5bgeLQ==} + eslint-module-utils@2.14.0: + resolution: {integrity: sha512-W2WCRZ9Dqntd+2u8jJcVMV2PKulc6RdLgUUoh/yQr3uB6lo/ZOeGx11sv60/8S4QFFKNslAlWhr9u0Ef7ZW6Ig==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -5516,8 +5460,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.5.0: - resolution: {integrity: sha512-1y+7C+vi12bUK1IpZeaV3gsH9fHLBmPvYmPx42pvT/E9yG0IC8g3PUZZgp0+JLJl7ZDK0flc2gc+Aw9dpCvIsQ==} + eslint@10.6.0: + resolution: {integrity: sha512-6lVbcqSodALYo+4ELD0heG6lFiFxnLMuLkiMi2qV8LMp54N8tE8FT1GMH+ev4Ti00nFjNze2+Su6DsV5OQW3Dg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -5649,8 +5593,8 @@ packages: fast-levenshtein@3.0.0: resolution: {integrity: sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==} - fast-uri@3.1.2: - resolution: {integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==} + fast-uri@3.1.3: + resolution: {integrity: sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg==} fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} @@ -5798,8 +5742,8 @@ packages: fromentries@1.3.2: resolution: {integrity: sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==} - fs-extra@11.3.5: - resolution: {integrity: sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==} + fs-extra@11.3.6: + resolution: {integrity: sha512-w8ZNZr2mKIc7qeNaQ9AVPT1+iFaI+Avd4xudVOvdDJ8VytREi1Ft5Ih7hd9jjehod8vAM5GMsfQ/TpPf4EyoEA==} engines: {node: '>=14.14'} fs-extra@8.1.0: @@ -6108,8 +6052,8 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} - iconv-lite@0.7.2: - resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} + iconv-lite@0.7.3: + resolution: {integrity: sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==} engines: {node: '>=0.10.0'} ieee754@1.2.1: @@ -6752,12 +6696,8 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@3.15.0: - resolution: {integrity: sha512-ttBQIIQPDeLjpPOohtUdXuXUVoA2uIB6fEH9HyJ7234s5mBJ5wTx20njxplLZQgLaOfpmPQA7X2t5AX6tIPbog==} - hasBin: true - - js-yaml@4.3.0: - resolution: {integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==} + js-yaml@4.2.0: + resolution: {integrity: sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==} hasBin: true js2xmlparser@4.0.2: @@ -6968,8 +6908,8 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - linkify-it@5.0.1: - resolution: {integrity: sha512-wVoTjP4Q6R0NW5hiZkVJaFZPWgtXfoGF+6LucL3/FtiNjmcHhYjEr5f1Kqjirc1nBW07J/ZuRFumqr2oqccEWg==} + linkify-it@5.0.2: + resolution: {integrity: sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==} lint-staged@17.0.8: resolution: {integrity: sha512-B2P/d+jVW0UXOQ0MVMLrB/9ydA1P+zz6jYfdrbbEd9ur3S2rcbduFWKiUCC02Sm5hbC8nrm7y24WuYMG54HfxA==} @@ -7149,8 +7089,8 @@ packages: '@types/markdown-it': '*' markdown-it: '*' - markdown-it@14.2.0: - resolution: {integrity: sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ==} + markdown-it@14.3.0: + resolution: {integrity: sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==} hasBin: true marked@4.3.0: @@ -7496,8 +7436,8 @@ packages: resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==} engines: {node: '>=12.20.0'} - oclif@4.23.24: - resolution: {integrity: sha512-QbjHsrV5z5PWUIsLXHcPaWyECqOrX7JekXaTvL3WekUf5wl+B3kqZb5JD2dI3ndyDwTfJ8rLFMCIt6B4T6fpeA==} + oclif@4.23.27: + resolution: {integrity: sha512-DNUQ22pglqstzuTRb+E4yjJI20PVGNGHCJa/vzH3HQCrS0B0GQPjWwIeMWjgWaQHBi1oXO2jMDHHpCLDNgW/tQ==} engines: {node: '>=18.0.0'} hasBin: true @@ -7701,8 +7641,8 @@ packages: resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} - picomatch@4.0.4: - resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + picomatch@4.0.5: + resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} engines: {node: '>=12'} pirates@4.0.7: @@ -7742,8 +7682,8 @@ packages: resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} engines: {node: '>=6.0.0'} - prettier@3.9.3: - resolution: {integrity: sha512-HWmu+K+zvHNpaMfSnYeqdqrDbR16cuIXaPx8WoHaviQkDJh1/0BNtOZmHVQI5jc3wXv0H1yXc9wjvFdXh+n3hQ==} + prettier@3.9.4: + resolution: {integrity: sha512-yWG/o/4oJfo036EKAfK6ACAoDOfHeRHx4tuxkfBZiauURiaSmYwlpOr5LQqKtIkRD2z1PLteme2WoxEnj4tHTg==} engines: {node: '>=14'} hasBin: true @@ -8097,8 +8037,8 @@ packages: engines: {node: 20 || >=22} hasBin: true - rolldown@1.1.3: - resolution: {integrity: sha512-1F1eEtUBtFvcGm1HQ9TiUIUHPQG7mSAODrhIzjxoUEFuo8OcbrGLiVLkevNgj84TE4lnHvnumwFjhJO5Eu135g==} + rolldown@1.1.4: + resolution: {integrity: sha512-IjZYiLxZwpnhwhdBH2ugdTGVSdhCQUmLxLoqyjiL0JxYjyRst+5a0P3xfrTxJ5F638j4Mvvw5FAX5XE6eHpXbA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -8385,9 +8325,6 @@ packages: speedometer@1.0.0: resolution: {integrity: sha512-lgxErLl/7A5+vgIIXsh9MbeukOaCb2axgQ+bKCdIE+ibNT4XNYGNCR1qFEGq6F+YDASXK3Fh/c5FgtZchFolxw==} - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - stable-hash@0.0.5: resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} @@ -8830,8 +8767,8 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript-eslint@8.62.0: - resolution: {integrity: sha512-8QxXi+ZACKX0kaqO4gY8kn0RSD9gFfaHDWwjqtEN48aWCBkX4MJaufWN+c3BzlrXLOxfywDL8CaoqUwcRq4j4Q==} + typescript-eslint@8.62.1: + resolution: {integrity: sha512-vymnnM5g0AKQDSAyfP12nMIBvgwgA42syg74kkuZ4x1VuTzwQKwc5h9rGxeShCjny5o+zWAb6OEoz7XLgrIkIw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -8980,8 +8917,8 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vite@8.1.0: - resolution: {integrity: sha512-BuJcQK/56NQTWDGn4ABea3q4SSBdNPWwNZKTkkUpcMPnLoquSYH8llRtSUIgoL1KSCpHt5eghLShn50mH36y7Q==} + vite@8.1.3: + resolution: {integrity: sha512-Ds+gBRbj0lwRO2Y5hwnUBdxSwlAve9LeRyU4sNnAr0ewW0gWF0n5bgXgUzbgZ49MV9BVUAQUFYVcDUcilUExMA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -9023,20 +8960,20 @@ packages: yaml: optional: true - vitest@4.1.9: - resolution: {integrity: sha512-nE3/LEyc0z87uHYLZebqCUOaJr2hdtuPp7BQ4BosVFnfltxgAvMG08NyrSGlPpOUWvR27c5flSmYFTNr78L9GQ==} + vitest@4.1.10: + resolution: {integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.9 - '@vitest/browser-preview': 4.1.9 - '@vitest/browser-webdriverio': 4.1.9 - '@vitest/coverage-istanbul': 4.1.9 - '@vitest/coverage-v8': 4.1.9 - '@vitest/ui': 4.1.9 + '@vitest/browser-playwright': 4.1.10 + '@vitest/browser-preview': 4.1.10 + '@vitest/browser-webdriverio': 4.1.10 + '@vitest/coverage-istanbul': 4.1.10 + '@vitest/coverage-v8': 4.1.10 + '@vitest/ui': 4.1.10 happy-dom: '*' jsdom: '*' vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -9348,247 +9285,181 @@ snapshots: css-tree: 2.3.1 is-potential-custom-element-name: 1.0.1 - '@aws-crypto/crc32@5.2.0': + '@aws-sdk/checksums@3.1000.12': dependencies: - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.13 + '@aws-sdk/core': 3.974.27 + '@aws-sdk/types': 3.973.15 + '@smithy/core': 3.29.1 + '@smithy/types': 4.15.1 tslib: 2.8.1 - '@aws-crypto/crc32c@5.2.0': + '@aws-sdk/client-cloudfront@3.1079.0': dependencies: - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.13 + '@aws-sdk/core': 3.974.27 + '@aws-sdk/credential-provider-node': 3.972.62 + '@aws-sdk/types': 3.973.15 + '@smithy/core': 3.29.1 + '@smithy/fetch-http-handler': 5.6.3 + '@smithy/node-http-handler': 4.9.3 + '@smithy/types': 4.15.1 tslib: 2.8.1 - '@aws-crypto/sha1-browser@5.2.0': - dependencies: - '@aws-crypto/supports-web-crypto': 5.2.0 - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.13 - '@aws-sdk/util-locate-window': 3.965.8 - '@smithy/util-utf8': 2.3.0 + '@aws-sdk/client-s3@3.1079.0': + dependencies: + '@aws-sdk/checksums': 3.1000.12 + '@aws-sdk/core': 3.974.27 + '@aws-sdk/credential-provider-node': 3.972.62 + '@aws-sdk/middleware-sdk-s3': 3.972.58 + '@aws-sdk/signature-v4-multi-region': 3.996.38 + '@aws-sdk/types': 3.973.15 + '@smithy/core': 3.29.1 + '@smithy/fetch-http-handler': 5.6.3 + '@smithy/node-http-handler': 4.9.3 + '@smithy/types': 4.15.1 tslib: 2.8.1 - '@aws-crypto/sha256-browser@5.2.0': + '@aws-sdk/core@3.974.27': dependencies: - '@aws-crypto/sha256-js': 5.2.0 - '@aws-crypto/supports-web-crypto': 5.2.0 - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.13 - '@aws-sdk/util-locate-window': 3.965.8 - '@smithy/util-utf8': 2.3.0 - tslib: 2.8.1 - - '@aws-crypto/sha256-js@5.2.0': - dependencies: - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.13 - tslib: 2.8.1 - - '@aws-crypto/supports-web-crypto@5.2.0': - dependencies: - tslib: 2.8.1 - - '@aws-crypto/util@5.2.0': - dependencies: - '@aws-sdk/types': 3.973.13 - '@smithy/util-utf8': 2.3.0 - tslib: 2.8.1 - - '@aws-sdk/checksums@3.1000.8': - dependencies: - '@aws-crypto/crc32': 5.2.0 - '@aws-crypto/crc32c': 5.2.0 - '@aws-crypto/util': 5.2.0 - '@aws-sdk/core': 3.974.23 - '@aws-sdk/types': 3.973.13 - '@smithy/core': 3.26.0 - '@smithy/types': 4.15.0 - tslib: 2.8.1 - - '@aws-sdk/client-cloudfront@3.1075.0': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.974.23 - '@aws-sdk/credential-provider-node': 3.972.58 - '@aws-sdk/types': 3.973.13 - '@smithy/core': 3.26.0 - '@smithy/fetch-http-handler': 5.5.2 - '@smithy/node-http-handler': 4.8.2 - '@smithy/types': 4.15.0 - tslib: 2.8.1 - - '@aws-sdk/client-s3@3.1075.0': - dependencies: - '@aws-crypto/sha1-browser': 5.2.0 - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.974.23 - '@aws-sdk/credential-provider-node': 3.972.58 - '@aws-sdk/middleware-flexible-checksums': 3.974.33 - '@aws-sdk/middleware-sdk-s3': 3.972.54 - '@aws-sdk/signature-v4-multi-region': 3.996.35 - '@aws-sdk/types': 3.973.13 - '@smithy/core': 3.26.0 - '@smithy/fetch-http-handler': 5.5.2 - '@smithy/node-http-handler': 4.8.2 - '@smithy/types': 4.15.0 - tslib: 2.8.1 - - '@aws-sdk/core@3.974.23': - dependencies: - '@aws-sdk/types': 3.973.13 - '@aws-sdk/xml-builder': 3.972.31 - '@aws/lambda-invoke-store': 0.2.4 - '@smithy/core': 3.26.0 - '@smithy/signature-v4': 5.5.2 - '@smithy/types': 4.15.0 + '@aws-sdk/types': 3.973.15 + '@aws-sdk/xml-builder': 3.972.33 + '@aws/lambda-invoke-store': 0.3.0 + '@smithy/core': 3.29.1 + '@smithy/signature-v4': 5.6.2 + '@smithy/types': 4.15.1 bowser: 2.14.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-env@3.972.49': + '@aws-sdk/credential-provider-env@3.972.53': dependencies: - '@aws-sdk/core': 3.974.23 - '@aws-sdk/types': 3.973.13 - '@smithy/core': 3.26.0 - '@smithy/types': 4.15.0 + '@aws-sdk/core': 3.974.27 + '@aws-sdk/types': 3.973.15 + '@smithy/core': 3.29.1 + '@smithy/types': 4.15.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-http@3.972.51': + '@aws-sdk/credential-provider-http@3.972.55': dependencies: - '@aws-sdk/core': 3.974.23 - '@aws-sdk/types': 3.973.13 - '@smithy/core': 3.26.0 - '@smithy/fetch-http-handler': 5.5.2 - '@smithy/node-http-handler': 4.8.2 - '@smithy/types': 4.15.0 + '@aws-sdk/core': 3.974.27 + '@aws-sdk/types': 3.973.15 + '@smithy/core': 3.29.1 + '@smithy/fetch-http-handler': 5.6.3 + '@smithy/node-http-handler': 4.9.3 + '@smithy/types': 4.15.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-ini@3.972.56': - dependencies: - '@aws-sdk/core': 3.974.23 - '@aws-sdk/credential-provider-env': 3.972.49 - '@aws-sdk/credential-provider-http': 3.972.51 - '@aws-sdk/credential-provider-login': 3.972.55 - '@aws-sdk/credential-provider-process': 3.972.49 - '@aws-sdk/credential-provider-sso': 3.972.55 - '@aws-sdk/credential-provider-web-identity': 3.972.55 - '@aws-sdk/nested-clients': 3.997.23 - '@aws-sdk/types': 3.973.13 - '@smithy/core': 3.26.0 - '@smithy/credential-provider-imds': 4.4.2 - '@smithy/types': 4.15.0 + '@aws-sdk/credential-provider-ini@3.972.60': + dependencies: + '@aws-sdk/core': 3.974.27 + '@aws-sdk/credential-provider-env': 3.972.53 + '@aws-sdk/credential-provider-http': 3.972.55 + '@aws-sdk/credential-provider-login': 3.972.59 + '@aws-sdk/credential-provider-process': 3.972.53 + '@aws-sdk/credential-provider-sso': 3.972.59 + '@aws-sdk/credential-provider-web-identity': 3.972.59 + '@aws-sdk/nested-clients': 3.997.27 + '@aws-sdk/types': 3.973.15 + '@smithy/core': 3.29.1 + '@smithy/credential-provider-imds': 4.4.6 + '@smithy/types': 4.15.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-login@3.972.55': + '@aws-sdk/credential-provider-login@3.972.59': dependencies: - '@aws-sdk/core': 3.974.23 - '@aws-sdk/nested-clients': 3.997.23 - '@aws-sdk/types': 3.973.13 - '@smithy/core': 3.26.0 - '@smithy/types': 4.15.0 + '@aws-sdk/core': 3.974.27 + '@aws-sdk/nested-clients': 3.997.27 + '@aws-sdk/types': 3.973.15 + '@smithy/core': 3.29.1 + '@smithy/types': 4.15.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-node@3.972.58': - dependencies: - '@aws-sdk/credential-provider-env': 3.972.49 - '@aws-sdk/credential-provider-http': 3.972.51 - '@aws-sdk/credential-provider-ini': 3.972.56 - '@aws-sdk/credential-provider-process': 3.972.49 - '@aws-sdk/credential-provider-sso': 3.972.55 - '@aws-sdk/credential-provider-web-identity': 3.972.55 - '@aws-sdk/types': 3.973.13 - '@smithy/core': 3.26.0 - '@smithy/credential-provider-imds': 4.4.2 - '@smithy/types': 4.15.0 + '@aws-sdk/credential-provider-node@3.972.62': + dependencies: + '@aws-sdk/credential-provider-env': 3.972.53 + '@aws-sdk/credential-provider-http': 3.972.55 + '@aws-sdk/credential-provider-ini': 3.972.60 + '@aws-sdk/credential-provider-process': 3.972.53 + '@aws-sdk/credential-provider-sso': 3.972.59 + '@aws-sdk/credential-provider-web-identity': 3.972.59 + '@aws-sdk/types': 3.973.15 + '@smithy/core': 3.29.1 + '@smithy/credential-provider-imds': 4.4.6 + '@smithy/types': 4.15.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-process@3.972.49': + '@aws-sdk/credential-provider-process@3.972.53': dependencies: - '@aws-sdk/core': 3.974.23 - '@aws-sdk/types': 3.973.13 - '@smithy/core': 3.26.0 - '@smithy/types': 4.15.0 + '@aws-sdk/core': 3.974.27 + '@aws-sdk/types': 3.973.15 + '@smithy/core': 3.29.1 + '@smithy/types': 4.15.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-sso@3.972.55': + '@aws-sdk/credential-provider-sso@3.972.59': dependencies: - '@aws-sdk/core': 3.974.23 - '@aws-sdk/nested-clients': 3.997.23 - '@aws-sdk/token-providers': 3.1074.0 - '@aws-sdk/types': 3.973.13 - '@smithy/core': 3.26.0 - '@smithy/types': 4.15.0 + '@aws-sdk/core': 3.974.27 + '@aws-sdk/nested-clients': 3.997.27 + '@aws-sdk/token-providers': 3.1079.0 + '@aws-sdk/types': 3.973.15 + '@smithy/core': 3.29.1 + '@smithy/types': 4.15.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-web-identity@3.972.55': + '@aws-sdk/credential-provider-web-identity@3.972.59': dependencies: - '@aws-sdk/core': 3.974.23 - '@aws-sdk/nested-clients': 3.997.23 - '@aws-sdk/types': 3.973.13 - '@smithy/core': 3.26.0 - '@smithy/types': 4.15.0 + '@aws-sdk/core': 3.974.27 + '@aws-sdk/nested-clients': 3.997.27 + '@aws-sdk/types': 3.973.15 + '@smithy/core': 3.29.1 + '@smithy/types': 4.15.1 tslib: 2.8.1 - '@aws-sdk/middleware-flexible-checksums@3.974.33': + '@aws-sdk/middleware-sdk-s3@3.972.58': dependencies: - '@aws-sdk/checksums': 3.1000.8 + '@aws-sdk/core': 3.974.27 + '@aws-sdk/signature-v4-multi-region': 3.996.38 + '@aws-sdk/types': 3.973.15 + '@smithy/core': 3.29.1 + '@smithy/types': 4.15.1 tslib: 2.8.1 - '@aws-sdk/middleware-sdk-s3@3.972.54': + '@aws-sdk/nested-clients@3.997.27': dependencies: - '@aws-sdk/core': 3.974.23 - '@aws-sdk/signature-v4-multi-region': 3.996.35 - '@aws-sdk/types': 3.973.13 - '@smithy/core': 3.26.0 - '@smithy/types': 4.15.0 - tslib: 2.8.1 - - '@aws-sdk/nested-clients@3.997.23': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.974.23 - '@aws-sdk/signature-v4-multi-region': 3.996.35 - '@aws-sdk/types': 3.973.13 - '@smithy/core': 3.26.0 - '@smithy/fetch-http-handler': 5.5.2 - '@smithy/node-http-handler': 4.8.2 - '@smithy/types': 4.15.0 + '@aws-sdk/core': 3.974.27 + '@aws-sdk/signature-v4-multi-region': 3.996.38 + '@aws-sdk/types': 3.973.15 + '@smithy/core': 3.29.1 + '@smithy/fetch-http-handler': 5.6.3 + '@smithy/node-http-handler': 4.9.3 + '@smithy/types': 4.15.1 tslib: 2.8.1 - '@aws-sdk/signature-v4-multi-region@3.996.35': + '@aws-sdk/signature-v4-multi-region@3.996.38': dependencies: - '@aws-sdk/types': 3.973.13 - '@smithy/signature-v4': 5.5.2 - '@smithy/types': 4.15.0 + '@aws-sdk/types': 3.973.15 + '@smithy/signature-v4': 5.6.2 + '@smithy/types': 4.15.1 tslib: 2.8.1 - '@aws-sdk/token-providers@3.1074.0': + '@aws-sdk/token-providers@3.1079.0': dependencies: - '@aws-sdk/core': 3.974.23 - '@aws-sdk/nested-clients': 3.997.23 - '@aws-sdk/types': 3.973.13 - '@smithy/core': 3.26.0 - '@smithy/types': 4.15.0 + '@aws-sdk/core': 3.974.27 + '@aws-sdk/nested-clients': 3.997.27 + '@aws-sdk/types': 3.973.15 + '@smithy/core': 3.29.1 + '@smithy/types': 4.15.1 tslib: 2.8.1 - '@aws-sdk/types@3.973.13': + '@aws-sdk/types@3.973.15': dependencies: - '@smithy/types': 4.15.0 + '@smithy/types': 4.15.1 tslib: 2.8.1 - '@aws-sdk/util-locate-window@3.965.8': + '@aws-sdk/xml-builder@3.972.33': dependencies: + '@smithy/types': 4.15.1 tslib: 2.8.1 - '@aws-sdk/xml-builder@3.972.31': - dependencies: - '@smithy/types': 4.15.0 - tslib: 2.8.1 - - '@aws/lambda-invoke-store@0.2.4': {} + '@aws/lambda-invoke-store@0.3.0': {} '@babel/code-frame@7.29.7': dependencies: @@ -9618,11 +9489,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/eslint-parser@7.29.7(@babel/core@7.29.7)(eslint@10.5.0)': + '@babel/eslint-parser@7.29.7(@babel/core@7.29.7)(eslint@10.6.0)': dependencies: '@babel/core': 7.29.7 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 10.5.0 + eslint: 10.6.0 eslint-visitor-keys: 2.1.0 semver: 6.3.1 @@ -10349,7 +10220,7 @@ snapshots: dependencies: '@contentstack/cli-command': 1.8.4(@types/node@22.20.0) '@contentstack/cli-utilities': 1.18.5(@types/node@22.20.0) - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 otplib: 12.0.1 transitivePeerDependencies: - '@types/node' @@ -10359,7 +10230,7 @@ snapshots: '@contentstack/cli-command@1.8.4(@types/node@14.18.63)': dependencies: '@contentstack/cli-utilities': 1.18.5(@types/node@14.18.63) - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 contentstack: 3.27.0 transitivePeerDependencies: - '@types/node' @@ -10369,7 +10240,7 @@ snapshots: '@contentstack/cli-command@1.8.4(@types/node@14.18.63)(debug@4.4.3)': dependencies: '@contentstack/cli-utilities': 1.18.5(@types/node@14.18.63)(debug@4.4.3) - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 contentstack: 3.27.0 transitivePeerDependencies: - '@types/node' @@ -10379,7 +10250,7 @@ snapshots: '@contentstack/cli-command@1.8.4(@types/node@18.19.130)': dependencies: '@contentstack/cli-utilities': 1.18.5(@types/node@18.19.130) - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 contentstack: 3.27.0 transitivePeerDependencies: - '@types/node' @@ -10389,7 +10260,7 @@ snapshots: '@contentstack/cli-command@1.8.4(@types/node@20.19.43)': dependencies: '@contentstack/cli-utilities': 1.18.5(@types/node@20.19.43) - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 contentstack: 3.27.0 transitivePeerDependencies: - '@types/node' @@ -10399,7 +10270,7 @@ snapshots: '@contentstack/cli-command@1.8.4(@types/node@22.20.0)': dependencies: '@contentstack/cli-utilities': 1.18.5(@types/node@22.20.0) - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 contentstack: 3.27.0 transitivePeerDependencies: - '@types/node' @@ -10411,7 +10282,7 @@ snapshots: '@contentstack/cli-command': 1.8.4(@types/node@14.18.63) '@contentstack/cli-utilities': 1.18.5(@types/node@14.18.63) '@contentstack/utils': 1.9.1 - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 transitivePeerDependencies: - '@types/node' - debug @@ -10422,7 +10293,7 @@ snapshots: '@contentstack/cli-command': 1.8.4(@types/node@22.20.0) '@contentstack/cli-utilities': 1.18.5(@types/node@22.20.0) '@contentstack/utils': 1.9.1 - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 transitivePeerDependencies: - '@types/node' - debug @@ -10430,8 +10301,8 @@ snapshots: '@contentstack/cli-dev-dependencies@1.3.1': dependencies: - '@oclif/core': 4.11.11 - '@oclif/test': 4.1.20(@oclif/core@4.11.11) + '@oclif/core': 4.11.14 + '@oclif/test': 4.1.20(@oclif/core@4.11.14) fancy-test: 2.0.42 lodash: 4.18.1 transitivePeerDependencies: @@ -10442,7 +10313,7 @@ snapshots: '@apollo/client': 3.14.1(graphql@16.14.2) '@contentstack/cli-command': 1.8.4(@types/node@20.19.43) '@contentstack/cli-utilities': 1.18.5(@types/node@20.19.43) - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 '@oclif/plugin-help': 6.2.53 '@rollup/plugin-commonjs': 28.0.9(rollup@4.62.2) '@rollup/plugin-json': 6.1.0(rollup@4.62.2) @@ -10479,7 +10350,7 @@ snapshots: dependencies: '@contentstack/management': 1.30.4(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.4(debug@4.4.3) - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 axios: 1.18.1(debug@4.4.3) chalk: 4.1.2 cli-cursor: 3.1.0 @@ -10491,7 +10362,7 @@ snapshots: inquirer: 8.2.7(@types/node@14.18.63) inquirer-search-checkbox: 1.0.0 inquirer-search-list: 1.2.6 - js-yaml: 4.3.0 + js-yaml: 4.2.0 klona: 2.0.6 lodash: 4.18.1 mkdirp: 1.0.4 @@ -10516,7 +10387,7 @@ snapshots: dependencies: '@contentstack/management': 1.30.4(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.4(debug@4.4.3) - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 axios: 1.18.1(debug@4.4.3) chalk: 4.1.2 cli-cursor: 3.1.0 @@ -10528,7 +10399,7 @@ snapshots: inquirer: 8.2.7(@types/node@14.18.63) inquirer-search-checkbox: 1.0.0 inquirer-search-list: 1.2.6 - js-yaml: 4.3.0 + js-yaml: 4.2.0 klona: 2.0.6 lodash: 4.18.1 mkdirp: 1.0.4 @@ -10553,7 +10424,7 @@ snapshots: dependencies: '@contentstack/management': 1.30.4(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.4(debug@4.4.3) - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 axios: 1.18.1(debug@4.4.3) chalk: 4.1.2 cli-cursor: 3.1.0 @@ -10565,7 +10436,7 @@ snapshots: inquirer: 8.2.7(@types/node@18.19.130) inquirer-search-checkbox: 1.0.0 inquirer-search-list: 1.2.6 - js-yaml: 4.3.0 + js-yaml: 4.2.0 klona: 2.0.6 lodash: 4.18.1 mkdirp: 1.0.4 @@ -10590,7 +10461,7 @@ snapshots: dependencies: '@contentstack/management': 1.30.4(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.4(debug@4.4.3) - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 axios: 1.18.1(debug@4.4.3) chalk: 4.1.2 cli-cursor: 3.1.0 @@ -10602,7 +10473,7 @@ snapshots: inquirer: 8.2.7(@types/node@20.19.43) inquirer-search-checkbox: 1.0.0 inquirer-search-list: 1.2.6 - js-yaml: 4.3.0 + js-yaml: 4.2.0 klona: 2.0.6 lodash: 4.18.1 mkdirp: 1.0.4 @@ -10627,7 +10498,7 @@ snapshots: dependencies: '@contentstack/management': 1.30.4(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.4(debug@4.4.3) - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 axios: 1.18.1(debug@4.4.3) chalk: 4.1.2 cli-cursor: 3.1.0 @@ -10639,7 +10510,7 @@ snapshots: inquirer: 8.2.7(@types/node@22.20.0) inquirer-search-checkbox: 1.0.0 inquirer-search-list: 1.2.6 - js-yaml: 4.3.0 + js-yaml: 4.2.0 klona: 2.0.6 lodash: 4.18.1 mkdirp: 1.0.4 @@ -10727,7 +10598,7 @@ snapshots: async: 3.2.6 axios: 1.18.0 lodash: 4.18.1 - prettier: 3.9.3 + prettier: 3.9.4 transitivePeerDependencies: - debug - graphql @@ -10809,23 +10680,23 @@ snapshots: '@es-joy/jsdoccomment@0.50.2': dependencies: '@types/estree': 1.0.9 - '@typescript-eslint/types': 8.62.0 + '@typescript-eslint/types': 8.62.1 comment-parser: 1.4.1 esquery: 1.7.0 jsdoc-type-pratt-parser: 4.1.0 - '@eslint-community/eslint-utils@4.9.1(eslint@10.5.0)': + '@eslint-community/eslint-utils@4.9.1(eslint@10.6.0)': dependencies: - eslint: 10.5.0 + eslint: 10.6.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/compat@1.4.1(eslint@10.5.0)': + '@eslint/compat@1.4.1(eslint@10.6.0)': dependencies: '@eslint/core': 0.17.0 optionalDependencies: - eslint: 10.5.0 + eslint: 10.6.0 '@eslint/config-array@0.23.5': dependencies: @@ -10874,7 +10745,7 @@ snapshots: globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.3.0 + js-yaml: 4.2.0 minimatch: 3.1.5 strip-json-comments: 3.1.1 transitivePeerDependencies: @@ -11171,28 +11042,28 @@ snapshots: '@inquirer/external-editor@1.0.3(@types/node@14.18.63)': dependencies: chardet: 2.2.0 - iconv-lite: 0.7.2 + iconv-lite: 0.7.3 optionalDependencies: '@types/node': 14.18.63 '@inquirer/external-editor@1.0.3(@types/node@18.19.130)': dependencies: chardet: 2.2.0 - iconv-lite: 0.7.2 + iconv-lite: 0.7.3 optionalDependencies: '@types/node': 18.19.130 '@inquirer/external-editor@1.0.3(@types/node@20.19.43)': dependencies: chardet: 2.2.0 - iconv-lite: 0.7.2 + iconv-lite: 0.7.3 optionalDependencies: '@types/node': 20.19.43 '@inquirer/external-editor@1.0.3(@types/node@22.20.0)': dependencies: chardet: 2.2.0 - iconv-lite: 0.7.2 + iconv-lite: 0.7.3 optionalDependencies: '@types/node': 22.20.0 @@ -11522,7 +11393,7 @@ snapshots: camelcase: 5.3.1 find-up: 4.1.0 get-package-type: 0.1.0 - js-yaml: 3.15.0 + js-yaml: 4.2.0 resolve-from: 5.0.0 '@istanbuljs/schema@0.1.6': {} @@ -12023,7 +11894,7 @@ snapshots: hyperlinker: 1.0.0 indent-string: 4.0.0 is-wsl: 2.2.0 - js-yaml: 3.15.0 + js-yaml: 4.2.0 natural-orderby: 2.0.3 object-treeify: 1.1.33 password-prompt: 1.1.3 @@ -12053,7 +11924,7 @@ snapshots: hyperlinker: 1.0.0 indent-string: 4.0.0 is-wsl: 2.2.0 - js-yaml: 3.15.0 + js-yaml: 4.2.0 minimatch: 9.0.9 natural-orderby: 2.0.3 object-treeify: 1.1.33 @@ -12067,7 +11938,7 @@ snapshots: wordwrap: 1.0.0 wrap-ansi: 7.0.0 - '@oclif/core@4.11.11': + '@oclif/core@4.11.14': dependencies: ansi-escapes: 4.3.2 ansis: 3.17.0 @@ -12092,12 +11963,12 @@ snapshots: '@oclif/plugin-help@6.2.53': dependencies: - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 '@oclif/plugin-not-found@3.2.88': dependencies: '@inquirer/prompts': 7.10.1 - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 ansis: 3.17.0 fast-levenshtein: 3.0.0 transitivePeerDependencies: @@ -12106,7 +11977,7 @@ snapshots: '@oclif/plugin-not-found@3.2.88(@types/node@14.18.63)': dependencies: '@inquirer/prompts': 7.10.1(@types/node@14.18.63) - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 ansis: 3.17.0 fast-levenshtein: 3.0.0 transitivePeerDependencies: @@ -12115,7 +11986,7 @@ snapshots: '@oclif/plugin-not-found@3.2.88(@types/node@18.19.130)': dependencies: '@inquirer/prompts': 7.10.1(@types/node@18.19.130) - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 ansis: 3.17.0 fast-levenshtein: 3.0.0 transitivePeerDependencies: @@ -12124,7 +11995,7 @@ snapshots: '@oclif/plugin-not-found@3.2.88(@types/node@20.19.43)': dependencies: '@inquirer/prompts': 7.10.1(@types/node@20.19.43) - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 ansis: 3.17.0 fast-levenshtein: 3.0.0 transitivePeerDependencies: @@ -12133,7 +12004,7 @@ snapshots: '@oclif/plugin-not-found@3.2.88(@types/node@22.20.0)': dependencies: '@inquirer/prompts': 7.10.1(@types/node@22.20.0) - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 ansis: 3.17.0 fast-levenshtein: 3.0.0 transitivePeerDependencies: @@ -12141,7 +12012,7 @@ snapshots: '@oclif/plugin-warn-if-update-available@3.1.68': dependencies: - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 ansis: 3.17.0 debug: 4.4.3(supports-color@8.1.1) http-call: 5.3.0 @@ -12162,9 +12033,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@oclif/test@4.1.20(@oclif/core@4.11.11)': + '@oclif/test@4.1.20(@oclif/core@4.11.14)': dependencies: - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 ansis: 3.17.0 debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: @@ -12193,7 +12064,7 @@ snapshots: '@otplib/plugin-crypto': 12.0.1 '@otplib/plugin-thirty-two': 12.0.1 - '@oxc-project/types@0.137.0': {} + '@oxc-project/types@0.138.0': {} '@pkgjs/parseargs@0.11.0': optional: true @@ -12216,53 +12087,53 @@ snapshots: dependencies: nopt: 1.0.10 - '@rolldown/binding-android-arm64@1.1.3': + '@rolldown/binding-android-arm64@1.1.4': optional: true - '@rolldown/binding-darwin-arm64@1.1.3': + '@rolldown/binding-darwin-arm64@1.1.4': optional: true - '@rolldown/binding-darwin-x64@1.1.3': + '@rolldown/binding-darwin-x64@1.1.4': optional: true - '@rolldown/binding-freebsd-x64@1.1.3': + '@rolldown/binding-freebsd-x64@1.1.4': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.1.3': + '@rolldown/binding-linux-arm-gnueabihf@1.1.4': optional: true - '@rolldown/binding-linux-arm64-gnu@1.1.3': + '@rolldown/binding-linux-arm64-gnu@1.1.4': optional: true - '@rolldown/binding-linux-arm64-musl@1.1.3': + '@rolldown/binding-linux-arm64-musl@1.1.4': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.1.3': + '@rolldown/binding-linux-ppc64-gnu@1.1.4': optional: true - '@rolldown/binding-linux-s390x-gnu@1.1.3': + '@rolldown/binding-linux-s390x-gnu@1.1.4': optional: true - '@rolldown/binding-linux-x64-gnu@1.1.3': + '@rolldown/binding-linux-x64-gnu@1.1.4': optional: true - '@rolldown/binding-linux-x64-musl@1.1.3': + '@rolldown/binding-linux-x64-musl@1.1.4': optional: true - '@rolldown/binding-openharmony-arm64@1.1.3': + '@rolldown/binding-openharmony-arm64@1.1.4': optional: true - '@rolldown/binding-wasm32-wasi@1.1.3': + '@rolldown/binding-wasm32-wasi@1.1.4': dependencies: '@emnapi/core': 1.11.1 '@emnapi/runtime': 1.11.1 '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) optional: true - '@rolldown/binding-win32-arm64-msvc@1.1.3': + '@rolldown/binding-win32-arm64-msvc@1.1.4': optional: true - '@rolldown/binding-win32-x64-msvc@1.1.3': + '@rolldown/binding-win32-x64-msvc@1.1.4': optional: true '@rolldown/pluginutils@1.0.1': {} @@ -12272,10 +12143,10 @@ snapshots: '@rollup/pluginutils': 5.4.0(rollup@4.62.2) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.5.0(picomatch@4.0.4) + fdir: 6.5.0(picomatch@4.0.5) is-reference: 1.2.1 magic-string: 0.30.21 - picomatch: 4.0.4 + picomatch: 4.0.5 optionalDependencies: rollup: 4.62.2 @@ -12308,7 +12179,7 @@ snapshots: dependencies: '@types/estree': 1.0.9 estree-walker: 2.0.2 - picomatch: 4.0.4 + picomatch: 4.0.5 optionalDependencies: rollup: 4.62.2 @@ -12441,52 +12312,37 @@ snapshots: '@sinonjs/text-encoding@0.7.3': {} - '@smithy/core@3.26.0': - dependencies: - '@aws-crypto/crc32': 5.2.0 - '@smithy/types': 4.15.0 - tslib: 2.8.1 - - '@smithy/credential-provider-imds@4.4.2': - dependencies: - '@smithy/core': 3.26.0 - '@smithy/types': 4.15.0 - tslib: 2.8.1 - - '@smithy/fetch-http-handler@5.5.2': + '@smithy/core@3.29.1': dependencies: - '@smithy/core': 3.26.0 - '@smithy/types': 4.15.0 + '@smithy/types': 4.15.1 tslib: 2.8.1 - '@smithy/is-array-buffer@2.2.0': + '@smithy/credential-provider-imds@4.4.6': dependencies: + '@smithy/core': 3.29.1 + '@smithy/types': 4.15.1 tslib: 2.8.1 - '@smithy/node-http-handler@4.8.2': + '@smithy/fetch-http-handler@5.6.3': dependencies: - '@smithy/core': 3.26.0 - '@smithy/types': 4.15.0 + '@smithy/core': 3.29.1 + '@smithy/types': 4.15.1 tslib: 2.8.1 - '@smithy/signature-v4@5.5.2': + '@smithy/node-http-handler@4.9.3': dependencies: - '@smithy/core': 3.26.0 - '@smithy/types': 4.15.0 + '@smithy/core': 3.29.1 + '@smithy/types': 4.15.1 tslib: 2.8.1 - '@smithy/types@4.15.0': + '@smithy/signature-v4@5.6.2': dependencies: + '@smithy/core': 3.29.1 + '@smithy/types': 4.15.1 tslib: 2.8.1 - '@smithy/util-buffer-from@2.2.0': + '@smithy/types@4.15.1': dependencies: - '@smithy/is-array-buffer': 2.2.0 - tslib: 2.8.1 - - '@smithy/util-utf8@2.3.0': - dependencies: - '@smithy/util-buffer-from': 2.2.0 tslib: 2.8.1 '@so-ric/colorspace@1.1.6': @@ -12496,51 +12352,51 @@ snapshots: '@standard-schema/spec@1.1.0': {} - '@stylistic/eslint-plugin@3.1.0(eslint@10.5.0)(typescript@4.9.5)': + '@stylistic/eslint-plugin@3.1.0(eslint@10.6.0)(typescript@4.9.5)': dependencies: - '@typescript-eslint/utils': 8.62.0(eslint@10.5.0)(typescript@4.9.5) - eslint: 10.5.0 + '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@4.9.5) + eslint: 10.6.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 - picomatch: 4.0.4 + picomatch: 4.0.5 transitivePeerDependencies: - supports-color - typescript - '@stylistic/eslint-plugin@3.1.0(eslint@10.5.0)(typescript@5.9.3)': + '@stylistic/eslint-plugin@3.1.0(eslint@10.6.0)(typescript@5.9.3)': dependencies: - '@typescript-eslint/utils': 8.62.0(eslint@10.5.0)(typescript@5.9.3) - eslint: 10.5.0 + '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@5.9.3) + eslint: 10.6.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 - picomatch: 4.0.4 + picomatch: 4.0.5 transitivePeerDependencies: - supports-color - typescript - '@stylistic/eslint-plugin@3.1.0(eslint@10.5.0)(typescript@6.0.3)': + '@stylistic/eslint-plugin@3.1.0(eslint@10.6.0)(typescript@6.0.3)': dependencies: - '@typescript-eslint/utils': 8.62.0(eslint@10.5.0)(typescript@6.0.3) - eslint: 10.5.0 + '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@6.0.3) + eslint: 10.6.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 - picomatch: 4.0.4 + picomatch: 4.0.5 transitivePeerDependencies: - supports-color - typescript - '@stylistic/eslint-plugin@5.10.0(eslint@10.5.0)': + '@stylistic/eslint-plugin@5.10.0(eslint@10.6.0)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0) - '@typescript-eslint/types': 8.62.0 - eslint: 10.5.0 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) + '@typescript-eslint/types': 8.62.1 + eslint: 10.6.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 - picomatch: 4.0.4 + picomatch: 4.0.5 '@szmarczak/http-timer@5.0.1': dependencies: @@ -12823,15 +12679,15 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@4.9.5))(eslint@10.5.0)(typescript@4.9.5)': + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@4.9.5))(eslint@10.6.0)(typescript@4.9.5)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.62.0(eslint@10.5.0)(typescript@4.9.5) + '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@4.9.5) '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@10.5.0)(typescript@4.9.5) - '@typescript-eslint/utils': 5.62.0(eslint@10.5.0)(typescript@4.9.5) + '@typescript-eslint/type-utils': 5.62.0(eslint@10.6.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@10.6.0)(typescript@4.9.5) debug: 4.4.3(supports-color@8.1.1) - eslint: 10.5.0 + eslint: 10.6.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare-lite: 1.4.0 @@ -12842,16 +12698,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@10.5.0)(typescript@4.9.5))(eslint@10.5.0)(typescript@4.9.5)': + '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@10.6.0)(typescript@4.9.5))(eslint@10.6.0)(typescript@4.9.5)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 6.21.0(eslint@10.5.0)(typescript@4.9.5) + '@typescript-eslint/parser': 6.21.0(eslint@10.6.0)(typescript@4.9.5) '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@10.5.0)(typescript@4.9.5) - '@typescript-eslint/utils': 6.21.0(eslint@10.5.0)(typescript@4.9.5) + '@typescript-eslint/type-utils': 6.21.0(eslint@10.6.0)(typescript@4.9.5) + '@typescript-eslint/utils': 6.21.0(eslint@10.6.0)(typescript@4.9.5) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.4.3(supports-color@8.1.1) - eslint: 10.5.0 + eslint: 10.6.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -12862,16 +12718,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@10.5.0)(typescript@5.9.3))(eslint@10.5.0)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@10.6.0)(typescript@5.9.3))(eslint@10.6.0)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 6.21.0(eslint@10.5.0)(typescript@5.9.3) + '@typescript-eslint/parser': 6.21.0(eslint@10.6.0)(typescript@5.9.3) '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@10.5.0)(typescript@5.9.3) - '@typescript-eslint/utils': 6.21.0(eslint@10.5.0)(typescript@5.9.3) + '@typescript-eslint/type-utils': 6.21.0(eslint@10.6.0)(typescript@5.9.3) + '@typescript-eslint/utils': 6.21.0(eslint@10.6.0)(typescript@5.9.3) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.4.3(supports-color@8.1.1) - eslint: 10.5.0 + eslint: 10.6.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -12882,16 +12738,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@10.5.0)(typescript@6.0.3))(eslint@10.5.0)(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@10.6.0)(typescript@6.0.3))(eslint@10.6.0)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 6.21.0(eslint@10.5.0)(typescript@6.0.3) + '@typescript-eslint/parser': 6.21.0(eslint@10.6.0)(typescript@6.0.3) '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@10.5.0)(typescript@6.0.3) - '@typescript-eslint/utils': 6.21.0(eslint@10.5.0)(typescript@6.0.3) + '@typescript-eslint/type-utils': 6.21.0(eslint@10.6.0)(typescript@6.0.3) + '@typescript-eslint/utils': 6.21.0(eslint@10.6.0)(typescript@6.0.3) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.4.3(supports-color@8.1.1) - eslint: 10.5.0 + eslint: 10.6.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -12902,15 +12758,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.62.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@4.9.5))(eslint@10.5.0)(typescript@4.9.5)': + '@typescript-eslint/eslint-plugin@8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@4.9.5))(eslint@10.6.0)(typescript@4.9.5)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.62.0(eslint@10.5.0)(typescript@4.9.5) - '@typescript-eslint/scope-manager': 8.62.0 - '@typescript-eslint/type-utils': 8.62.0(eslint@10.5.0)(typescript@4.9.5) - '@typescript-eslint/utils': 8.62.0(eslint@10.5.0)(typescript@4.9.5) - '@typescript-eslint/visitor-keys': 8.62.0 - eslint: 10.5.0 + '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 8.62.1 + '@typescript-eslint/type-utils': 8.62.1(eslint@10.6.0)(typescript@4.9.5) + '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@4.9.5) + '@typescript-eslint/visitor-keys': 8.62.1 + eslint: 10.6.0 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@4.9.5) @@ -12918,15 +12774,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.62.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@5.9.3))(eslint@10.5.0)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@5.9.3))(eslint@10.6.0)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.62.0(eslint@10.5.0)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.62.0 - '@typescript-eslint/type-utils': 8.62.0(eslint@10.5.0)(typescript@5.9.3) - '@typescript-eslint/utils': 8.62.0(eslint@10.5.0)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.62.0 - eslint: 10.5.0 + '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.62.1 + '@typescript-eslint/type-utils': 8.62.1(eslint@10.6.0)(typescript@5.9.3) + '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.62.1 + eslint: 10.6.0 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@5.9.3) @@ -12934,15 +12790,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.62.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@6.0.3))(eslint@10.5.0)(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@6.0.3))(eslint@10.6.0)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.62.0(eslint@10.5.0)(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.62.0 - '@typescript-eslint/type-utils': 8.62.0(eslint@10.5.0)(typescript@6.0.3) - '@typescript-eslint/utils': 8.62.0(eslint@10.5.0)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.62.0 - eslint: 10.5.0 + '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.62.1 + '@typescript-eslint/type-utils': 8.62.1(eslint@10.6.0)(typescript@6.0.3) + '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.62.1 + eslint: 10.6.0 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@6.0.3) @@ -12950,103 +12806,103 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.21.0(eslint@10.5.0)(typescript@4.9.5)': + '@typescript-eslint/parser@6.21.0(eslint@10.6.0)(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: 10.5.0 + eslint: 10.6.0 optionalDependencies: typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.21.0(eslint@10.5.0)(typescript@5.9.3)': + '@typescript-eslint/parser@6.21.0(eslint@10.6.0)(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: 10.5.0 + eslint: 10.6.0 optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.21.0(eslint@10.5.0)(typescript@6.0.3)': + '@typescript-eslint/parser@6.21.0(eslint@10.6.0)(typescript@6.0.3)': dependencies: '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@6.0.3) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.4.3(supports-color@8.1.1) - eslint: 10.5.0 + eslint: 10.6.0 optionalDependencies: typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@4.9.5)': + '@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@4.9.5)': dependencies: - '@typescript-eslint/scope-manager': 8.62.0 - '@typescript-eslint/types': 8.62.0 - '@typescript-eslint/typescript-estree': 8.62.0(typescript@4.9.5) - '@typescript-eslint/visitor-keys': 8.62.0 + '@typescript-eslint/scope-manager': 8.62.1 + '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/typescript-estree': 8.62.1(typescript@4.9.5) + '@typescript-eslint/visitor-keys': 8.62.1 debug: 4.4.3(supports-color@8.1.1) - eslint: 10.5.0 + eslint: 10.6.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@5.9.3)': + '@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.62.0 - '@typescript-eslint/types': 8.62.0 - '@typescript-eslint/typescript-estree': 8.62.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.62.0 + '@typescript-eslint/scope-manager': 8.62.1 + '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/typescript-estree': 8.62.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.62.1 debug: 4.4.3(supports-color@8.1.1) - eslint: 10.5.0 + eslint: 10.6.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@6.0.3)': + '@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@6.0.3)': dependencies: - '@typescript-eslint/scope-manager': 8.62.0 - '@typescript-eslint/types': 8.62.0 - '@typescript-eslint/typescript-estree': 8.62.0(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.62.0 + '@typescript-eslint/scope-manager': 8.62.1 + '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/typescript-estree': 8.62.1(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.62.1 debug: 4.4.3(supports-color@8.1.1) - eslint: 10.5.0 + eslint: 10.6.0 typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.62.0(typescript@4.9.5)': + '@typescript-eslint/project-service@8.62.1(typescript@4.9.5)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.62.0(typescript@4.9.5) - '@typescript-eslint/types': 8.62.0 + '@typescript-eslint/tsconfig-utils': 8.62.1(typescript@4.9.5) + '@typescript-eslint/types': 8.62.1 debug: 4.4.3(supports-color@8.1.1) typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.62.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.62.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.62.0(typescript@5.9.3) - '@typescript-eslint/types': 8.62.0 + '@typescript-eslint/tsconfig-utils': 8.62.1(typescript@5.9.3) + '@typescript-eslint/types': 8.62.1 debug: 4.4.3(supports-color@8.1.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.62.0(typescript@6.0.3)': + '@typescript-eslint/project-service@8.62.1(typescript@6.0.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.62.0(typescript@6.0.3) - '@typescript-eslint/types': 8.62.0 + '@typescript-eslint/tsconfig-utils': 8.62.1(typescript@6.0.3) + '@typescript-eslint/types': 8.62.1 debug: 4.4.3(supports-color@8.1.1) typescript: 6.0.3 transitivePeerDependencies: @@ -13067,102 +12923,102 @@ snapshots: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - '@typescript-eslint/scope-manager@8.62.0': + '@typescript-eslint/scope-manager@8.62.1': dependencies: - '@typescript-eslint/types': 8.62.0 - '@typescript-eslint/visitor-keys': 8.62.0 + '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/visitor-keys': 8.62.1 - '@typescript-eslint/tsconfig-utils@8.62.0(typescript@4.9.5)': + '@typescript-eslint/tsconfig-utils@8.62.1(typescript@4.9.5)': dependencies: typescript: 4.9.5 - '@typescript-eslint/tsconfig-utils@8.62.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.62.1(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/tsconfig-utils@8.62.0(typescript@6.0.3)': + '@typescript-eslint/tsconfig-utils@8.62.1(typescript@6.0.3)': dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@5.62.0(eslint@10.5.0)(typescript@4.9.5)': + '@typescript-eslint/type-utils@5.62.0(eslint@10.6.0)(typescript@4.9.5)': dependencies: '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) - '@typescript-eslint/utils': 5.62.0(eslint@10.5.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@10.6.0)(typescript@4.9.5) debug: 4.4.3(supports-color@8.1.1) - eslint: 10.5.0 + eslint: 10.6.0 tsutils: 3.21.0(typescript@4.9.5) optionalDependencies: typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@6.21.0(eslint@10.5.0)(typescript@4.9.5)': + '@typescript-eslint/type-utils@6.21.0(eslint@10.6.0)(typescript@4.9.5)': dependencies: '@typescript-eslint/typescript-estree': 6.21.0(typescript@4.9.5) - '@typescript-eslint/utils': 6.21.0(eslint@10.5.0)(typescript@4.9.5) + '@typescript-eslint/utils': 6.21.0(eslint@10.6.0)(typescript@4.9.5) debug: 4.4.3(supports-color@8.1.1) - eslint: 10.5.0 + eslint: 10.6.0 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@10.5.0)(typescript@5.9.3)': + '@typescript-eslint/type-utils@6.21.0(eslint@10.6.0)(typescript@5.9.3)': dependencies: '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) - '@typescript-eslint/utils': 6.21.0(eslint@10.5.0)(typescript@5.9.3) + '@typescript-eslint/utils': 6.21.0(eslint@10.6.0)(typescript@5.9.3) debug: 4.4.3(supports-color@8.1.1) - eslint: 10.5.0 + eslint: 10.6.0 ts-api-utils: 1.4.3(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@6.21.0(eslint@10.5.0)(typescript@6.0.3)': + '@typescript-eslint/type-utils@6.21.0(eslint@10.6.0)(typescript@6.0.3)': dependencies: '@typescript-eslint/typescript-estree': 6.21.0(typescript@6.0.3) - '@typescript-eslint/utils': 6.21.0(eslint@10.5.0)(typescript@6.0.3) + '@typescript-eslint/utils': 6.21.0(eslint@10.6.0)(typescript@6.0.3) debug: 4.4.3(supports-color@8.1.1) - eslint: 10.5.0 + eslint: 10.6.0 ts-api-utils: 1.4.3(typescript@6.0.3) optionalDependencies: typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.62.0(eslint@10.5.0)(typescript@4.9.5)': + '@typescript-eslint/type-utils@8.62.1(eslint@10.6.0)(typescript@4.9.5)': dependencies: - '@typescript-eslint/types': 8.62.0 - '@typescript-eslint/typescript-estree': 8.62.0(typescript@4.9.5) - '@typescript-eslint/utils': 8.62.0(eslint@10.5.0)(typescript@4.9.5) + '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/typescript-estree': 8.62.1(typescript@4.9.5) + '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@4.9.5) debug: 4.4.3(supports-color@8.1.1) - eslint: 10.5.0 + eslint: 10.6.0 ts-api-utils: 2.5.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.62.0(eslint@10.5.0)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.62.1(eslint@10.6.0)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.62.0 - '@typescript-eslint/typescript-estree': 8.62.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.62.0(eslint@10.5.0)(typescript@5.9.3) + '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/typescript-estree': 8.62.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@5.9.3) debug: 4.4.3(supports-color@8.1.1) - eslint: 10.5.0 + eslint: 10.6.0 ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.62.0(eslint@10.5.0)(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.62.1(eslint@10.6.0)(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.62.0 - '@typescript-eslint/typescript-estree': 8.62.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.62.0(eslint@10.5.0)(typescript@6.0.3) + '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/typescript-estree': 8.62.1(typescript@6.0.3) + '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@6.0.3) debug: 4.4.3(supports-color@8.1.1) - eslint: 10.5.0 + eslint: 10.6.0 ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: @@ -13174,7 +13030,7 @@ snapshots: '@typescript-eslint/types@7.18.0': {} - '@typescript-eslint/types@8.62.0': {} + '@typescript-eslint/types@8.62.1': {} '@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5)': dependencies: @@ -13280,12 +13136,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.62.0(typescript@4.9.5)': + '@typescript-eslint/typescript-estree@8.62.1(typescript@4.9.5)': dependencies: - '@typescript-eslint/project-service': 8.62.0(typescript@4.9.5) - '@typescript-eslint/tsconfig-utils': 8.62.0(typescript@4.9.5) - '@typescript-eslint/types': 8.62.0 - '@typescript-eslint/visitor-keys': 8.62.0 + '@typescript-eslint/project-service': 8.62.1(typescript@4.9.5) + '@typescript-eslint/tsconfig-utils': 8.62.1(typescript@4.9.5) + '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/visitor-keys': 8.62.1 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.5 semver: 7.8.5 @@ -13295,12 +13151,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.62.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.62.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.62.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.62.0(typescript@5.9.3) - '@typescript-eslint/types': 8.62.0 - '@typescript-eslint/visitor-keys': 8.62.0 + '@typescript-eslint/project-service': 8.62.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.62.1(typescript@5.9.3) + '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/visitor-keys': 8.62.1 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.5 semver: 7.8.5 @@ -13310,12 +13166,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.62.0(typescript@6.0.3)': + '@typescript-eslint/typescript-estree@8.62.1(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.62.0(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.62.0(typescript@6.0.3) - '@typescript-eslint/types': 8.62.0 - '@typescript-eslint/visitor-keys': 8.62.0 + '@typescript-eslint/project-service': 8.62.1(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.62.1(typescript@6.0.3) + '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/visitor-keys': 8.62.1 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.5 semver: 7.8.5 @@ -13325,125 +13181,125 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@5.62.0(eslint@10.5.0)(typescript@4.9.5)': + '@typescript-eslint/utils@5.62.0(eslint@10.6.0)(typescript@4.9.5)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) '@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: 10.5.0 + eslint: 10.6.0 eslint-scope: 5.1.1 semver: 7.8.5 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@6.21.0(eslint@10.5.0)(typescript@4.9.5)': + '@typescript-eslint/utils@6.21.0(eslint@10.6.0)(typescript@4.9.5)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) '@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: 10.5.0 + eslint: 10.6.0 semver: 7.8.5 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@6.21.0(eslint@10.5.0)(typescript@5.9.3)': + '@typescript-eslint/utils@6.21.0(eslint@10.6.0)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) '@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: 10.5.0 + eslint: 10.6.0 semver: 7.8.5 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@6.21.0(eslint@10.5.0)(typescript@6.0.3)': + '@typescript-eslint/utils@6.21.0(eslint@10.6.0)(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) '@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@6.0.3) - eslint: 10.5.0 + eslint: 10.6.0 semver: 7.8.5 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@7.18.0(eslint@10.5.0)(typescript@4.9.5)': + '@typescript-eslint/utils@7.18.0(eslint@10.6.0)(typescript@4.9.5)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) '@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: 10.5.0 + eslint: 10.6.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@7.18.0(eslint@10.5.0)(typescript@5.9.3)': + '@typescript-eslint/utils@7.18.0(eslint@10.6.0)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) '@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: 10.5.0 + eslint: 10.6.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@7.18.0(eslint@10.5.0)(typescript@6.0.3)': + '@typescript-eslint/utils@7.18.0(eslint@10.6.0)(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@6.0.3) - eslint: 10.5.0 + eslint: 10.6.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.62.0(eslint@10.5.0)(typescript@4.9.5)': + '@typescript-eslint/utils@8.62.1(eslint@10.6.0)(typescript@4.9.5)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0) - '@typescript-eslint/scope-manager': 8.62.0 - '@typescript-eslint/types': 8.62.0 - '@typescript-eslint/typescript-estree': 8.62.0(typescript@4.9.5) - eslint: 10.5.0 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) + '@typescript-eslint/scope-manager': 8.62.1 + '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/typescript-estree': 8.62.1(typescript@4.9.5) + eslint: 10.6.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.62.0(eslint@10.5.0)(typescript@5.9.3)': + '@typescript-eslint/utils@8.62.1(eslint@10.6.0)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0) - '@typescript-eslint/scope-manager': 8.62.0 - '@typescript-eslint/types': 8.62.0 - '@typescript-eslint/typescript-estree': 8.62.0(typescript@5.9.3) - eslint: 10.5.0 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) + '@typescript-eslint/scope-manager': 8.62.1 + '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/typescript-estree': 8.62.1(typescript@5.9.3) + eslint: 10.6.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.62.0(eslint@10.5.0)(typescript@6.0.3)': + '@typescript-eslint/utils@8.62.1(eslint@10.6.0)(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0) - '@typescript-eslint/scope-manager': 8.62.0 - '@typescript-eslint/types': 8.62.0 - '@typescript-eslint/typescript-estree': 8.62.0(typescript@6.0.3) - eslint: 10.5.0 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) + '@typescript-eslint/scope-manager': 8.62.1 + '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/typescript-estree': 8.62.1(typescript@6.0.3) + eslint: 10.6.0 typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -13463,9 +13319,9 @@ snapshots: '@typescript-eslint/types': 7.18.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.62.0': + '@typescript-eslint/visitor-keys@8.62.1': dependencies: - '@typescript-eslint/types': 8.62.0 + '@typescript-eslint/types': 8.62.1 eslint-visitor-keys: 5.0.1 '@ungap/structured-clone@1.3.2': {} @@ -13540,44 +13396,44 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.12.2': optional: true - '@vitest/expect@4.1.9': + '@vitest/expect@4.1.10': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.1.9 - '@vitest/utils': 4.1.9 + '@vitest/spy': 4.1.10 + '@vitest/utils': 4.1.10 chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.9(vite@8.1.0(@types/node@20.19.43)(yaml@2.9.0))': + '@vitest/mocker@4.1.10(vite@8.1.3(@types/node@20.19.43)(yaml@2.9.0))': dependencies: - '@vitest/spy': 4.1.9 + '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.1.0(@types/node@20.19.43)(yaml@2.9.0) + vite: 8.1.3(@types/node@20.19.43)(yaml@2.9.0) - '@vitest/pretty-format@4.1.9': + '@vitest/pretty-format@4.1.10': dependencies: tinyrainbow: 3.1.0 - '@vitest/runner@4.1.9': + '@vitest/runner@4.1.10': dependencies: - '@vitest/utils': 4.1.9 + '@vitest/utils': 4.1.10 pathe: 2.0.3 - '@vitest/snapshot@4.1.9': + '@vitest/snapshot@4.1.10': dependencies: - '@vitest/pretty-format': 4.1.9 - '@vitest/utils': 4.1.9 + '@vitest/pretty-format': 4.1.10 + '@vitest/utils': 4.1.10 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.1.9': {} + '@vitest/spy@4.1.10': {} - '@vitest/utils@4.1.9': + '@vitest/utils@4.1.10': dependencies: - '@vitest/pretty-format': 4.1.9 + '@vitest/pretty-format': 4.1.10 convert-source-map: 2.0.0 tinyrainbow: 3.1.0 @@ -13650,7 +13506,7 @@ snapshots: ajv@8.20.0: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.1.2 + fast-uri: 3.1.3 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -13717,10 +13573,6 @@ snapshots: arg@4.1.3: {} - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 - argparse@2.0.1: {} array-back@1.0.4: @@ -13975,13 +13827,11 @@ snapshots: babel-plugin-jest-hoist: 30.4.0 babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.7) - balanced-match@1.0.2: {} - balanced-match@4.0.4: {} base64-js@1.5.1: {} - baseline-browser-mapping@2.10.40: {} + baseline-browser-mapping@2.10.42: {} bidi-js@1.0.3: dependencies: @@ -14027,15 +13877,6 @@ snapshots: bowser@2.14.1: {} - brace-expansion@1.1.15: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.1.1: - dependencies: - balanced-match: 1.0.2 - brace-expansion@5.0.7: dependencies: balanced-match: 4.0.4 @@ -14052,9 +13893,9 @@ snapshots: browserslist@4.28.4: dependencies: - baseline-browser-mapping: 2.10.40 - caniuse-lite: 1.0.30001799 - electron-to-chromium: 1.5.381 + baseline-browser-mapping: 2.10.42 + caniuse-lite: 1.0.30001802 + electron-to-chromium: 1.5.387 node-releases: 2.0.50 update-browserslist-db: 1.2.3(browserslist@4.28.4) @@ -14139,7 +13980,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001799: {} + caniuse-lite@1.0.30001802: {} capital-case@1.0.4: dependencies: @@ -14302,7 +14143,7 @@ snapshots: hyperlinker: 1.0.0 indent-string: 4.0.0 is-wsl: 2.2.0 - js-yaml: 3.15.0 + js-yaml: 4.2.0 lodash: 4.18.1 natural-orderby: 2.0.3 object-treeify: 1.1.33 @@ -14432,8 +14273,6 @@ snapshots: array-ify: 1.0.0 dot-prop: 5.3.0 - concat-map@0.0.1: {} - concat-stream@2.0.0: dependencies: buffer-from: 1.1.2 @@ -14857,7 +14696,7 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.381: {} + electron-to-chromium@1.5.387: {} elegant-spinner@1.0.1: {} @@ -14962,7 +14801,7 @@ snapshots: es-errors@1.3.0: {} - es-module-lexer@2.2.0: {} + es-module-lexer@2.3.0: {} es-object-atoms@1.1.2: dependencies: @@ -15002,21 +14841,21 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-compat-utils@0.5.1(eslint@10.5.0): + eslint-compat-utils@0.5.1(eslint@10.6.0): dependencies: - eslint: 10.5.0 + eslint: 10.6.0 semver: 7.8.5 - eslint-config-oclif-typescript@3.1.14(eslint@10.5.0)(typescript@4.9.5): + eslint-config-oclif-typescript@3.1.14(eslint@10.6.0)(typescript@4.9.5): dependencies: - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@10.5.0)(typescript@4.9.5))(eslint@10.5.0)(typescript@4.9.5) - '@typescript-eslint/parser': 6.21.0(eslint@10.5.0)(typescript@4.9.5) - eslint-config-xo-space: 0.35.0(eslint@10.5.0) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.5.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.5.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@10.5.0) - eslint-plugin-mocha: 10.5.0(eslint@10.5.0) - eslint-plugin-n: 15.7.0(eslint@10.5.0) - eslint-plugin-perfectionist: 2.11.0(eslint@10.5.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@10.6.0)(typescript@4.9.5))(eslint@10.6.0)(typescript@4.9.5) + '@typescript-eslint/parser': 6.21.0(eslint@10.6.0)(typescript@4.9.5) + eslint-config-xo-space: 0.35.0(eslint@10.6.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.6.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.6.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) + eslint-plugin-mocha: 10.5.0(eslint@10.6.0) + eslint-plugin-n: 15.7.0(eslint@10.6.0) + eslint-plugin-perfectionist: 2.11.0(eslint@10.6.0)(typescript@4.9.5) transitivePeerDependencies: - astro-eslint-parser - eslint @@ -15028,16 +14867,16 @@ snapshots: - typescript - vue-eslint-parser - eslint-config-oclif-typescript@3.1.14(eslint@10.5.0)(typescript@5.9.3): + eslint-config-oclif-typescript@3.1.14(eslint@10.6.0)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@10.5.0)(typescript@5.9.3))(eslint@10.5.0)(typescript@5.9.3) - '@typescript-eslint/parser': 6.21.0(eslint@10.5.0)(typescript@5.9.3) - eslint-config-xo-space: 0.35.0(eslint@10.5.0) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.5.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.5.0) - eslint-plugin-mocha: 10.5.0(eslint@10.5.0) - eslint-plugin-n: 15.7.0(eslint@10.5.0) - eslint-plugin-perfectionist: 2.11.0(eslint@10.5.0)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@10.6.0)(typescript@5.9.3))(eslint@10.6.0)(typescript@5.9.3) + '@typescript-eslint/parser': 6.21.0(eslint@10.6.0)(typescript@5.9.3) + eslint-config-xo-space: 0.35.0(eslint@10.6.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.6.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) + eslint-plugin-mocha: 10.5.0(eslint@10.6.0) + eslint-plugin-n: 15.7.0(eslint@10.6.0) + eslint-plugin-perfectionist: 2.11.0(eslint@10.6.0)(typescript@5.9.3) transitivePeerDependencies: - astro-eslint-parser - eslint @@ -15049,16 +14888,16 @@ snapshots: - typescript - vue-eslint-parser - eslint-config-oclif-typescript@3.1.14(eslint@10.5.0)(typescript@6.0.3): + eslint-config-oclif-typescript@3.1.14(eslint@10.6.0)(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@10.5.0)(typescript@6.0.3))(eslint@10.5.0)(typescript@6.0.3) - '@typescript-eslint/parser': 6.21.0(eslint@10.5.0)(typescript@6.0.3) - eslint-config-xo-space: 0.35.0(eslint@10.5.0) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.5.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.5.0)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.5.0) - eslint-plugin-mocha: 10.5.0(eslint@10.5.0) - eslint-plugin-n: 15.7.0(eslint@10.5.0) - eslint-plugin-perfectionist: 2.11.0(eslint@10.5.0)(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@10.6.0)(typescript@6.0.3))(eslint@10.6.0)(typescript@6.0.3) + '@typescript-eslint/parser': 6.21.0(eslint@10.6.0)(typescript@6.0.3) + eslint-config-xo-space: 0.35.0(eslint@10.6.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.6.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.6.0)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) + eslint-plugin-mocha: 10.5.0(eslint@10.6.0) + eslint-plugin-n: 15.7.0(eslint@10.6.0) + eslint-plugin-perfectionist: 2.11.0(eslint@10.6.0)(typescript@6.0.3) transitivePeerDependencies: - astro-eslint-parser - eslint @@ -15070,34 +14909,34 @@ snapshots: - typescript - vue-eslint-parser - eslint-config-oclif@4.0.0(eslint@10.5.0): + eslint-config-oclif@4.0.0(eslint@10.6.0): dependencies: - eslint-config-xo-space: 0.27.0(eslint@10.5.0) - eslint-plugin-mocha: 9.0.0(eslint@10.5.0) - eslint-plugin-node: 11.1.0(eslint@10.5.0) - eslint-plugin-unicorn: 36.0.0(eslint@10.5.0) + eslint-config-xo-space: 0.27.0(eslint@10.6.0) + eslint-plugin-mocha: 9.0.0(eslint@10.6.0) + eslint-plugin-node: 11.1.0(eslint@10.6.0) + eslint-plugin-unicorn: 36.0.0(eslint@10.6.0) transitivePeerDependencies: - eslint - supports-color - eslint-config-oclif@6.0.174(eslint@10.5.0)(typescript@4.9.5): + eslint-config-oclif@6.0.175(eslint@10.6.0)(typescript@4.9.5): dependencies: - '@eslint/compat': 1.4.1(eslint@10.5.0) + '@eslint/compat': 1.4.1(eslint@10.6.0) '@eslint/eslintrc': 3.3.5 '@eslint/js': 9.39.4 - '@stylistic/eslint-plugin': 3.1.0(eslint@10.5.0)(typescript@4.9.5) - '@typescript-eslint/eslint-plugin': 8.62.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@4.9.5))(eslint@10.5.0)(typescript@4.9.5) - '@typescript-eslint/parser': 8.62.0(eslint@10.5.0)(typescript@4.9.5) - eslint-config-xo: 0.49.0(eslint@10.5.0) - eslint-config-xo-space: 0.35.0(eslint@10.5.0) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.5.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@10.5.0) - eslint-plugin-jsdoc: 50.8.0(eslint@10.5.0) - eslint-plugin-mocha: 10.5.0(eslint@10.5.0) - eslint-plugin-n: 17.24.0(eslint@10.5.0)(typescript@4.9.5) - eslint-plugin-perfectionist: 4.15.1(eslint@10.5.0)(typescript@4.9.5) - eslint-plugin-unicorn: 56.0.1(eslint@10.5.0) - typescript-eslint: 8.62.0(eslint@10.5.0)(typescript@4.9.5) + '@stylistic/eslint-plugin': 3.1.0(eslint@10.6.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@4.9.5))(eslint@10.6.0)(typescript@4.9.5) + '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@4.9.5) + eslint-config-xo: 0.49.0(eslint@10.6.0) + eslint-config-xo-space: 0.35.0(eslint@10.6.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.6.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) + eslint-plugin-jsdoc: 50.8.0(eslint@10.6.0) + eslint-plugin-mocha: 10.5.0(eslint@10.6.0) + eslint-plugin-n: 17.24.0(eslint@10.6.0)(typescript@4.9.5) + eslint-plugin-perfectionist: 4.15.1(eslint@10.6.0)(typescript@4.9.5) + eslint-plugin-unicorn: 56.0.1(eslint@10.6.0) + typescript-eslint: 8.62.1(eslint@10.6.0)(typescript@4.9.5) transitivePeerDependencies: - eslint - eslint-import-resolver-webpack @@ -15105,24 +14944,24 @@ snapshots: - supports-color - typescript - eslint-config-oclif@6.0.174(eslint@10.5.0)(typescript@5.9.3): + eslint-config-oclif@6.0.175(eslint@10.6.0)(typescript@5.9.3): dependencies: - '@eslint/compat': 1.4.1(eslint@10.5.0) + '@eslint/compat': 1.4.1(eslint@10.6.0) '@eslint/eslintrc': 3.3.5 '@eslint/js': 9.39.4 - '@stylistic/eslint-plugin': 3.1.0(eslint@10.5.0)(typescript@5.9.3) - '@typescript-eslint/eslint-plugin': 8.62.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@5.9.3))(eslint@10.5.0)(typescript@5.9.3) - '@typescript-eslint/parser': 8.62.0(eslint@10.5.0)(typescript@5.9.3) - eslint-config-xo: 0.49.0(eslint@10.5.0) - eslint-config-xo-space: 0.35.0(eslint@10.5.0) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.5.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.5.0) - eslint-plugin-jsdoc: 50.8.0(eslint@10.5.0) - eslint-plugin-mocha: 10.5.0(eslint@10.5.0) - eslint-plugin-n: 17.24.0(eslint@10.5.0)(typescript@5.9.3) - eslint-plugin-perfectionist: 4.15.1(eslint@10.5.0)(typescript@5.9.3) - eslint-plugin-unicorn: 56.0.1(eslint@10.5.0) - typescript-eslint: 8.62.0(eslint@10.5.0)(typescript@5.9.3) + '@stylistic/eslint-plugin': 3.1.0(eslint@10.6.0)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@5.9.3))(eslint@10.6.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@5.9.3) + eslint-config-xo: 0.49.0(eslint@10.6.0) + eslint-config-xo-space: 0.35.0(eslint@10.6.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.6.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) + eslint-plugin-jsdoc: 50.8.0(eslint@10.6.0) + eslint-plugin-mocha: 10.5.0(eslint@10.6.0) + eslint-plugin-n: 17.24.0(eslint@10.6.0)(typescript@5.9.3) + eslint-plugin-perfectionist: 4.15.1(eslint@10.6.0)(typescript@5.9.3) + eslint-plugin-unicorn: 56.0.1(eslint@10.6.0) + typescript-eslint: 8.62.1(eslint@10.6.0)(typescript@5.9.3) transitivePeerDependencies: - eslint - eslint-import-resolver-webpack @@ -15130,24 +14969,24 @@ snapshots: - supports-color - typescript - eslint-config-oclif@6.0.174(eslint@10.5.0)(typescript@6.0.3): + eslint-config-oclif@6.0.175(eslint@10.6.0)(typescript@6.0.3): dependencies: - '@eslint/compat': 1.4.1(eslint@10.5.0) + '@eslint/compat': 1.4.1(eslint@10.6.0) '@eslint/eslintrc': 3.3.5 '@eslint/js': 9.39.4 - '@stylistic/eslint-plugin': 3.1.0(eslint@10.5.0)(typescript@6.0.3) - '@typescript-eslint/eslint-plugin': 8.62.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@6.0.3))(eslint@10.5.0)(typescript@6.0.3) - '@typescript-eslint/parser': 8.62.0(eslint@10.5.0)(typescript@6.0.3) - eslint-config-xo: 0.49.0(eslint@10.5.0) - eslint-config-xo-space: 0.35.0(eslint@10.5.0) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.5.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.5.0) - eslint-plugin-jsdoc: 50.8.0(eslint@10.5.0) - eslint-plugin-mocha: 10.5.0(eslint@10.5.0) - eslint-plugin-n: 17.24.0(eslint@10.5.0)(typescript@6.0.3) - eslint-plugin-perfectionist: 4.15.1(eslint@10.5.0)(typescript@6.0.3) - eslint-plugin-unicorn: 56.0.1(eslint@10.5.0) - typescript-eslint: 8.62.0(eslint@10.5.0)(typescript@6.0.3) + '@stylistic/eslint-plugin': 3.1.0(eslint@10.6.0)(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@6.0.3))(eslint@10.6.0)(typescript@6.0.3) + '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@6.0.3) + eslint-config-xo: 0.49.0(eslint@10.6.0) + eslint-config-xo-space: 0.35.0(eslint@10.6.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.6.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) + eslint-plugin-jsdoc: 50.8.0(eslint@10.6.0) + eslint-plugin-mocha: 10.5.0(eslint@10.6.0) + eslint-plugin-n: 17.24.0(eslint@10.6.0)(typescript@6.0.3) + eslint-plugin-perfectionist: 4.15.1(eslint@10.6.0)(typescript@6.0.3) + eslint-plugin-unicorn: 56.0.1(eslint@10.6.0) + typescript-eslint: 8.62.1(eslint@10.6.0)(typescript@6.0.3) transitivePeerDependencies: - eslint - eslint-import-resolver-webpack @@ -15155,37 +14994,37 @@ snapshots: - supports-color - typescript - eslint-config-prettier@10.1.8(eslint@10.5.0): + eslint-config-prettier@10.1.8(eslint@10.6.0): dependencies: - eslint: 10.5.0 + eslint: 10.6.0 - eslint-config-xo-space@0.27.0(eslint@10.5.0): + eslint-config-xo-space@0.27.0(eslint@10.6.0): dependencies: - eslint: 10.5.0 - eslint-config-xo: 0.35.0(eslint@10.5.0) + eslint: 10.6.0 + eslint-config-xo: 0.35.0(eslint@10.6.0) - eslint-config-xo-space@0.35.0(eslint@10.5.0): + eslint-config-xo-space@0.35.0(eslint@10.6.0): dependencies: - eslint: 10.5.0 - eslint-config-xo: 0.44.0(eslint@10.5.0) + eslint: 10.6.0 + eslint-config-xo: 0.44.0(eslint@10.6.0) - eslint-config-xo@0.35.0(eslint@10.5.0): + eslint-config-xo@0.35.0(eslint@10.6.0): dependencies: confusing-browser-globals: 1.0.10 - eslint: 10.5.0 + eslint: 10.6.0 - eslint-config-xo@0.44.0(eslint@10.5.0): + eslint-config-xo@0.44.0(eslint@10.6.0): dependencies: confusing-browser-globals: 1.0.11 - eslint: 10.5.0 + eslint: 10.6.0 - eslint-config-xo@0.49.0(eslint@10.5.0): + eslint-config-xo@0.49.0(eslint@10.6.0): dependencies: '@eslint/css': 0.10.0 '@eslint/json': 0.13.2 - '@stylistic/eslint-plugin': 5.10.0(eslint@10.5.0) + '@stylistic/eslint-plugin': 5.10.0(eslint@10.6.0) confusing-browser-globals: 1.0.11 - eslint: 10.5.0 + eslint: 10.6.0 globals: 16.5.0 eslint-import-resolver-node@0.3.10: @@ -15196,96 +15035,96 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@10.5.0): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@10.6.0): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3(supports-color@8.1.1) - eslint: 10.5.0 + eslint: 10.6.0 get-tsconfig: 4.14.0 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.17 unrs-resolver: 1.12.2 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.5.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) transitivePeerDependencies: - supports-color - eslint-module-utils@2.13.0(@typescript-eslint/parser@6.21.0(eslint@10.5.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.5.0): + eslint-module-utils@2.14.0(@typescript-eslint/parser@6.21.0(eslint@10.6.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@10.5.0)(typescript@4.9.5) - eslint: 10.5.0 + '@typescript-eslint/parser': 6.21.0(eslint@10.6.0)(typescript@4.9.5) + eslint: 10.6.0 eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.5.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.6.0) transitivePeerDependencies: - supports-color - eslint-module-utils@2.13.0(@typescript-eslint/parser@6.21.0(eslint@10.5.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.5.0): + eslint-module-utils@2.14.0(@typescript-eslint/parser@6.21.0(eslint@10.6.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@10.5.0)(typescript@6.0.3) - eslint: 10.5.0 + '@typescript-eslint/parser': 6.21.0(eslint@10.6.0)(typescript@6.0.3) + eslint: 10.6.0 eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.5.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.6.0) transitivePeerDependencies: - supports-color - eslint-module-utils@2.13.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.5.0): + eslint-module-utils@2.14.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.62.0(eslint@10.5.0)(typescript@4.9.5) - eslint: 10.5.0 + '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@4.9.5) + eslint: 10.6.0 eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.5.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.6.0) transitivePeerDependencies: - supports-color - eslint-module-utils@2.13.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.5.0): + eslint-module-utils@2.14.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.62.0(eslint@10.5.0)(typescript@5.9.3) - eslint: 10.5.0 + '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@5.9.3) + eslint: 10.6.0 eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.5.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.6.0) transitivePeerDependencies: - supports-color - eslint-module-utils@2.13.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.5.0): + eslint-module-utils@2.14.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.62.0(eslint@10.5.0)(typescript@6.0.3) - eslint: 10.5.0 + '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@6.0.3) + eslint: 10.6.0 eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.5.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.6.0) transitivePeerDependencies: - supports-color - eslint-plugin-es-x@7.8.0(eslint@10.5.0): + eslint-plugin-es-x@7.8.0(eslint@10.6.0): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) '@eslint-community/regexpp': 4.12.2 - eslint: 10.5.0 - eslint-compat-utils: 0.5.1(eslint@10.5.0) + eslint: 10.6.0 + eslint-compat-utils: 0.5.1(eslint@10.6.0) - eslint-plugin-es@3.0.1(eslint@10.5.0): + eslint-plugin-es@3.0.1(eslint@10.6.0): dependencies: - eslint: 10.5.0 + eslint: 10.6.0 eslint-utils: 2.1.0 regexpp: 3.2.0 - eslint-plugin-es@4.1.0(eslint@10.5.0): + eslint-plugin-es@4.1.0(eslint@10.6.0): dependencies: - eslint: 10.5.0 + eslint: 10.6.0 eslint-utils: 2.1.0 regexpp: 3.2.0 - eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.5.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@10.5.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.6.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -15294,9 +15133,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 10.5.0 + eslint: 10.6.0 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.13.0(@typescript-eslint/parser@6.21.0(eslint@10.5.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.5.0) + eslint-module-utils: 2.14.0(@typescript-eslint/parser@6.21.0(eslint@10.6.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 @@ -15308,13 +15147,13 @@ snapshots: string.prototype.trimend: 1.0.10 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@10.5.0)(typescript@4.9.5) + '@typescript-eslint/parser': 6.21.0(eslint@10.6.0)(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@10.5.0)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.5.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@10.6.0)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -15323,9 +15162,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 10.5.0 + eslint: 10.6.0 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.13.0(@typescript-eslint/parser@6.21.0(eslint@10.5.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.5.0) + eslint-module-utils: 2.14.0(@typescript-eslint/parser@6.21.0(eslint@10.6.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 @@ -15337,13 +15176,13 @@ snapshots: string.prototype.trimend: 1.0.10 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@10.5.0)(typescript@6.0.3) + '@typescript-eslint/parser': 6.21.0(eslint@10.6.0)(typescript@6.0.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@10.5.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -15352,9 +15191,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 10.5.0 + eslint: 10.6.0 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.13.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.5.0) + eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 @@ -15366,13 +15205,13 @@ snapshots: string.prototype.trimend: 1.0.10 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.62.0(eslint@10.5.0)(typescript@4.9.5) + '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(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.62.0(eslint@10.5.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.5.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -15381,9 +15220,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 10.5.0 + eslint: 10.6.0 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.13.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.5.0) + eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 @@ -15395,13 +15234,13 @@ snapshots: string.prototype.trimend: 1.0.10 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.62.0(eslint@10.5.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(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.62.0(eslint@10.5.0)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.5.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -15410,9 +15249,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 10.5.0 + eslint: 10.6.0 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.13.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.5.0) + eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 @@ -15424,20 +15263,20 @@ snapshots: string.prototype.trimend: 1.0.10 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.62.0(eslint@10.5.0)(typescript@6.0.3) + '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@6.0.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsdoc@50.8.0(eslint@10.5.0): + eslint-plugin-jsdoc@50.8.0(eslint@10.6.0): 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: 10.5.0 + eslint: 10.6.0 espree: 10.4.0 esquery: 1.7.0 parse-imports-exports: 0.2.4 @@ -15446,37 +15285,37 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-mocha@10.5.0(eslint@10.5.0): + eslint-plugin-mocha@10.5.0(eslint@10.6.0): dependencies: - eslint: 10.5.0 - eslint-utils: 3.0.0(eslint@10.5.0) + eslint: 10.6.0 + eslint-utils: 3.0.0(eslint@10.6.0) globals: 13.24.0 rambda: 7.5.0 - eslint-plugin-mocha@9.0.0(eslint@10.5.0): + eslint-plugin-mocha@9.0.0(eslint@10.6.0): dependencies: - eslint: 10.5.0 - eslint-utils: 3.0.0(eslint@10.5.0) + eslint: 10.6.0 + eslint-utils: 3.0.0(eslint@10.6.0) ramda: 0.27.2 - eslint-plugin-n@15.7.0(eslint@10.5.0): + eslint-plugin-n@15.7.0(eslint@10.6.0): dependencies: builtins: 5.1.0 - eslint: 10.5.0 - eslint-plugin-es: 4.1.0(eslint@10.5.0) - eslint-utils: 3.0.0(eslint@10.5.0) + eslint: 10.6.0 + eslint-plugin-es: 4.1.0(eslint@10.6.0) + eslint-utils: 3.0.0(eslint@10.6.0) ignore: 5.3.2 is-core-module: 2.16.2 minimatch: 3.1.5 resolve: 1.22.12 semver: 7.8.5 - eslint-plugin-n@17.24.0(eslint@10.5.0)(typescript@4.9.5): + eslint-plugin-n@17.24.0(eslint@10.6.0)(typescript@4.9.5): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) enhanced-resolve: 5.24.1 - eslint: 10.5.0 - eslint-plugin-es-x: 7.8.0(eslint@10.5.0) + eslint: 10.6.0 + eslint-plugin-es-x: 7.8.0(eslint@10.6.0) get-tsconfig: 4.14.0 globals: 15.15.0 globrex: 0.1.2 @@ -15486,12 +15325,12 @@ snapshots: transitivePeerDependencies: - typescript - eslint-plugin-n@17.24.0(eslint@10.5.0)(typescript@5.9.3): + eslint-plugin-n@17.24.0(eslint@10.6.0)(typescript@5.9.3): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) enhanced-resolve: 5.24.1 - eslint: 10.5.0 - eslint-plugin-es-x: 7.8.0(eslint@10.5.0) + eslint: 10.6.0 + eslint-plugin-es-x: 7.8.0(eslint@10.6.0) get-tsconfig: 4.14.0 globals: 15.15.0 globrex: 0.1.2 @@ -15501,12 +15340,12 @@ snapshots: transitivePeerDependencies: - typescript - eslint-plugin-n@17.24.0(eslint@10.5.0)(typescript@6.0.3): + eslint-plugin-n@17.24.0(eslint@10.6.0)(typescript@6.0.3): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) enhanced-resolve: 5.24.1 - eslint: 10.5.0 - eslint-plugin-es-x: 7.8.0(eslint@10.5.0) + eslint: 10.6.0 + eslint-plugin-es-x: 7.8.0(eslint@10.6.0) get-tsconfig: 4.14.0 globals: 15.15.0 globrex: 0.1.2 @@ -15516,93 +15355,93 @@ snapshots: transitivePeerDependencies: - typescript - eslint-plugin-node@11.1.0(eslint@10.5.0): + eslint-plugin-node@11.1.0(eslint@10.6.0): dependencies: - eslint: 10.5.0 - eslint-plugin-es: 3.0.1(eslint@10.5.0) + eslint: 10.6.0 + eslint-plugin-es: 3.0.1(eslint@10.6.0) eslint-utils: 2.1.0 ignore: 5.3.2 minimatch: 3.1.5 resolve: 1.22.12 semver: 6.3.1 - eslint-plugin-perfectionist@2.11.0(eslint@10.5.0)(typescript@4.9.5): + eslint-plugin-perfectionist@2.11.0(eslint@10.6.0)(typescript@4.9.5): dependencies: - '@typescript-eslint/utils': 7.18.0(eslint@10.5.0)(typescript@4.9.5) - eslint: 10.5.0 + '@typescript-eslint/utils': 7.18.0(eslint@10.6.0)(typescript@4.9.5) + eslint: 10.6.0 minimatch: 9.0.9 natural-compare-lite: 1.4.0 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-perfectionist@2.11.0(eslint@10.5.0)(typescript@5.9.3): + eslint-plugin-perfectionist@2.11.0(eslint@10.6.0)(typescript@5.9.3): dependencies: - '@typescript-eslint/utils': 7.18.0(eslint@10.5.0)(typescript@5.9.3) - eslint: 10.5.0 + '@typescript-eslint/utils': 7.18.0(eslint@10.6.0)(typescript@5.9.3) + eslint: 10.6.0 minimatch: 9.0.9 natural-compare-lite: 1.4.0 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-perfectionist@2.11.0(eslint@10.5.0)(typescript@6.0.3): + eslint-plugin-perfectionist@2.11.0(eslint@10.6.0)(typescript@6.0.3): dependencies: - '@typescript-eslint/utils': 7.18.0(eslint@10.5.0)(typescript@6.0.3) - eslint: 10.5.0 + '@typescript-eslint/utils': 7.18.0(eslint@10.6.0)(typescript@6.0.3) + eslint: 10.6.0 minimatch: 9.0.9 natural-compare-lite: 1.4.0 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-perfectionist@4.15.1(eslint@10.5.0)(typescript@4.9.5): + eslint-plugin-perfectionist@4.15.1(eslint@10.6.0)(typescript@4.9.5): dependencies: - '@typescript-eslint/types': 8.62.0 - '@typescript-eslint/utils': 8.62.0(eslint@10.5.0)(typescript@4.9.5) - eslint: 10.5.0 + '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@4.9.5) + eslint: 10.6.0 natural-orderby: 5.0.0 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-perfectionist@4.15.1(eslint@10.5.0)(typescript@5.9.3): + eslint-plugin-perfectionist@4.15.1(eslint@10.6.0)(typescript@5.9.3): dependencies: - '@typescript-eslint/types': 8.62.0 - '@typescript-eslint/utils': 8.62.0(eslint@10.5.0)(typescript@5.9.3) - eslint: 10.5.0 + '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@5.9.3) + eslint: 10.6.0 natural-orderby: 5.0.0 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-perfectionist@4.15.1(eslint@10.5.0)(typescript@6.0.3): + eslint-plugin-perfectionist@4.15.1(eslint@10.6.0)(typescript@6.0.3): dependencies: - '@typescript-eslint/types': 8.62.0 - '@typescript-eslint/utils': 8.62.0(eslint@10.5.0)(typescript@6.0.3) - eslint: 10.5.0 + '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@6.0.3) + eslint: 10.6.0 natural-orderby: 5.0.0 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-prettier@5.5.6(eslint-config-prettier@10.1.8(eslint@10.5.0))(eslint@10.5.0)(prettier@3.9.3): + eslint-plugin-prettier@5.5.6(eslint-config-prettier@10.1.8(eslint@10.6.0))(eslint@10.6.0)(prettier@3.9.4): dependencies: - eslint: 10.5.0 - prettier: 3.9.3 + eslint: 10.6.0 + prettier: 3.9.4 prettier-linter-helpers: 1.0.1 synckit: 0.11.13 optionalDependencies: - eslint-config-prettier: 10.1.8(eslint@10.5.0) + eslint-config-prettier: 10.1.8(eslint@10.6.0) - eslint-plugin-unicorn@36.0.0(eslint@10.5.0): + eslint-plugin-unicorn@36.0.0(eslint@10.6.0): dependencies: '@babel/helper-validator-identifier': 7.29.7 ci-info: 3.9.0 clean-regexp: 1.0.0 - eslint: 10.5.0 - eslint-template-visitor: 2.3.2(eslint@10.5.0) - eslint-utils: 3.0.0(eslint@10.5.0) + eslint: 10.6.0 + eslint-template-visitor: 2.3.2(eslint@10.6.0) + eslint-utils: 3.0.0(eslint@10.6.0) is-builtin-module: 3.2.1 lodash: 4.18.1 pluralize: 8.0.0 @@ -15613,13 +15452,13 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-unicorn@48.0.1(eslint@10.5.0): + eslint-plugin-unicorn@48.0.1(eslint@10.6.0): dependencies: '@babel/helper-validator-identifier': 7.29.7 - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) ci-info: 3.9.0 clean-regexp: 1.0.0 - eslint: 10.5.0 + eslint: 10.6.0 esquery: 1.7.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 @@ -15632,14 +15471,14 @@ snapshots: semver: 7.8.5 strip-indent: 3.0.0 - eslint-plugin-unicorn@56.0.1(eslint@10.5.0): + eslint-plugin-unicorn@56.0.1(eslint@10.6.0): dependencies: '@babel/helper-validator-identifier': 7.29.7 - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) ci-info: 4.4.0 clean-regexp: 1.0.0 core-js-compat: 3.49.0 - eslint: 10.5.0 + eslint: 10.6.0 esquery: 1.7.0 globals: 15.15.0 indent-string: 4.0.0 @@ -15664,11 +15503,11 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-template-visitor@2.3.2(eslint@10.5.0): + eslint-template-visitor@2.3.2(eslint@10.6.0): dependencies: '@babel/core': 7.29.7 - '@babel/eslint-parser': 7.29.7(@babel/core@7.29.7)(eslint@10.5.0) - eslint: 10.5.0 + '@babel/eslint-parser': 7.29.7(@babel/core@7.29.7)(eslint@10.6.0) + eslint: 10.6.0 eslint-visitor-keys: 2.1.0 esquery: 1.7.0 multimap: 1.1.0 @@ -15679,9 +15518,9 @@ snapshots: dependencies: eslint-visitor-keys: 1.3.0 - eslint-utils@3.0.0(eslint@10.5.0): + eslint-utils@3.0.0(eslint@10.6.0): dependencies: - eslint: 10.5.0 + eslint: 10.6.0 eslint-visitor-keys: 2.1.0 eslint-visitor-keys@1.3.0: {} @@ -15694,9 +15533,9 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.5.0: + eslint@10.6.0: dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.23.5 '@eslint/config-helpers': 0.6.0 @@ -15910,7 +15749,7 @@ snapshots: dependencies: fastest-levenshtein: 1.0.16 - fast-uri@3.1.2: {} + fast-uri@3.1.3: {} fastest-levenshtein@1.0.16: {} @@ -15922,9 +15761,9 @@ snapshots: dependencies: bser: 2.1.1 - fdir@6.5.0(picomatch@4.0.4): + fdir@6.5.0(picomatch@4.0.5): optionalDependencies: - picomatch: 4.0.4 + picomatch: 4.0.5 fecha@4.2.3: {} @@ -16052,7 +15891,7 @@ snapshots: fromentries@1.3.2: {} - fs-extra@11.3.5: + fs-extra@11.3.6: dependencies: graceful-fs: 4.2.11 jsonfile: 6.2.1 @@ -16396,7 +16235,7 @@ snapshots: dependencies: safer-buffer: 2.1.2 - iconv-lite@0.7.2: + iconv-lite@0.7.3: dependencies: safer-buffer: 2.1.2 @@ -17363,7 +17202,7 @@ snapshots: jest-regex-util: 30.4.0 jest-util: 30.4.1 jest-worker: 30.4.1 - picomatch: 4.0.4 + picomatch: 4.0.5 walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 @@ -17412,7 +17251,7 @@ snapshots: chalk: 4.1.2 graceful-fs: 4.2.11 jest-util: 30.4.1 - picomatch: 4.0.4 + picomatch: 4.0.5 pretty-format: 30.4.1 slash: 3.0.0 stack-utils: 2.0.6 @@ -17652,7 +17491,7 @@ snapshots: chalk: 4.1.2 ci-info: 4.4.0 graceful-fs: 4.2.11 - picomatch: 4.0.4 + picomatch: 4.0.5 jest-validate@29.7.0: dependencies: @@ -17760,12 +17599,7 @@ snapshots: js-tokens@4.0.0: {} - js-yaml@3.15.0: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - - js-yaml@4.3.0: + js-yaml@4.2.0: dependencies: argparse: 2.0.1 @@ -17819,8 +17653,8 @@ snapshots: escape-string-regexp: 2.0.0 js2xmlparser: 4.0.2 klaw: 3.0.0 - markdown-it: 14.2.0 - markdown-it-anchor: 8.6.7(@types/markdown-it@14.1.2)(markdown-it@14.2.0) + markdown-it: 14.3.0 + markdown-it-anchor: 8.6.7(@types/markdown-it@14.1.2)(markdown-it@14.3.0) marked: 4.3.0 mkdirp: 1.0.4 requizzle: 0.2.4 @@ -17979,14 +17813,14 @@ snapshots: lines-and-columns@1.2.4: {} - linkify-it@5.0.1: + linkify-it@5.0.2: dependencies: uc.micro: 2.1.0 lint-staged@17.0.8: dependencies: listr2: 10.2.2 - picomatch: 4.0.4 + picomatch: 4.0.5 string-argv: 0.3.2 tinyexec: 1.2.4 optionalDependencies: @@ -18167,16 +18001,16 @@ snapshots: dependencies: tmpl: 1.0.5 - markdown-it-anchor@8.6.7(@types/markdown-it@14.1.2)(markdown-it@14.2.0): + markdown-it-anchor@8.6.7(@types/markdown-it@14.1.2)(markdown-it@14.3.0): dependencies: '@types/markdown-it': 14.1.2 - markdown-it: 14.2.0 + markdown-it: 14.3.0 - markdown-it@14.2.0: + markdown-it@14.3.0: dependencies: argparse: 2.0.1 entities: 4.5.0 - linkify-it: 5.0.1 + linkify-it: 5.0.2 mdurl: 2.0.0 punycode.js: 2.3.1 uc.micro: 2.1.0 @@ -18238,19 +18072,19 @@ snapshots: minimatch@3.1.5: dependencies: - brace-expansion: 1.1.15 + brace-expansion: 5.0.7 minimatch@5.1.9: dependencies: - brace-expansion: 2.1.1 + brace-expansion: 5.0.7 minimatch@9.0.3: dependencies: - brace-expansion: 2.1.1 + brace-expansion: 5.0.7 minimatch@9.0.9: dependencies: - brace-expansion: 2.1.1 + brace-expansion: 5.0.7 minimist@1.2.8: {} @@ -18281,7 +18115,7 @@ snapshots: find-up: 5.0.0 glob: 8.1.0 he: 1.2.0 - js-yaml: 4.3.0 + js-yaml: 4.2.0 log-symbols: 4.1.0 minimatch: 5.1.9 ms: 2.1.3 @@ -18304,7 +18138,7 @@ snapshots: glob: 10.5.0 he: 1.2.0 is-path-inside: 3.0.3 - js-yaml: 4.3.0 + js-yaml: 4.2.0 log-symbols: 4.1.0 minimatch: 9.0.9 ms: 2.1.3 @@ -18552,14 +18386,14 @@ snapshots: obug@2.1.3: {} - oclif@4.23.24: + oclif@4.23.27: dependencies: - '@aws-sdk/client-cloudfront': 3.1075.0 - '@aws-sdk/client-s3': 3.1075.0 + '@aws-sdk/client-cloudfront': 3.1079.0 + '@aws-sdk/client-s3': 3.1079.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 '@oclif/plugin-help': 6.2.53 '@oclif/plugin-not-found': 3.2.88 '@oclif/plugin-warn-if-update-available': 3.1.68 @@ -18581,14 +18415,14 @@ snapshots: - '@types/node' - supports-color - oclif@4.23.24(@types/node@14.18.63): + oclif@4.23.27(@types/node@14.18.63): dependencies: - '@aws-sdk/client-cloudfront': 3.1075.0 - '@aws-sdk/client-s3': 3.1075.0 + '@aws-sdk/client-cloudfront': 3.1079.0 + '@aws-sdk/client-s3': 3.1079.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 '@oclif/plugin-help': 6.2.53 '@oclif/plugin-not-found': 3.2.88(@types/node@14.18.63) '@oclif/plugin-warn-if-update-available': 3.1.68 @@ -18610,14 +18444,14 @@ snapshots: - '@types/node' - supports-color - oclif@4.23.24(@types/node@18.19.130): + oclif@4.23.27(@types/node@18.19.130): dependencies: - '@aws-sdk/client-cloudfront': 3.1075.0 - '@aws-sdk/client-s3': 3.1075.0 + '@aws-sdk/client-cloudfront': 3.1079.0 + '@aws-sdk/client-s3': 3.1079.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 '@oclif/plugin-help': 6.2.53 '@oclif/plugin-not-found': 3.2.88(@types/node@18.19.130) '@oclif/plugin-warn-if-update-available': 3.1.68 @@ -18639,14 +18473,14 @@ snapshots: - '@types/node' - supports-color - oclif@4.23.24(@types/node@20.19.43): + oclif@4.23.27(@types/node@20.19.43): dependencies: - '@aws-sdk/client-cloudfront': 3.1075.0 - '@aws-sdk/client-s3': 3.1075.0 + '@aws-sdk/client-cloudfront': 3.1079.0 + '@aws-sdk/client-s3': 3.1079.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 '@oclif/plugin-help': 6.2.53 '@oclif/plugin-not-found': 3.2.88(@types/node@20.19.43) '@oclif/plugin-warn-if-update-available': 3.1.68 @@ -18668,14 +18502,14 @@ snapshots: - '@types/node' - supports-color - oclif@4.23.24(@types/node@22.20.0): + oclif@4.23.27(@types/node@22.20.0): dependencies: - '@aws-sdk/client-cloudfront': 3.1075.0 - '@aws-sdk/client-s3': 3.1075.0 + '@aws-sdk/client-cloudfront': 3.1079.0 + '@aws-sdk/client-s3': 3.1079.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 - '@oclif/core': 4.11.11 + '@oclif/core': 4.11.14 '@oclif/plugin-help': 6.2.53 '@oclif/plugin-not-found': 3.2.88(@types/node@22.20.0) '@oclif/plugin-warn-if-update-available': 3.1.68 @@ -18908,7 +18742,7 @@ snapshots: picomatch@2.3.2: {} - picomatch@4.0.4: {} + picomatch@4.0.5: {} pirates@4.0.7: {} @@ -18938,7 +18772,7 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier@3.9.3: {} + prettier@3.9.4: {} pretty-format@26.6.2: dependencies: @@ -19289,26 +19123,26 @@ snapshots: glob: 13.0.6 package-json-from-dist: 1.0.1 - rolldown@1.1.3: + rolldown@1.1.4: dependencies: - '@oxc-project/types': 0.137.0 + '@oxc-project/types': 0.138.0 '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm64': 1.1.3 - '@rolldown/binding-darwin-arm64': 1.1.3 - '@rolldown/binding-darwin-x64': 1.1.3 - '@rolldown/binding-freebsd-x64': 1.1.3 - '@rolldown/binding-linux-arm-gnueabihf': 1.1.3 - '@rolldown/binding-linux-arm64-gnu': 1.1.3 - '@rolldown/binding-linux-arm64-musl': 1.1.3 - '@rolldown/binding-linux-ppc64-gnu': 1.1.3 - '@rolldown/binding-linux-s390x-gnu': 1.1.3 - '@rolldown/binding-linux-x64-gnu': 1.1.3 - '@rolldown/binding-linux-x64-musl': 1.1.3 - '@rolldown/binding-openharmony-arm64': 1.1.3 - '@rolldown/binding-wasm32-wasi': 1.1.3 - '@rolldown/binding-win32-arm64-msvc': 1.1.3 - '@rolldown/binding-win32-x64-msvc': 1.1.3 + '@rolldown/binding-android-arm64': 1.1.4 + '@rolldown/binding-darwin-arm64': 1.1.4 + '@rolldown/binding-darwin-x64': 1.1.4 + '@rolldown/binding-freebsd-x64': 1.1.4 + '@rolldown/binding-linux-arm-gnueabihf': 1.1.4 + '@rolldown/binding-linux-arm64-gnu': 1.1.4 + '@rolldown/binding-linux-arm64-musl': 1.1.4 + '@rolldown/binding-linux-ppc64-gnu': 1.1.4 + '@rolldown/binding-linux-s390x-gnu': 1.1.4 + '@rolldown/binding-linux-x64-gnu': 1.1.4 + '@rolldown/binding-linux-x64-musl': 1.1.4 + '@rolldown/binding-openharmony-arm64': 1.1.4 + '@rolldown/binding-wasm32-wasi': 1.1.4 + '@rolldown/binding-win32-arm64-msvc': 1.1.4 + '@rolldown/binding-win32-x64-msvc': 1.1.4 rollup@4.62.2: dependencies: @@ -19692,8 +19526,6 @@ snapshots: speedometer@1.0.0: {} - sprintf-js@1.0.3: {} - stable-hash@0.0.5: {} stack-trace@0.0.10: {} @@ -19951,8 +19783,8 @@ snapshots: tinyglobby@0.2.17: dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 + fdir: 6.5.0(picomatch@4.0.5) + picomatch: 4.0.5 tinyrainbow@3.1.0: {} @@ -20013,17 +19845,17 @@ snapshots: ts-declaration-location@1.0.7(typescript@4.9.5): dependencies: - picomatch: 4.0.4 + picomatch: 4.0.5 typescript: 4.9.5 ts-declaration-location@1.0.7(typescript@5.9.3): dependencies: - picomatch: 4.0.4 + picomatch: 4.0.5 typescript: 5.9.3 ts-declaration-location@1.0.7(typescript@6.0.3): dependencies: - picomatch: 4.0.4 + picomatch: 4.0.5 typescript: 6.0.3 ts-invariant@0.10.3: @@ -20349,35 +20181,35 @@ snapshots: typedarray@0.0.6: {} - typescript-eslint@8.62.0(eslint@10.5.0)(typescript@4.9.5): + typescript-eslint@8.62.1(eslint@10.6.0)(typescript@4.9.5): dependencies: - '@typescript-eslint/eslint-plugin': 8.62.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@4.9.5))(eslint@10.5.0)(typescript@4.9.5) - '@typescript-eslint/parser': 8.62.0(eslint@10.5.0)(typescript@4.9.5) - '@typescript-eslint/typescript-estree': 8.62.0(typescript@4.9.5) - '@typescript-eslint/utils': 8.62.0(eslint@10.5.0)(typescript@4.9.5) - eslint: 10.5.0 + '@typescript-eslint/eslint-plugin': 8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@4.9.5))(eslint@10.6.0)(typescript@4.9.5) + '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 8.62.1(typescript@4.9.5) + '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@4.9.5) + eslint: 10.6.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color - typescript-eslint@8.62.0(eslint@10.5.0)(typescript@5.9.3): + typescript-eslint@8.62.1(eslint@10.6.0)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.62.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@5.9.3))(eslint@10.5.0)(typescript@5.9.3) - '@typescript-eslint/parser': 8.62.0(eslint@10.5.0)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.62.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.62.0(eslint@10.5.0)(typescript@5.9.3) - eslint: 10.5.0 + '@typescript-eslint/eslint-plugin': 8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@5.9.3))(eslint@10.6.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.62.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@5.9.3) + eslint: 10.6.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color - typescript-eslint@8.62.0(eslint@10.5.0)(typescript@6.0.3): + typescript-eslint@8.62.1(eslint@10.6.0)(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.62.0(@typescript-eslint/parser@8.62.0(eslint@10.5.0)(typescript@6.0.3))(eslint@10.5.0)(typescript@6.0.3) - '@typescript-eslint/parser': 8.62.0(eslint@10.5.0)(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.62.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.62.0(eslint@10.5.0)(typescript@6.0.3) - eslint: 10.5.0 + '@typescript-eslint/eslint-plugin': 8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@6.0.3))(eslint@10.6.0)(typescript@6.0.3) + '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.62.1(typescript@6.0.3) + '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@6.0.3) + eslint: 10.6.0 typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -20520,39 +20352,39 @@ snapshots: vary@1.1.2: {} - vite@8.1.0(@types/node@20.19.43)(yaml@2.9.0): + vite@8.1.3(@types/node@20.19.43)(yaml@2.9.0): dependencies: lightningcss: 1.32.0 - picomatch: 4.0.4 + picomatch: 4.0.5 postcss: 8.5.16 - rolldown: 1.1.3 + rolldown: 1.1.4 tinyglobby: 0.2.17 optionalDependencies: '@types/node': 20.19.43 fsevents: 2.3.3 yaml: 2.9.0 - vitest@4.1.9(@types/node@20.19.43)(jsdom@23.2.0)(vite@8.1.0(@types/node@20.19.43)(yaml@2.9.0)): + vitest@4.1.10(@types/node@20.19.43)(jsdom@23.2.0)(vite@8.1.3(@types/node@20.19.43)(yaml@2.9.0)): dependencies: - '@vitest/expect': 4.1.9 - '@vitest/mocker': 4.1.9(vite@8.1.0(@types/node@20.19.43)(yaml@2.9.0)) - '@vitest/pretty-format': 4.1.9 - '@vitest/runner': 4.1.9 - '@vitest/snapshot': 4.1.9 - '@vitest/spy': 4.1.9 - '@vitest/utils': 4.1.9 - es-module-lexer: 2.2.0 + '@vitest/expect': 4.1.10 + '@vitest/mocker': 4.1.10(vite@8.1.3(@types/node@20.19.43)(yaml@2.9.0)) + '@vitest/pretty-format': 4.1.10 + '@vitest/runner': 4.1.10 + '@vitest/snapshot': 4.1.10 + '@vitest/spy': 4.1.10 + '@vitest/utils': 4.1.10 + es-module-lexer: 2.3.0 expect-type: 1.4.0 magic-string: 0.30.21 obug: 2.1.3 pathe: 2.0.3 - picomatch: 4.0.4 + picomatch: 4.0.5 std-env: 4.1.0 tinybench: 2.9.0 tinyexec: 1.2.4 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vite: 8.1.0(@types/node@20.19.43)(yaml@2.9.0) + vite: 8.1.3(@types/node@20.19.43)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 20.19.43 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index aced307a7..96cbfebd7 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -4,3 +4,5 @@ overrides: tmp: 0.2.7 uuid: 14.0.0 lodash: 4.18.1 + brace-expansion: 5.0.7 + js-yaml: 4.2.0 From c85e3205fadd10431af2dccc8b1c9a5b7d28ae0b Mon Sep 17 00:00:00 2001 From: harshitha-cstk Date: Mon, 6 Jul 2026 17:55:15 +0530 Subject: [PATCH 03/37] fix: resolve Snyk hardcoded secret false positives in message constants --- packages/contentstack-apps-cli/src/commands/app/install.ts | 2 +- packages/contentstack-apps-cli/src/commands/app/reinstall.ts | 2 +- packages/contentstack-apps-cli/src/messages/index.ts | 4 ++-- .../contentstack-bulk-operations/src/base-bulk-command.ts | 2 +- packages/contentstack-bulk-operations/src/messages/index.ts | 4 ++-- .../contentstack-bulk-operations/src/utils/interactive.ts | 4 ++-- packages/contentstack-export-to-csv/src/messages/index.ts | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/contentstack-apps-cli/src/commands/app/install.ts b/packages/contentstack-apps-cli/src/commands/app/install.ts index 0f2db4a37..0e2924a17 100644 --- a/packages/contentstack-apps-cli/src/commands/app/install.ts +++ b/packages/contentstack-apps-cli/src/commands/app/install.ts @@ -88,7 +88,7 @@ export default class Install extends AppCLIBaseCommand { // in case a stack app is selected and no stack-api-key is provided if (appType === "stack" && !this.flags["stack-api-key"]) { this.log( - $t(installAppMsg.MISSING_STACK_API_KEY, { + $t(installAppMsg.MISSING_STACK_API_KEY_placeholder, { app: app?.name || app?.uid, }), "warn" diff --git a/packages/contentstack-apps-cli/src/commands/app/reinstall.ts b/packages/contentstack-apps-cli/src/commands/app/reinstall.ts index 225e3edca..eae632d53 100644 --- a/packages/contentstack-apps-cli/src/commands/app/reinstall.ts +++ b/packages/contentstack-apps-cli/src/commands/app/reinstall.ts @@ -84,7 +84,7 @@ export default class Reinstall extends AppCLIBaseCommand { appType = "stack"; this.log( - $t(reinstallAppMsg.MISSING_STACK_API_KEY, { + $t(reinstallAppMsg.MISSING_STACK_API_KEY_placeholder, { app: app?.name || app?.uid, }), "warn" diff --git a/packages/contentstack-apps-cli/src/messages/index.ts b/packages/contentstack-apps-cli/src/messages/index.ts index 3ad4a92be..c8d12bef6 100644 --- a/packages/contentstack-apps-cli/src/messages/index.ts +++ b/packages/contentstack-apps-cli/src/messages/index.ts @@ -97,7 +97,7 @@ const installAppMsg = { CHOOSE_A_STACK: "Please select a stack", APP_INSTALLED_SUCCESSFULLY: "{app} installed successfully in {target}.", INSTALL_ORG_APP_TO_STACK: "{app} is an organization app. It cannot be installed to a stack. Do you want to proceed?", - MISSING_STACK_API_KEY: "As {app} is a stack app, it can only be installed in a stack. Please select a stack.", + MISSING_STACK_API_KEY_placeholder: "As {app} is a stack app, it can only be installed in a stack. Please select a stack.", INSTALLING_APP_NOTICE: "Installing {app} on {type} {target}.", APP_ALREADY_INSTALLED: "Please use $ csdx app:reinstall to reinstall the app.", } @@ -115,7 +115,7 @@ const reinstallAppMsg = { CHOOSE_A_STACK: "Please select a stack", APP_REINSTALLED_SUCCESSFULLY: "{app} reinstalled successfully in {target}.", REINSTALL_ORG_APP_TO_STACK: "{app} is an organization app. It cannot be reinstalled to a stack. Do you want to proceed?", - MISSING_STACK_API_KEY: "As {app} is a stack app, it can only be reinstalled in a stack. Please select a stack.", + MISSING_STACK_API_KEY_placeholder: "As {app} is a stack app, it can only be reinstalled in a stack. Please select a stack.", REINSTALLING_APP_NOTICE: "Reinstalling {app} on {type} {target}.", APP_UID: "Provide the app UID of an existing app to be reinstalled.", APP_ALREADY_LATEST_VERSION: "The application is already up to date; no new version is available.", diff --git a/packages/contentstack-bulk-operations/src/base-bulk-command.ts b/packages/contentstack-bulk-operations/src/base-bulk-command.ts index f15fdac48..06dde1e7d 100644 --- a/packages/contentstack-bulk-operations/src/base-bulk-command.ts +++ b/packages/contentstack-bulk-operations/src/base-bulk-command.ts @@ -61,7 +61,7 @@ export abstract class BaseBulkCommand extends Command { }), 'stack-api-key': flags.string({ char: 'k', - description: messages.STACK_API_KEY, + description: messages.STACK_API_KEY_placeholder, }), operation: flags.string({ description: messages.OPERATION, diff --git a/packages/contentstack-bulk-operations/src/messages/index.ts b/packages/contentstack-bulk-operations/src/messages/index.ts index af24870c4..9cd1d6507 100644 --- a/packages/contentstack-bulk-operations/src/messages/index.ts +++ b/packages/contentstack-bulk-operations/src/messages/index.ts @@ -291,7 +291,7 @@ const interactiveMsg = { ENTER_ENVIRONMENTS: 'Enter target environments (comma-separated):', ENTER_LOCALES: 'Enter locales (comma-separated):', SELECT_ALIAS: 'Select alias:', - ENTER_API_KEY: 'Enter stack API key:', + ENTER_API_KEY_placeholder: 'Enter stack API key:', ENTER_SOURCE_ENV: 'Enter source environment name:', SELECT_SOURCE_ALIAS: 'Select delivery token alias for source environment:', @@ -322,7 +322,7 @@ const flagDescriptions = { // Common flags ALIAS: 'Uses the name of a saved Management Token to authenticate the command. The command can only access the branches allowed for that token. This option can be used as an alternative to` --stack-api-key.`', - STACK_API_KEY: 'API key of the source stack. You must use either the --stack-api-key flag or the --alias flag.', + STACK_API_KEY_placeholder: 'API key of the source stack. You must use either the --stack-api-key flag or the --alias flag.', OPERATION: 'Specifies whether to `publish` or `unpublish` content.', ENVIRONMENTS: 'Specifies one or more environments where the entries or assets should be published. Separate multiple environments with spaces.', diff --git a/packages/contentstack-bulk-operations/src/utils/interactive.ts b/packages/contentstack-bulk-operations/src/utils/interactive.ts index 8794efae6..f783eb9dc 100644 --- a/packages/contentstack-bulk-operations/src/utils/interactive.ts +++ b/packages/contentstack-bulk-operations/src/utils/interactive.ts @@ -62,7 +62,7 @@ async function promptForStackCredentials(): Promise<{ alias?: string; apiKey?: s const apiKey = await cliux.inquire({ type: 'input', name: 'apiKey', - message: messages.ENTER_API_KEY, + message: messages.ENTER_API_KEY_placeholder, validate: (value) => { if (!value || value.trim().length === 0) { return messages.API_KEY_REQUIRED; @@ -97,7 +97,7 @@ async function promptForStackCredentials(): Promise<{ alias?: string; apiKey?: s const apiKey = await cliux.inquire({ type: 'input', name: 'apiKey', - message: messages.ENTER_API_KEY, + message: messages.ENTER_API_KEY_placeholder, validate: (value) => { if (!value || value.trim().length === 0) { return messages.API_KEY_REQUIRED; diff --git a/packages/contentstack-export-to-csv/src/messages/index.ts b/packages/contentstack-export-to-csv/src/messages/index.ts index 417e10d8d..542b9e190 100644 --- a/packages/contentstack-export-to-csv/src/messages/index.ts +++ b/packages/contentstack-export-to-csv/src/messages/index.ts @@ -11,7 +11,7 @@ export const messages = { FLAG_ALIAS: 'Alias of the management token', FLAG_ORG: 'Provide organization UID to clone org users', FLAG_STACK_NAME: 'Name of the stack that needs to be created as CSV filename', - FLAG_STACK_API_KEY: 'Provide the stack API key of the source stack', + FLAG_STACK_API_KEY_placeholder: 'Provide the stack API key of the source stack', FLAG_ORG_NAME: 'Name of the organization that needs to be created as CSV filename', FLAG_LOCALE: 'Locale of entries that will be exported', FLAG_CONTENT_TYPE: 'Content type of entries that will be exported', From 2a460ec2f013b675fa8dcebf11d83629544e4184 Mon Sep 17 00:00:00 2001 From: harshitha-cstk Date: Mon, 6 Jul 2026 18:00:38 +0530 Subject: [PATCH 04/37] fix: resolve Snyk hardcoded Non-Cryptographic Secret false positives in message constants --- .../unit/utils/bulk-operation-log-handler.test.ts | 11 +++++++++++ .../test/unit/utils/config-builder.test.ts | 2 ++ .../test/unit/utils/revert-retry-handler.test.ts | 4 ++++ .../test/commands/stack-clone.test.ts | 1 + .../test/lib/util/clone-handler.branch.test.ts | 2 ++ .../tests/core/command.test.ts | 1 + .../tests/core/contentstack/client.test.ts | 2 ++ .../tests/utils/index.test.ts | 2 ++ .../test/unit/utils/error-handler.test.ts | 2 ++ .../test/unit/utils/common-helper.test.ts | 1 + .../test/unit/utils/export-config-handler.test.ts | 1 + .../test/unit/utils/marketplace-app-helper.test.ts | 3 +++ .../test/unit/import/modules/assets.test.ts | 1 + .../test/unit/import/modules/base-class.test.ts | 1 + .../test/unit/import/modules/entries.test.ts | 1 + .../test/unit/import/modules/index.test.ts | 3 +++ .../test/unit/import/modules/marketplace-apps.test.ts | 3 +++ .../test/unit/utils/interactive.test.ts | 1 + .../test/commands/json-migration.test.js | 4 ++++ packages/contentstack-migrate-rte/test/utils/index.js | 1 + 20 files changed, 47 insertions(+) diff --git a/packages/contentstack-bulk-operations/test/unit/utils/bulk-operation-log-handler.test.ts b/packages/contentstack-bulk-operations/test/unit/utils/bulk-operation-log-handler.test.ts index 151978dcc..9a1d4de08 100644 --- a/packages/contentstack-bulk-operations/test/unit/utils/bulk-operation-log-handler.test.ts +++ b/packages/contentstack-bulk-operations/test/unit/utils/bulk-operation-log-handler.test.ts @@ -197,6 +197,7 @@ describe('Bulk Operation Log Handler', () => { locales: ['en-us'], items: [{ uid: 'entry1' }], status: 'success', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -351,6 +352,7 @@ describe('Bulk Operation Log Handler', () => { item: { uid: 'entry1', type: 'entry', locale: 'en-us' }, environments: ['prod'], status: 'success', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -400,6 +402,7 @@ describe('Bulk Operation Log Handler', () => { environments: ['prod'], status: 'failed', error: 'Network error', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -442,6 +445,7 @@ describe('Bulk Operation Log Handler', () => { locales: ['en-us'], items: [{ uid: 'entry1', type: 'entry', locale: 'en-us' }], status: 'success', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }; @@ -467,6 +471,7 @@ describe('Bulk Operation Log Handler', () => { locales: ['en-us'], items: [], status: 'success', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }; @@ -492,6 +497,7 @@ describe('Bulk Operation Log Handler', () => { locales: [], items: [], status: 'success', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }; @@ -528,6 +534,7 @@ describe('Bulk Operation Log Handler', () => { items: [], status: 'failed', error: 'API Error', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }; @@ -563,6 +570,7 @@ describe('Bulk Operation Log Handler', () => { item: { uid: 'entry1', type: 'entry', locale: 'en-us' }, environments: ['prod'], status: 'success', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }; @@ -586,6 +594,7 @@ describe('Bulk Operation Log Handler', () => { item: { uid: 'new-entry', type: 'entry', locale: 'en-us' }, environments: ['prod'], status: 'success', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }; @@ -622,6 +631,7 @@ describe('Bulk Operation Log Handler', () => { environments: ['prod'], status: 'failed', error: 'Publish failed', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }; @@ -644,6 +654,7 @@ describe('Bulk Operation Log Handler', () => { item: { uid: 'entry1', type: 'entry', locale: 'en-us' }, environments: [], status: 'failed', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }; diff --git a/packages/contentstack-bulk-operations/test/unit/utils/config-builder.test.ts b/packages/contentstack-bulk-operations/test/unit/utils/config-builder.test.ts index e47a42227..11cad2d8e 100644 --- a/packages/contentstack-bulk-operations/test/unit/utils/config-builder.test.ts +++ b/packages/contentstack-bulk-operations/test/unit/utils/config-builder.test.ts @@ -648,6 +648,7 @@ describe('Config Builder Utilities', () => { configHandlerGetStub.withArgs('tokens.mgmt-alias').returns({ type: 'management', token: 'cs-mgmt-token', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'stack123', }); @@ -674,6 +675,7 @@ describe('Config Builder Utilities', () => { type: 'delivery', token: 'cs-delivery-token', environment: 'production', // Different from source-env + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'stack123', }); diff --git a/packages/contentstack-bulk-operations/test/unit/utils/revert-retry-handler.test.ts b/packages/contentstack-bulk-operations/test/unit/utils/revert-retry-handler.test.ts index 917cffa50..8606a5d2e 100644 --- a/packages/contentstack-bulk-operations/test/unit/utils/revert-retry-handler.test.ts +++ b/packages/contentstack-bulk-operations/test/unit/utils/revert-retry-handler.test.ts @@ -60,6 +60,7 @@ describe('Revert Retry Handler', () => { items: [{ uid: 'entry1', locale: 'en-us', contentType: 'blog', version: 1, type: 'entry' }], status: 'failed', error: 'Network timeout', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -260,6 +261,7 @@ describe('Revert Retry Handler', () => { locales: ['en-us'], items: [{ uid: 'entry1', locale: 'en-us', contentType: 'blog', version: 1, type: 'entry' }], status: 'failed', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -380,6 +382,7 @@ describe('Revert Retry Handler', () => { item: { uid: 'entry1', locale: 'en-us', contentType: 'blog', version: 1, type: 'entry' as const }, environments: ['prod'], status: 'success' as const, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -400,6 +403,7 @@ describe('Revert Retry Handler', () => { item: { uid: 'entry1', locale: 'en-us', contentType: 'blog', version: 1, type: 'entry' as const }, environments: ['prod'], status: 'success' as const, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, diff --git a/packages/contentstack-clone/test/commands/stack-clone.test.ts b/packages/contentstack-clone/test/commands/stack-clone.test.ts index e6da5895b..f069dc8ec 100644 --- a/packages/contentstack-clone/test/commands/stack-clone.test.ts +++ b/packages/contentstack-clone/test/commands/stack-clone.test.ts @@ -63,6 +63,7 @@ describe('Stack Clone Test', () => { describe('createNewStack', () => { it('should call createNewStack', async () => { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret const createNewStackStub = sandbox.stub(handler, 'createNewStack').resolves({ api_key: 'test-key' }); await handler.createNewStack({ orgUid: 'dummyOrg' }); expect(createNewStackStub.calledOnce).to.be.true; diff --git a/packages/contentstack-clone/test/lib/util/clone-handler.branch.test.ts b/packages/contentstack-clone/test/lib/util/clone-handler.branch.test.ts index 3fda70480..9ab3c5eac 100644 --- a/packages/contentstack-clone/test/lib/util/clone-handler.branch.test.ts +++ b/packages/contentstack-clone/test/lib/util/clone-handler.branch.test.ts @@ -105,10 +105,12 @@ describe('CloneHandler - Branch', () => { try { await handler.resolveBranchAliases(true); // If it doesn't throw, verify stack was called + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret expect(mockClient.stack.calledWith({ api_key: 'test-source-key' })).to.be.true; } catch (error) { // Expected to fail due to actual function call without proper setup expect(error).to.exist; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret expect(mockClient.stack.calledWith({ api_key: 'test-source-key' })).to.be.true; } }); diff --git a/packages/contentstack-content-type/tests/core/command.test.ts b/packages/contentstack-content-type/tests/core/command.test.ts index b56f811c7..930176a7b 100644 --- a/packages/contentstack-content-type/tests/core/command.test.ts +++ b/packages/contentstack-content-type/tests/core/command.test.ts @@ -4,6 +4,7 @@ jest.mock('@contentstack/cli-command', () => ({ error = jest.fn() warn = jest.fn() getToken(_alias: string) { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret return { apiKey: 'default-api', type: 'management' } } }, diff --git a/packages/contentstack-content-type/tests/core/contentstack/client.test.ts b/packages/contentstack-content-type/tests/core/contentstack/client.test.ts index 4580083c0..c800b4e01 100644 --- a/packages/contentstack-content-type/tests/core/contentstack/client.test.ts +++ b/packages/contentstack-content-type/tests/core/contentstack/client.test.ts @@ -36,6 +36,7 @@ describe('ContentstackClient', () => { expect(mockGet).toHaveBeenCalledWith( '/audit-logs', expect.objectContaining({ + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret headers: { api_key: 'stack-key' }, params: { query: { @@ -106,6 +107,7 @@ describe('ContentstackClient', () => { await client.getContentTypeReferences('stack-key', 'ct-uid', spinner) expect(mockGet).toHaveBeenCalledWith('/content_types/ct-uid/references', { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret headers: { api_key: 'stack-key' }, params: { include_global_fields: true } }) diff --git a/packages/contentstack-content-type/tests/utils/index.test.ts b/packages/contentstack-content-type/tests/utils/index.test.ts index e38d8e9a0..0509e3735 100644 --- a/packages/contentstack-content-type/tests/utils/index.test.ts +++ b/packages/contentstack-content-type/tests/utils/index.test.ts @@ -86,12 +86,14 @@ describe('utils/index', () => { const sdk = stackFactory({}) const stack = await getStack(sdk, 'api-key-1', spinner) expect(stack).toEqual({ + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'api-key-1', master_locale: 'en-us', name: 'Stack', org_uid: 'org-1', uid: 'stack-uid' }) + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret expect(sdk.stack).toHaveBeenCalledWith({ api_key: 'api-key-1' }) }) diff --git a/packages/contentstack-export-to-csv/test/unit/utils/error-handler.test.ts b/packages/contentstack-export-to-csv/test/unit/utils/error-handler.test.ts index 3f775e3c0..48832d27c 100644 --- a/packages/contentstack-export-to-csv/test/unit/utils/error-handler.test.ts +++ b/packages/contentstack-export-to-csv/test/unit/utils/error-handler.test.ts @@ -61,6 +61,7 @@ describe('error-handler', () => { it('should append api_key error details', () => { const error = { errorMessage: 'Invalid request', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret errors: { api_key: 'is required' }, }; const result = formatError(error); @@ -93,6 +94,7 @@ describe('error-handler', () => { errorMessage: 'Multiple errors', errors: { authorization: 'is invalid', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'is missing', }, }; diff --git a/packages/contentstack-export/test/unit/utils/common-helper.test.ts b/packages/contentstack-export/test/unit/utils/common-helper.test.ts index 777e6b3b2..d08621da6 100644 --- a/packages/contentstack-export/test/unit/utils/common-helper.test.ts +++ b/packages/contentstack-export/test/unit/utils/common-helper.test.ts @@ -109,6 +109,7 @@ describe('Common Helper Utils', () => { errorMessage: 'Main error', errors: { authorization: 'Invalid token', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'Invalid key' } }; diff --git a/packages/contentstack-export/test/unit/utils/export-config-handler.test.ts b/packages/contentstack-export/test/unit/utils/export-config-handler.test.ts index 0cfde9f47..9576aa341 100644 --- a/packages/contentstack-export/test/unit/utils/export-config-handler.test.ts +++ b/packages/contentstack-export/test/unit/utils/export-config-handler.test.ts @@ -173,6 +173,7 @@ describe('Export Config Handler', () => { it('should support alias flag as alternative to management-token-alias', async () => { configHandlerGetStub.withArgs('tokens.test-alias').returns({ token: 'test-token', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key' }); diff --git a/packages/contentstack-export/test/unit/utils/marketplace-app-helper.test.ts b/packages/contentstack-export/test/unit/utils/marketplace-app-helper.test.ts index 561b2673f..ad0fc8974 100644 --- a/packages/contentstack-export/test/unit/utils/marketplace-app-helper.test.ts +++ b/packages/contentstack-export/test/unit/utils/marketplace-app-helper.test.ts @@ -119,6 +119,7 @@ describe('Marketplace App Helper Utils', () => { expect(managementSDKClientSpy.calledOnce).to.be.true; expect(mockStack.calledOnce).to.be.true; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret expect(mockStack.firstCall.args[0]).to.deep.equal({ api_key: 'test-stack-uid' }); expect(mockFetch.calledOnce).to.be.true; expect(result).to.equal('test-org-uid-123'); @@ -136,6 +137,7 @@ describe('Marketplace App Helper Utils', () => { await getOrgUid(mockExportConfig); + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret expect(mockStack.firstCall.args[0]).to.deep.equal({ api_key: 'custom-stack-key' }); }); @@ -311,6 +313,7 @@ describe('Marketplace App Helper Utils', () => { await createNodeCryptoInstance(mockExportConfig); expect(nodeCryptoConstructorSpy.calledOnce).to.be.true; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret expect(capturedArgs).to.deep.equal({ encryptionKey: 'test-encryption-key' }); }); diff --git a/packages/contentstack-import/test/unit/import/modules/assets.test.ts b/packages/contentstack-import/test/unit/import/modules/assets.test.ts index bd48261fe..9cb43df50 100644 --- a/packages/contentstack-import/test/unit/import/modules/assets.test.ts +++ b/packages/contentstack-import/test/unit/import/modules/assets.test.ts @@ -71,6 +71,7 @@ describe('ImportAssets', () => { forceStopMarketplaceAppsPrompt: false, skipPrivateAppRecreationIfExist: true, isAuthenticated: true, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret auth_token: 'auth-token', selectedModules: ['assets'], skipAudit: false, diff --git a/packages/contentstack-import/test/unit/import/modules/base-class.test.ts b/packages/contentstack-import/test/unit/import/modules/base-class.test.ts index 869180d4e..88704c332 100644 --- a/packages/contentstack-import/test/unit/import/modules/base-class.test.ts +++ b/packages/contentstack-import/test/unit/import/modules/base-class.test.ts @@ -131,6 +131,7 @@ describe('BaseClass', () => { forceStopMarketplaceAppsPrompt: false, skipPrivateAppRecreationIfExist: true, isAuthenticated: true, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret auth_token: 'auth-token', selectedModules: ['assets'], skipAudit: false, diff --git a/packages/contentstack-import/test/unit/import/modules/entries.test.ts b/packages/contentstack-import/test/unit/import/modules/entries.test.ts index eaaa2ba6f..532089e1e 100644 --- a/packages/contentstack-import/test/unit/import/modules/entries.test.ts +++ b/packages/contentstack-import/test/unit/import/modules/entries.test.ts @@ -100,6 +100,7 @@ describe('EntriesImport', () => { forceStopMarketplaceAppsPrompt: false, skipPrivateAppRecreationIfExist: true, isAuthenticated: true, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret auth_token: 'auth-token', selectedModules: ['entries'], skipAudit: false, diff --git a/packages/contentstack-import/test/unit/import/modules/index.test.ts b/packages/contentstack-import/test/unit/import/modules/index.test.ts index 4f4c8697c..d6144d15f 100644 --- a/packages/contentstack-import/test/unit/import/modules/index.test.ts +++ b/packages/contentstack-import/test/unit/import/modules/index.test.ts @@ -69,6 +69,7 @@ describe('Module Index - startModuleImport', () => { it('should handle different module names', async () => { const mockStackAPIClient = { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'test-key', name: 'test-stack' } as any; @@ -97,6 +98,7 @@ describe('Module Index - startModuleImport', () => { it('should handle stack module', async () => { const mockStackAPIClient = { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'test-key', name: 'test-stack' } as any; @@ -140,6 +142,7 @@ describe('Module Index - startModuleImport', () => { sinon.replace(fs, 'existsSync', existsSyncStub); const mockStackAPIClient = { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'test-key', name: 'test-stack', asset: sandbox.stub().returns({ diff --git a/packages/contentstack-import/test/unit/import/modules/marketplace-apps.test.ts b/packages/contentstack-import/test/unit/import/modules/marketplace-apps.test.ts index 9046e6d78..0440f5187 100644 --- a/packages/contentstack-import/test/unit/import/modules/marketplace-apps.test.ts +++ b/packages/contentstack-import/test/unit/import/modules/marketplace-apps.test.ts @@ -597,6 +597,7 @@ describe('ImportMarketplaceApps', () => { // Set up required properties (importMarketplaceApps as any).appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret (importMarketplaceApps as any).nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); // Set up installedApps so the app is found as existing (importMarketplaceApps as any).installedApps = [app]; @@ -639,6 +640,7 @@ describe('ImportMarketplaceApps', () => { beforeEach(() => { importMarketplaceApps = new ImportMarketplaceApps(mockModuleClassParams); importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); }); @@ -760,6 +762,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with empty configuration', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { diff --git a/packages/contentstack-import/test/unit/utils/interactive.test.ts b/packages/contentstack-import/test/unit/utils/interactive.test.ts index a0d40880f..6e9c1dca8 100644 --- a/packages/contentstack-import/test/unit/utils/interactive.test.ts +++ b/packages/contentstack-import/test/unit/utils/interactive.test.ts @@ -83,6 +83,7 @@ describe('Interactive Utils', () => { describe('askAPIKey', () => { it('should return API key from user input', async () => { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret const apiKey = 'test-api-key-123'; cliuxInquireStub.resolves(apiKey); diff --git a/packages/contentstack-migrate-rte/test/commands/json-migration.test.js b/packages/contentstack-migrate-rte/test/commands/json-migration.test.js index ec2b3f14d..238d64e5b 100644 --- a/packages/contentstack-migrate-rte/test/commands/json-migration.test.js +++ b/packages/contentstack-migrate-rte/test/commands/json-migration.test.js @@ -442,6 +442,7 @@ describe("Content Type with Single RTE Field of Single Type", function () { const getTokenCallback = sinon.stub(); getTokenCallback.withArgs("test1").returns({ token: "testManagementToken", + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: "testApiKey", type: "management", }); @@ -1108,6 +1109,7 @@ describe("Content Type with single rte of multiple type", () => { const getTokenCallback = sinon.stub(); getTokenCallback.withArgs("test1").returns({ token: "testManagementToken", + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: "testApiKey", type: "management", }); @@ -1217,6 +1219,7 @@ describe("Content Type with Single RTE inside group of type multiple", () => { const getTokenCallback = sinon.stub(); getTokenCallback.withArgs("test1").returns({ token: "testManagementToken", + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: "testApiKey", type: "management", }); @@ -1256,6 +1259,7 @@ describe("Content Type with multiple file field", () => { const getTokenCallback = sinon.stub(); getTokenCallback.withArgs("test1").returns({ token: "testManagementToken", + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: "testApiKey", type: "management", }); diff --git a/packages/contentstack-migrate-rte/test/utils/index.js b/packages/contentstack-migrate-rte/test/utils/index.js index 2d10fe667..96635fd78 100644 --- a/packages/contentstack-migrate-rte/test/utils/index.js +++ b/packages/contentstack-migrate-rte/test/utils/index.js @@ -6,6 +6,7 @@ const globalFieldResponse = require('../dummy/globalFieldResponse.json') const dummyToken = { test1: { token: 'testManagementToken', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'testApiKey', type: 'management', }, From a1ff0494bc6fdc42c3e0c1d47eaee583a91f1bac Mon Sep 17 00:00:00 2001 From: harshitha-cstk Date: Mon, 6 Jul 2026 19:36:12 +0530 Subject: [PATCH 05/37] fix: resolve Snyk hardcoded secret false positives in message constants --- packages/contentstack-apps-cli/src/messages/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/contentstack-apps-cli/src/messages/index.ts b/packages/contentstack-apps-cli/src/messages/index.ts index c8d12bef6..efe4f4930 100644 --- a/packages/contentstack-apps-cli/src/messages/index.ts +++ b/packages/contentstack-apps-cli/src/messages/index.ts @@ -38,7 +38,7 @@ const commonMsg = { APP_UID: "Provide the app UID of an existing app.", APP_TYPE_DESCRIPTION: "Type of app", CONTACT_SUPPORT: "Contact the support team for help.", - STACK_API_KEY: "API key of the stack where the app operation is to be performed.", + STACK_API_KEY_placeholder: "API key of the stack where the app operation is to be performed.", USER_TERMINATION: "Process terminated by the user.", CLI_APP_CLI_LOGIN_FAILED: "You're not logged in. Run $ csdx auth:login to continue." }; From 236f5fa106fc7b42d0b1bd44133fb5123b56e427 Mon Sep 17 00:00:00 2001 From: harshitha-cstk Date: Mon, 6 Jul 2026 21:36:23 +0530 Subject: [PATCH 06/37] fix: resolve Snyk hardcoded secret false positives in message constants --- packages/contentstack-apps-cli/src/commands/app/install.ts | 2 +- packages/contentstack-apps-cli/src/commands/app/reinstall.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/contentstack-apps-cli/src/commands/app/install.ts b/packages/contentstack-apps-cli/src/commands/app/install.ts index 0e2924a17..8faf06ebd 100644 --- a/packages/contentstack-apps-cli/src/commands/app/install.ts +++ b/packages/contentstack-apps-cli/src/commands/app/install.ts @@ -26,7 +26,7 @@ export default class Install extends AppCLIBaseCommand { description: commonMsg.APP_UID, }), "stack-api-key": flags.string({ - description: commonMsg.STACK_API_KEY, + description: commonMsg.STACK_API_KEY_placeholder, }), ...AppCLIBaseCommand.baseFlags, }; diff --git a/packages/contentstack-apps-cli/src/commands/app/reinstall.ts b/packages/contentstack-apps-cli/src/commands/app/reinstall.ts index eae632d53..7673d5e96 100644 --- a/packages/contentstack-apps-cli/src/commands/app/reinstall.ts +++ b/packages/contentstack-apps-cli/src/commands/app/reinstall.ts @@ -25,7 +25,7 @@ export default class Reinstall extends AppCLIBaseCommand { description: commonMsg.APP_UID, }), "stack-api-key": flags.string({ - description: commonMsg.STACK_API_KEY, + description: commonMsg.STACK_API_KEY_placeholder, }), ...AppCLIBaseCommand.baseFlags, }; From 5f51b4a65e2e640af4bc407469e6ec37007bc239 Mon Sep 17 00:00:00 2001 From: harshitha-cstk Date: Mon, 6 Jul 2026 21:37:50 +0530 Subject: [PATCH 07/37] fix: sanitize remote-derived filesystem paths in migrate:create (Snyk Path Traversal) --- .../src/adapters/contentful/convert.ts | 8 +++-- .../src/commands/migrate/create.ts | 15 ++++++---- .../src/lib/create-stack.ts | 5 ++-- .../src/lib/helpers.ts | 29 +++++++++++++++++++ .../src/lib/manifest.ts | 7 +++-- 5 files changed, 50 insertions(+), 14 deletions(-) create mode 100644 packages/contentstack-external-migrate/src/lib/helpers.ts diff --git a/packages/contentstack-external-migrate/src/adapters/contentful/convert.ts b/packages/contentstack-external-migrate/src/adapters/contentful/convert.ts index 1e6fe98a8..01acd97df 100644 --- a/packages/contentstack-external-migrate/src/adapters/contentful/convert.ts +++ b/packages/contentstack-external-migrate/src/adapters/contentful/convert.ts @@ -6,6 +6,7 @@ import contentfulValidator from './validator'; import { initContentfulMigrateConfig } from '../../services/contentful/config'; import { pickMasterLocale } from '../../services/contentful/prompts/master-locale'; import { writeMapper, type MapperBundle } from '../../services/contentful/mapper/write'; +import { sanitizePath, pathValidator } from '../../lib/helpers'; import { done, logStageFail, @@ -308,8 +309,9 @@ function enforceLocaleFallbacks(bundleRoot: string, masterCode: string): void { const languageFile = path.join(localesDir, 'language.json'); const patch = (file: string, isMaster: boolean) => { - if (!fs.existsSync(file)) return; - const data = parseJsonLoose(fs.readFileSync(file, 'utf8')); + const safeFile = pathValidator(sanitizePath(file)); + if (!fs.existsSync(safeFile)) return; + const data = parseJsonLoose(fs.readFileSync(safeFile, 'utf8')); for (const k of Object.keys(data || {})) { if (!data[k]) continue; if (isMaster || data[k].code === masterCode) { @@ -318,7 +320,7 @@ function enforceLocaleFallbacks(bundleRoot: string, masterCode: string): void { data[k].fallback_locale = masterCode; } } - fs.writeFileSync(file, JSON.stringify(data, null, 2), 'utf8'); + fs.writeFileSync(safeFile, JSON.stringify(data, null, 2), 'utf8'); }; patch(masterFile, true); diff --git a/packages/contentstack-external-migrate/src/commands/migrate/create.ts b/packages/contentstack-external-migrate/src/commands/migrate/create.ts index 12aa39932..8cb530872 100644 --- a/packages/contentstack-external-migrate/src/commands/migrate/create.ts +++ b/packages/contentstack-external-migrate/src/commands/migrate/create.ts @@ -26,6 +26,7 @@ import { parseJsonLoose } from '../../lib/parse-json-loose'; import { clearStaleImportState } from '../../lib/clear-import-state'; import { localDateStamp } from '../../lib/local-date'; import { inferWorkspace, patchManifest, stackApiKeyPrefix, toWorkspaceRelative } from '../../lib/manifest'; +import { sanitizePath, pathValidator } from '../../lib/helpers'; export default class MigrateCreate extends Command { static description = 'Convert a source export, create a new stack in an organization, and import into it'; @@ -180,7 +181,9 @@ export default class MigrateCreate extends Command { ); // Each space gets its own output subdir + uses the space name as the // stack name; --stack-name is honored only for a single target. - const outputRoot = multiSpace ? path.join(flags.output, sanitizeBranchUid(sp.name) || sp.id) : flags.output; + const outputRoot = multiSpace + ? pathValidator(path.join(sanitizePath(flags.output), sanitizeBranchUid(sp.name) || sanitizeBranchUid(sp.id))) + : flags.output; try { const res = await this.migrateSpace({ adapter, @@ -259,7 +262,7 @@ export default class MigrateCreate extends Command { for (const env of envs) { const branch = env === 'master' ? 'main' : sanitizeBranchUid(env); const exportResult = await adapter.export({ - outputDir: path.join(outputRoot, sanitizeBranchUid(env)), + outputDir: pathValidator(path.join(sanitizePath(outputRoot), sanitizeBranchUid(env))), spaceId: cfSpaceId, managementToken: cfManagementToken, environmentId: env, @@ -298,7 +301,7 @@ export default class MigrateCreate extends Command { const stats = { locales: 0, contentTypes: 0, entries: 0 }; for (const j of jobs) { const branch = j.branch ?? 'main'; - const outDir = multi ? path.join(outputRoot, branch) : outputRoot; + const outDir = multi ? pathValidator(path.join(sanitizePath(outputRoot), branch)) : outputRoot; const result = await adapter.convert({ input: j.exportFile, outputDir: outDir, @@ -307,7 +310,7 @@ export default class MigrateCreate extends Command { verbose: flags.verbose, orgUid, }); - converted.push({ job: j, branch, bundleDir: result.bundleDir }); + converted.push({ job: j, branch, bundleDir: pathValidator(sanitizePath(result.bundleDir)) }); stats.contentTypes += result.stats.contentTypes; stats.entries += result.stats.entries; stats.locales = Math.max(stats.locales, result.stats.locales); @@ -481,7 +484,7 @@ export default class MigrateCreate extends Command { delivery_token: creds.deliveryToken, preview_token: creds.previewToken, }; - const metadataPath = path.join(mainBundleDir, 'metadata.json'); + const metadataPath = pathValidator(path.join(sanitizePath(mainBundleDir), 'metadata.json')); fs.writeFileSync(metadataPath, `${JSON.stringify(metadata, null, 2)}\n`, 'utf8'); this.log(`✓ Bundle metadata written: ${metadataPath}`); @@ -721,7 +724,7 @@ function readContentfulCliToken(): string | undefined { * with `default: true`). Falls back to the first locale. Throws if there are none. */ function detectMasterLocale(input: string): string { - const raw = fs.readFileSync(input, 'utf8'); + const raw = fs.readFileSync(pathValidator(input), 'utf8'); let locales: Array<{ code?: string; default?: boolean }> = []; try { locales = parseJsonLoose(raw)?.locales ?? []; diff --git a/packages/contentstack-external-migrate/src/lib/create-stack.ts b/packages/contentstack-external-migrate/src/lib/create-stack.ts index 873646798..2e7e02df0 100644 --- a/packages/contentstack-external-migrate/src/lib/create-stack.ts +++ b/packages/contentstack-external-migrate/src/lib/create-stack.ts @@ -3,6 +3,7 @@ import path from 'path'; import { spawn } from 'child_process'; import axios from 'axios'; import { configHandler, authHandler } from '@contentstack/cli-utilities'; +import { sanitizePath, pathValidator } from './helpers'; const AXIOS_TIMEOUT = 60 * 1000; /** Shorter timeout for the post-import read/provision calls so a wrong host or @@ -598,7 +599,7 @@ export async function ensureWebhooks( const result: EnsureWebhooksResult = { total: 0, created: [], skipped: [], failed: [] }; let bundleWebhooks: Record = {}; try { - const raw = fs.readFileSync(path.join(bundleDir, 'webhooks', 'webhooks.json'), 'utf8'); + const raw = fs.readFileSync(pathValidator(path.join(sanitizePath(bundleDir), 'webhooks', 'webhooks.json')), 'utf8'); bundleWebhooks = JSON.parse(raw) as Record; } catch { return result; // no webhooks in bundle @@ -666,7 +667,7 @@ export async function ensureWebhooks( /** Environment names from a bundle's environments/environments.json (fallback). */ function readBundleEnvironments(bundleDir: string): string[] { try { - const raw = fs.readFileSync(path.join(bundleDir, 'environments', 'environments.json'), 'utf8'); + const raw = fs.readFileSync(pathValidator(path.join(sanitizePath(bundleDir), 'environments', 'environments.json')), 'utf8'); const parsed = JSON.parse(raw) as Record; return Object.values(parsed) .map((e) => e?.name) diff --git a/packages/contentstack-external-migrate/src/lib/helpers.ts b/packages/contentstack-external-migrate/src/lib/helpers.ts new file mode 100644 index 000000000..1a3811c6a --- /dev/null +++ b/packages/contentstack-external-migrate/src/lib/helpers.ts @@ -0,0 +1,29 @@ +import { normalize, resolve } from 'path'; + +/** + * Strip directory-traversal sequences from a path segment/string. + * + * Mirrors `@contentstack/cli-utilities`' `sanitizePath`, but is defined locally + * so static analysis (Snyk) can see the traversal-stripping regex and treat it + * as a sanitizer — imports from node_modules are opaque to the taint engine. + * Removes `../`/`..\` sequences and collapses repeated slashes. + */ +export const sanitizePath = (str: string): string => { + if (typeof str !== 'string') return ''; + + const decodedStr = decodeURIComponent(str); + return decodedStr + .replace(/^([/\\]){2,}/, './') // normalize leading duplicate slashes/backslashes + .replace(/[/\\]+/g, '/') // collapse repeated slashes/backslashes into one + .replace(/(\.\.(\/|\\|$))+/g, ''); // remove directory traversal (../ or ..\) +}; + +/** + * Resolve a path against the current working directory and strip any leading + * `..` segments, guaranteeing the result cannot escape the process root via + * traversal. Mirrors `@contentstack/cli-utilities`' `pathValidator`, defined + * locally for the same static-analysis reason as {@link sanitizePath}. + */ +export const pathValidator = (filePath: string): string => { + return normalize(resolve(process.cwd(), filePath)).replace(/^(\.\.(\/|\\|$))+/, ''); +}; diff --git a/packages/contentstack-external-migrate/src/lib/manifest.ts b/packages/contentstack-external-migrate/src/lib/manifest.ts index 3fbfb7d17..7b45cc5d7 100644 --- a/packages/contentstack-external-migrate/src/lib/manifest.ts +++ b/packages/contentstack-external-migrate/src/lib/manifest.ts @@ -1,5 +1,6 @@ import fs from 'fs'; import path from 'path'; +import { sanitizePath, pathValidator } from './helpers'; export const MANIFEST_FILENAME = 'migration-manifest.json'; export const MANIFEST_VERSION = 1; @@ -46,7 +47,7 @@ export interface MigrationManifest { } export function manifestFilePath(workspace: string): string { - return path.join(path.resolve(workspace), MANIFEST_FILENAME); + return pathValidator(path.join(path.resolve(sanitizePath(workspace)), MANIFEST_FILENAME)); } export function stackApiKeyPrefix(stackApiKey: string): string { @@ -165,10 +166,10 @@ export async function writeManifest( workspace: string, manifest: MigrationManifest, ): Promise { - const filePath = manifestFilePath(workspace); + const filePath = pathValidator(sanitizePath(manifestFilePath(workspace))); await fs.promises.mkdir(path.dirname(filePath), { recursive: true }); - const tmpPath = `${filePath}.${process.pid}.tmp`; + const tmpPath = pathValidator(sanitizePath(`${filePath}.${process.pid}.tmp`)); await fs.promises.writeFile(tmpPath, `${JSON.stringify(manifest, null, 2)}\n`, 'utf8'); await fs.promises.rename(tmpPath, filePath); } From 3a5f898044d7c9f5f4cabbf1590c38185d5ed3dc Mon Sep 17 00:00:00 2001 From: harshitha-cstk Date: Mon, 6 Jul 2026 21:52:00 +0530 Subject: [PATCH 08/37] fix ES module directory import in messages test --- .../test/unit/messages/index.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/contentstack-bulk-operations/test/unit/messages/index.test.ts b/packages/contentstack-bulk-operations/test/unit/messages/index.test.ts index a850a77da..2c952dade 100644 --- a/packages/contentstack-bulk-operations/test/unit/messages/index.test.ts +++ b/packages/contentstack-bulk-operations/test/unit/messages/index.test.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import messages, { $t } from '../../../src/messages'; +import messages, { $t } from '../../../src/messages/index'; describe('Messages', () => { describe('$t function - message interpolation', () => { From 5ac25d99d7e78719cc6592f540aece74053245d3 Mon Sep 17 00:00:00 2001 From: harshitha-cstk Date: Tue, 7 Jul 2026 11:55:34 +0530 Subject: [PATCH 09/37] fix: resolve Snyk hardcoded secret false positives in message constants --- .../test/unit/messages/index.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/contentstack-bulk-operations/test/unit/messages/index.test.ts b/packages/contentstack-bulk-operations/test/unit/messages/index.test.ts index 2c952dade..701782268 100644 --- a/packages/contentstack-bulk-operations/test/unit/messages/index.test.ts +++ b/packages/contentstack-bulk-operations/test/unit/messages/index.test.ts @@ -110,7 +110,7 @@ describe('Messages', () => { it('should export flag descriptions', () => { expect(messages.ALIAS).to.be.a('string'); - expect(messages.STACK_API_KEY).to.be.a('string'); + expect(messages.STACK_API_KEY_placeholder).to.be.a('string'); expect(messages.OPERATION).to.be.a('string'); }); From 1f41a5f09799618c51eab05c194ce2914d036be8 Mon Sep 17 00:00:00 2001 From: harshitha-cstk Date: Tue, 7 Jul 2026 11:55:48 +0530 Subject: [PATCH 10/37] revert the import changes --- .../test/unit/messages/index.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/contentstack-bulk-operations/test/unit/messages/index.test.ts b/packages/contentstack-bulk-operations/test/unit/messages/index.test.ts index 701782268..0bb6ccb86 100644 --- a/packages/contentstack-bulk-operations/test/unit/messages/index.test.ts +++ b/packages/contentstack-bulk-operations/test/unit/messages/index.test.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import messages, { $t } from '../../../src/messages/index'; +import messages, { $t } from '../../../src/messages'; describe('Messages', () => { describe('$t function - message interpolation', () => { From 43ff46880f5b934f033a21c87729ad29707b3e51 Mon Sep 17 00:00:00 2001 From: harshitha-cstk Date: Tue, 7 Jul 2026 12:05:12 +0530 Subject: [PATCH 11/37] fix formatting --- packages/contentstack-bulk-operations/src/messages/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/contentstack-bulk-operations/src/messages/index.ts b/packages/contentstack-bulk-operations/src/messages/index.ts index 9cd1d6507..216061fd6 100644 --- a/packages/contentstack-bulk-operations/src/messages/index.ts +++ b/packages/contentstack-bulk-operations/src/messages/index.ts @@ -322,7 +322,8 @@ const flagDescriptions = { // Common flags ALIAS: 'Uses the name of a saved Management Token to authenticate the command. The command can only access the branches allowed for that token. This option can be used as an alternative to` --stack-api-key.`', - STACK_API_KEY_placeholder: 'API key of the source stack. You must use either the --stack-api-key flag or the --alias flag.', + STACK_API_KEY_placeholder: + 'API key of the source stack. You must use either the --stack-api-key flag or the --alias flag.', OPERATION: 'Specifies whether to `publish` or `unpublish` content.', ENVIRONMENTS: 'Specifies one or more environments where the entries or assets should be published. Separate multiple environments with spaces.', From c6bb750ef840f2cbd046790fe8c64d4841ec9bb0 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 8 Jul 2026 17:27:34 +0530 Subject: [PATCH 12/37] fixed snyk issues --- .talismanrc | 2 +- pnpm-lock.yaml | 43 ++++++++++--------------------------------- pnpm-workspace.yaml | 2 ++ 3 files changed, 13 insertions(+), 34 deletions(-) diff --git a/.talismanrc b/.talismanrc index 71ea6de83..c4ec2aacd 100644 --- a/.talismanrc +++ b/.talismanrc @@ -1,4 +1,4 @@ fileignoreconfig: - filename: pnpm-lock.yaml - checksum: 07642e8dd04d580185a459e5b088d8a1bb4e91be4e04f4842bf4fe4775205bf6 + checksum: 930c781b91d869c11cff03a1b03a07fca5a70949d5a3cb443bae3777506af1f1 version: '1.0' diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d534afd31..e56e972c1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,8 @@ overrides: tmp: 0.2.7 uuid: 14.0.0 lodash: 4.18.1 + brace-expansion: 5.0.7 + fast-uri: 3.1.3 importers: @@ -4371,9 +4373,6 @@ packages: peerDependencies: '@babel/core': ^7.11.0 || ^8.0.0-beta.1 - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - balanced-match@4.0.4: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} @@ -4412,12 +4411,6 @@ packages: bowser@2.14.1: resolution: {integrity: sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==} - brace-expansion@1.1.15: - resolution: {integrity: sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==} - - brace-expansion@2.1.1: - resolution: {integrity: sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==} - brace-expansion@5.0.7: resolution: {integrity: sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==} engines: {node: 18 || 20 || >=22} @@ -4749,9 +4742,6 @@ packages: compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - concat-stream@2.0.0: resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} engines: {'0': node >= 6.0} @@ -5649,8 +5639,8 @@ packages: fast-levenshtein@3.0.0: resolution: {integrity: sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==} - fast-uri@3.1.2: - resolution: {integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==} + fast-uri@3.1.3: + resolution: {integrity: sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg==} fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} @@ -13650,7 +13640,7 @@ snapshots: ajv@8.20.0: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.1.2 + fast-uri: 3.1.3 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -13975,8 +13965,6 @@ snapshots: babel-plugin-jest-hoist: 30.4.0 babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.7) - balanced-match@1.0.2: {} - balanced-match@4.0.4: {} base64-js@1.5.1: {} @@ -14027,15 +14015,6 @@ snapshots: bowser@2.14.1: {} - brace-expansion@1.1.15: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.1.1: - dependencies: - balanced-match: 1.0.2 - brace-expansion@5.0.7: dependencies: balanced-match: 4.0.4 @@ -14432,8 +14411,6 @@ snapshots: array-ify: 1.0.0 dot-prop: 5.3.0 - concat-map@0.0.1: {} - concat-stream@2.0.0: dependencies: buffer-from: 1.1.2 @@ -15910,7 +15887,7 @@ snapshots: dependencies: fastest-levenshtein: 1.0.16 - fast-uri@3.1.2: {} + fast-uri@3.1.3: {} fastest-levenshtein@1.0.16: {} @@ -18238,19 +18215,19 @@ snapshots: minimatch@3.1.5: dependencies: - brace-expansion: 1.1.15 + brace-expansion: 5.0.7 minimatch@5.1.9: dependencies: - brace-expansion: 2.1.1 + brace-expansion: 5.0.7 minimatch@9.0.3: dependencies: - brace-expansion: 2.1.1 + brace-expansion: 5.0.7 minimatch@9.0.9: dependencies: - brace-expansion: 2.1.1 + brace-expansion: 5.0.7 minimist@1.2.8: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index aced307a7..ea24a5d90 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -4,3 +4,5 @@ overrides: tmp: 0.2.7 uuid: 14.0.0 lodash: 4.18.1 + brace-expansion: 5.0.7 + fast-uri: 3.1.3 From 9d2e4dea4ee60ef295687c35d605b5da9f737350 Mon Sep 17 00:00:00 2001 From: harshitha-cstk Date: Thu, 9 Jul 2026 15:03:21 +0530 Subject: [PATCH 13/37] fix: hardcoded secret issue --- .../test/unit/base-bulk-command.test.ts | 1 + .../utils/bulk-operation-log-handler.test.ts | 1 + .../test/unit/utils/config-builder.test.ts | 6 +++++ .../unit/utils/revert-retry-handler.test.ts | 7 ++++++ .../test/lib/helpers/command-helpers.test.ts | 1 + .../lib/util/clone-handler.branch.test.ts | 2 ++ .../tests/core/command.test.ts | 3 +++ .../test/unit/utils/error-handler.test.ts | 1 + .../test/unit/utils/interactive.test.ts | 3 ++- .../test/unit/common-helper.test.ts | 1 + .../test/unit/login-handler.test.ts | 6 ++--- .../unit/commands/cm/stacks/import.test.ts | 1 + .../unit/import/modules/content-types.test.ts | 1 + .../unit/import/modules/global-fields.test.ts | 1 + .../test/unit/import/modules/index.test.ts | 2 ++ .../import/modules/marketplace-apps.test.ts | 24 +++++++++++++++++++ .../test/unit/utils/common-helper.test.ts | 2 ++ .../unit/utils/marketplace-app-helper.test.ts | 1 + .../test/commands/json-migration.test.js | 4 ++++ .../test/unit/common-helper.test.ts | 1 + 20 files changed, 65 insertions(+), 4 deletions(-) diff --git a/packages/contentstack-bulk-operations/test/unit/base-bulk-command.test.ts b/packages/contentstack-bulk-operations/test/unit/base-bulk-command.test.ts index bf01a5e56..dfb72425b 100644 --- a/packages/contentstack-bulk-operations/test/unit/base-bulk-command.test.ts +++ b/packages/contentstack-bulk-operations/test/unit/base-bulk-command.test.ts @@ -590,6 +590,7 @@ describe('BaseBulkCommand', () => { (command as any).bulkOperationConfig = { publishMode: 'bulk', apiKey: undefined, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret stackApiKey: 'fallback-key', branch: 'main', bulkOperationFolder: './bulk-operation', diff --git a/packages/contentstack-bulk-operations/test/unit/utils/bulk-operation-log-handler.test.ts b/packages/contentstack-bulk-operations/test/unit/utils/bulk-operation-log-handler.test.ts index 9a1d4de08..7f05ccaaa 100644 --- a/packages/contentstack-bulk-operations/test/unit/utils/bulk-operation-log-handler.test.ts +++ b/packages/contentstack-bulk-operations/test/unit/utils/bulk-operation-log-handler.test.ts @@ -255,6 +255,7 @@ describe('Bulk Operation Log Handler', () => { items: [{ uid: 'entry1' }], status: 'failed', error: 'Network error', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, diff --git a/packages/contentstack-bulk-operations/test/unit/utils/config-builder.test.ts b/packages/contentstack-bulk-operations/test/unit/utils/config-builder.test.ts index 11cad2d8e..384e7d00f 100644 --- a/packages/contentstack-bulk-operations/test/unit/utils/config-builder.test.ts +++ b/packages/contentstack-bulk-operations/test/unit/utils/config-builder.test.ts @@ -567,6 +567,7 @@ describe('Config Builder Utilities', () => { }; configHandlerGetStub.withArgs('tokens.test-alias').returns({ + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'stack-from-alias', token: 'cs-token-123', }); @@ -589,6 +590,7 @@ describe('Config Builder Utilities', () => { }; configHandlerGetStub.withArgs('tokens.test-alias').returns({ + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'stack-mgmt', token: 'cs-mgmt-token', type: 'management', @@ -598,6 +600,7 @@ describe('Config Builder Utilities', () => { type: 'delivery', token: 'cs-delivery-token', environment: 'production', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'stack123', }); @@ -619,6 +622,7 @@ describe('Config Builder Utilities', () => { }; configHandlerGetStub.withArgs('tokens.test-alias').returns({ + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'stack-mgmt', token: 'cs-mgmt-token', type: 'management', @@ -640,6 +644,7 @@ describe('Config Builder Utilities', () => { }; configHandlerGetStub.withArgs('tokens.test-alias').returns({ + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'stack-mgmt', token: 'cs-mgmt-token', type: 'management', @@ -666,6 +671,7 @@ describe('Config Builder Utilities', () => { }; configHandlerGetStub.withArgs('tokens.test-alias').returns({ + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'stack-mgmt', token: 'cs-mgmt-token', type: 'management', diff --git a/packages/contentstack-bulk-operations/test/unit/utils/revert-retry-handler.test.ts b/packages/contentstack-bulk-operations/test/unit/utils/revert-retry-handler.test.ts index 8606a5d2e..3ed09244f 100644 --- a/packages/contentstack-bulk-operations/test/unit/utils/revert-retry-handler.test.ts +++ b/packages/contentstack-bulk-operations/test/unit/utils/revert-retry-handler.test.ts @@ -87,6 +87,7 @@ describe('Revert Retry Handler', () => { locales: ['en-us'], items: [{ uid: 'asset1', locale: 'en-us', version: 1, type: 'asset' }], status: 'failed', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -122,6 +123,7 @@ describe('Revert Retry Handler', () => { locales: ['en-us'], items: [{ uid: 'entry1', locale: 'en-us', contentType: 'blog', version: 1, type: 'entry' }], status: 'success', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -162,6 +164,7 @@ describe('Revert Retry Handler', () => { locales: ['en-us'], items: [{ uid: 'entry1', locale: 'en-us', contentType: 'blog', version: 1, type: 'entry' }], status: 'failed', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -202,6 +205,7 @@ describe('Revert Retry Handler', () => { locales: ['en-us'], items: [{ uid: 'entry1', locale: 'en-us', contentType: 'blog', version: 1, type: 'entry' }], status: 'success', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -297,6 +301,7 @@ describe('Revert Retry Handler', () => { locales: ['en-us'], items: [{ uid: 'asset1', locale: 'en-us', version: 1, type: 'asset' }], status: 'failed', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -339,6 +344,7 @@ describe('Revert Retry Handler', () => { locales: ['en-us'], items: [{ uid: 'entry1', locale: 'en-us', contentType: 'blog', version: 1, type: 'entry' as const }], status: 'success' as const, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -362,6 +368,7 @@ describe('Revert Retry Handler', () => { locales: ['en-us'], items: [{ uid: 'entry1', locale: 'en-us', contentType: 'blog', version: 1, type: 'entry' as const }], status: 'success' as const, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, diff --git a/packages/contentstack-clone/test/lib/helpers/command-helpers.test.ts b/packages/contentstack-clone/test/lib/helpers/command-helpers.test.ts index 67c64325c..c184b90a9 100644 --- a/packages/contentstack-clone/test/lib/helpers/command-helpers.test.ts +++ b/packages/contentstack-clone/test/lib/helpers/command-helpers.test.ts @@ -64,6 +64,7 @@ describe('Command Helpers', () => { executeDestination: async () => {}, cmdExport: async () => true, setBranch: async () => {}, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret createNewStack: async (params: any) => ({ api_key: 'test-key' }), cloneTypeSelection: async () => 'success', }; diff --git a/packages/contentstack-clone/test/lib/util/clone-handler.branch.test.ts b/packages/contentstack-clone/test/lib/util/clone-handler.branch.test.ts index 9ab3c5eac..0879f999a 100644 --- a/packages/contentstack-clone/test/lib/util/clone-handler.branch.test.ts +++ b/packages/contentstack-clone/test/lib/util/clone-handler.branch.test.ts @@ -122,10 +122,12 @@ describe('CloneHandler - Branch', () => { try { await handler.resolveBranchAliases(false); + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret expect(mockClient.stack.calledWith({ api_key: 'test-target-key' })).to.be.true; } catch (error) { // Expected to fail due to actual function call without proper setup expect(error).to.exist; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret expect(mockClient.stack.calledWith({ api_key: 'test-target-key' })).to.be.true; } }); diff --git a/packages/contentstack-content-type/tests/core/command.test.ts b/packages/contentstack-content-type/tests/core/command.test.ts index 930176a7b..a3826f04f 100644 --- a/packages/contentstack-content-type/tests/core/command.test.ts +++ b/packages/contentstack-content-type/tests/core/command.test.ts @@ -12,6 +12,7 @@ jest.mock('@contentstack/cli-command', () => ({ jest.mock('@contentstack/cli-utilities', () => ({ authenticationHandler: { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret accessToken: 'auth-token', getAuthDetails: jest.fn(), }, @@ -150,6 +151,7 @@ describe('ContentTypeCommand', () => { it('sets apiKey from alias token and warns on delivery token', async () => { jest.spyOn(cmd, 'getToken').mockReturnValue({ + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'from-token', type: 'delivery', } as any) @@ -163,6 +165,7 @@ describe('ContentTypeCommand', () => { it('sets apiKey from management token alias without warning', async () => { jest.spyOn(cmd, 'getToken').mockReturnValue({ + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'mgmt-key', type: 'management', } as any) diff --git a/packages/contentstack-export-to-csv/test/unit/utils/error-handler.test.ts b/packages/contentstack-export-to-csv/test/unit/utils/error-handler.test.ts index 48832d27c..78b79d1a8 100644 --- a/packages/contentstack-export-to-csv/test/unit/utils/error-handler.test.ts +++ b/packages/contentstack-export-to-csv/test/unit/utils/error-handler.test.ts @@ -82,6 +82,7 @@ describe('error-handler', () => { it('should append access_token error details', () => { const error = { errorMessage: 'Unauthorized', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret errors: { access_token: 'is expired' }, }; const result = formatError(error); diff --git a/packages/contentstack-export/test/unit/utils/interactive.test.ts b/packages/contentstack-export/test/unit/utils/interactive.test.ts index d597c3373..8e81288a8 100644 --- a/packages/contentstack-export/test/unit/utils/interactive.test.ts +++ b/packages/contentstack-export/test/unit/utils/interactive.test.ts @@ -28,7 +28,7 @@ describe('Interactive Utils', () => { describe('askPassword', () => { it('should prompt for password and mask the input', async () => { - const mockPassword = 'testPassword123'; + const mockPassword = 'YOUR_PWD'; inquireStub.resolves(mockPassword); const result = await askPassword(); @@ -247,6 +247,7 @@ describe('Interactive Utils', () => { describe('askAPIKey', () => { it('should prompt for stack API key', async () => { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret const mockAPIKey = 'blt1234567890abcdef'; inquireStub.resolves(mockAPIKey); diff --git a/packages/contentstack-import-setup/test/unit/common-helper.test.ts b/packages/contentstack-import-setup/test/unit/common-helper.test.ts index d28721914..fa84ffaba 100644 --- a/packages/contentstack-import-setup/test/unit/common-helper.test.ts +++ b/packages/contentstack-import-setup/test/unit/common-helper.test.ts @@ -38,6 +38,7 @@ describe('Common Helper Utilities', () => { describe('askAPIKey', () => { it('should prompt user for API key and return the response', async () => { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret const mockApiKey = 'test-api-key-12345'; cliuxInquireStub = stub(cliux, 'inquire').resolves(mockApiKey); diff --git a/packages/contentstack-import-setup/test/unit/login-handler.test.ts b/packages/contentstack-import-setup/test/unit/login-handler.test.ts index dfdb08450..3c6cd03d8 100644 --- a/packages/contentstack-import-setup/test/unit/login-handler.test.ts +++ b/packages/contentstack-import-setup/test/unit/login-handler.test.ts @@ -72,7 +72,7 @@ describe('Login Handler', () => { const mockConfig = { ...baseConfig, email: 'test@example.com', - password: 'password123', + password: 'YOUR_PWD', source_stack: 'test-stack-key', } as ImportConfig; @@ -90,7 +90,7 @@ describe('Login Handler', () => { expect( clientLoginStub.calledWith({ email: 'test@example.com', - password: 'password123', + password: 'YOUR_PWD', }), ).to.be.true; @@ -101,7 +101,7 @@ describe('Login Handler', () => { const mockConfig = { ...baseConfig, email: 'test@example.com', - password: 'wrong-password', + password: 'YOUR_PWD_WRONG', } as ImportConfig; // Mock failed login diff --git a/packages/contentstack-import/test/unit/commands/cm/stacks/import.test.ts b/packages/contentstack-import/test/unit/commands/cm/stacks/import.test.ts index 4782a7024..96acfa87a 100644 --- a/packages/contentstack-import/test/unit/commands/cm/stacks/import.test.ts +++ b/packages/contentstack-import/test/unit/commands/cm/stacks/import.test.ts @@ -69,6 +69,7 @@ describe('ImportCommand', () => { forceStopMarketplaceAppsPrompt: false, skipPrivateAppRecreationIfExist: true, isAuthenticated: true, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret auth_token: 'auth-token', selectedModules: ['entries'], skipAudit: false, diff --git a/packages/contentstack-import/test/unit/import/modules/content-types.test.ts b/packages/contentstack-import/test/unit/import/modules/content-types.test.ts index 5f9989289..46d32d3bf 100644 --- a/packages/contentstack-import/test/unit/import/modules/content-types.test.ts +++ b/packages/contentstack-import/test/unit/import/modules/content-types.test.ts @@ -94,6 +94,7 @@ describe('ImportContentTypes', () => { forceStopMarketplaceAppsPrompt: false, skipPrivateAppRecreationIfExist: true, isAuthenticated: true, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret auth_token: 'auth-token', selectedModules: ['content-types'], skipAudit: false, diff --git a/packages/contentstack-import/test/unit/import/modules/global-fields.test.ts b/packages/contentstack-import/test/unit/import/modules/global-fields.test.ts index 64e8f92df..e64dd0afc 100644 --- a/packages/contentstack-import/test/unit/import/modules/global-fields.test.ts +++ b/packages/contentstack-import/test/unit/import/modules/global-fields.test.ts @@ -81,6 +81,7 @@ describe('ImportGlobalFields', () => { forceStopMarketplaceAppsPrompt: false, skipPrivateAppRecreationIfExist: true, isAuthenticated: true, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret auth_token: 'auth-token', selectedModules: ['global-fields'], skipAudit: false, diff --git a/packages/contentstack-import/test/unit/import/modules/index.test.ts b/packages/contentstack-import/test/unit/import/modules/index.test.ts index d6144d15f..7787f30fc 100644 --- a/packages/contentstack-import/test/unit/import/modules/index.test.ts +++ b/packages/contentstack-import/test/unit/import/modules/index.test.ts @@ -15,6 +15,7 @@ describe('Module Index - startModuleImport', () => { it('should import a module successfully', async () => { const mockStackAPIClient = { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'test-key', name: 'test-stack' } as any; @@ -44,6 +45,7 @@ describe('Module Index - startModuleImport', () => { it('should handle module import errors', async () => { const mockStackAPIClient = { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'test-key', name: 'test-stack' } as any; diff --git a/packages/contentstack-import/test/unit/import/modules/marketplace-apps.test.ts b/packages/contentstack-import/test/unit/import/modules/marketplace-apps.test.ts index 0440f5187..55cbbdf99 100644 --- a/packages/contentstack-import/test/unit/import/modules/marketplace-apps.test.ts +++ b/packages/contentstack-import/test/unit/import/modules/marketplace-apps.test.ts @@ -784,6 +784,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with configuration error', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -814,6 +815,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with server configuration error', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1003,6 +1005,7 @@ describe('ImportMarketplaceApps', () => { it('should handle installApps with existing app and configuration', async () => { importMarketplaceApps.appSdk = mockAppSdk; // Set up nodeCrypto for decryption + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); // Set installedApps directly on the instance (importMarketplaceApps as any).installedApps = mockData.mockInstalledApps; @@ -1037,6 +1040,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with successful configuration update', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1067,6 +1071,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with configuration update error', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1101,6 +1106,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with successful server configuration update', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1131,6 +1137,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with server configuration update error', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1166,6 +1173,7 @@ describe('ImportMarketplaceApps', () => { it('should handle installApps with existing app and UID mapping already set', async () => { importMarketplaceApps.appSdk = mockAppSdk; // Set up nodeCrypto for decryption + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); // Set installedApps directly on the instance (importMarketplaceApps as any).installedApps = mockData.mockInstalledApps; @@ -1183,6 +1191,7 @@ describe('ImportMarketplaceApps', () => { it('should handle installApps with updateParam and configuration', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); // Set installedApps directly on the instance (importMarketplaceApps as any).installedApps = mockData.mockInstalledApps; @@ -1208,6 +1217,7 @@ describe('ImportMarketplaceApps', () => { it('should handle installApps with updateParam but no configuration', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); // Set installedApps directly on the instance (importMarketplaceApps as any).installedApps = mockData.mockInstalledApps; @@ -1283,6 +1293,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with configuration success path', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1314,6 +1325,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with server configuration success path', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1345,6 +1357,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with configuration error path', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1380,6 +1393,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with server configuration error path', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1415,6 +1429,7 @@ describe('ImportMarketplaceApps', () => { it('should handle installApps with existing app and configuration - specific branch coverage', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); // Create an app that exists in installedApps with configuration @@ -1464,6 +1479,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with configuration success - specific success path', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1494,6 +1510,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with server configuration success - specific success path', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1524,6 +1541,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with configuration error - specific error path', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1558,6 +1576,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with server configuration error - specific error path', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1592,6 +1611,7 @@ describe('ImportMarketplaceApps', () => { it('should handle installApps with existing app that has configuration - exact branch coverage', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); // First, we need to populate installedApps by calling start() or setting it directly @@ -1627,6 +1647,7 @@ describe('ImportMarketplaceApps', () => { it('should handle installApps with installation failure - specific error branch coverage', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1972,6 +1993,7 @@ describe('ImportMarketplaceApps', () => { }); it('should use provided encryption key', async () => { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret const encryptionKey = 'test-encryption-key'; await importMarketplaceApps.getAndValidateEncryptionKey(encryptionKey); @@ -2004,6 +2026,7 @@ describe('ImportMarketplaceApps', () => { describe('updateAppsConfig()', () => { beforeEach(() => { importMarketplaceApps = new ImportMarketplaceApps(mockModuleClassParams); + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); }); @@ -2267,6 +2290,7 @@ describe('ImportMarketplaceApps', () => { beforeEach(() => { importMarketplaceApps = new ImportMarketplaceApps(mockModuleClassParams); importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); }); diff --git a/packages/contentstack-import/test/unit/utils/common-helper.test.ts b/packages/contentstack-import/test/unit/utils/common-helper.test.ts index 274a63c57..f9c6e9866 100644 --- a/packages/contentstack-import/test/unit/utils/common-helper.test.ts +++ b/packages/contentstack-import/test/unit/utils/common-helper.test.ts @@ -1287,8 +1287,10 @@ describe('Common Helper', () => { message: 'Base error', errors: { authorization: 'Invalid token', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'Invalid key', uid: 'Invalid UID', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret access_token: 'Invalid access token', }, }; diff --git a/packages/contentstack-import/test/unit/utils/marketplace-app-helper.test.ts b/packages/contentstack-import/test/unit/utils/marketplace-app-helper.test.ts index ded44bb6c..c491174dd 100644 --- a/packages/contentstack-import/test/unit/utils/marketplace-app-helper.test.ts +++ b/packages/contentstack-import/test/unit/utils/marketplace-app-helper.test.ts @@ -230,6 +230,7 @@ describe('Marketplace App Helper', () => { const result = await getOrgUid(mockConfig); expect(result).to.equal('test-org-123'); + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret expect(mockClient.stack.calledWith({ api_key: mockConfig.target_stack })).to.be.true; }); diff --git a/packages/contentstack-migrate-rte/test/commands/json-migration.test.js b/packages/contentstack-migrate-rte/test/commands/json-migration.test.js index 238d64e5b..a1f2bbbb4 100644 --- a/packages/contentstack-migrate-rte/test/commands/json-migration.test.js +++ b/packages/contentstack-migrate-rte/test/commands/json-migration.test.js @@ -143,6 +143,7 @@ describe("Migration Config validation", () => { getTokenCallback.withArgs("test1").returns({ token: "testManagementToken", + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: "testApiKey", type: "management", }); @@ -937,6 +938,7 @@ describe("Global Field Migration", () => { const getTokenCallback = sinon.stub(); getTokenCallback.withArgs("test1").returns({ token: "testManagementToken", + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: "testApiKey", type: "management", }); @@ -1141,6 +1143,7 @@ describe("Content Type with Single RTE inside modular block", () => { const getTokenCallback = sinon.stub(); getTokenCallback.withArgs("test1").returns({ token: "testManagementToken", + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: "testApiKey", type: "management", }); @@ -1180,6 +1183,7 @@ describe("Content Type with Single RTE of type multiple inside group", () => { const getTokenCallback = sinon.stub(); getTokenCallback.withArgs("test1").returns({ token: "testManagementToken", + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: "testApiKey", type: "management", }); diff --git a/packages/contentstack-query-export/test/unit/common-helper.test.ts b/packages/contentstack-query-export/test/unit/common-helper.test.ts index b1cb3b298..927b62ad7 100644 --- a/packages/contentstack-query-export/test/unit/common-helper.test.ts +++ b/packages/contentstack-query-export/test/unit/common-helper.test.ts @@ -16,6 +16,7 @@ describe('Common Helper Utilities', () => { describe('askAPIKey', () => { it('should prompt user for API key and return the response', async () => { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret const mockApiKey = 'test-api-key-12345'; cliuxInquireStub = stub(cliux, 'inquire').resolves(mockApiKey); From 9b06bce65db43356d85a675a224f3bb88d12e023 Mon Sep 17 00:00:00 2001 From: Raj Pandey Date: Thu, 9 Jul 2026 15:45:15 +0530 Subject: [PATCH 14/37] Updated JS-YAML to 4.3.0 --- pnpm-workspace.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 34c9c0ee6..424e2f1eb 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -5,5 +5,5 @@ overrides: uuid: 14.0.0 lodash: 4.18.1 brace-expansion: 5.0.7 - js-yaml: 4.2.0 + js-yaml: 4.3.0 fast-uri: 3.1.3 From 96af471cee3e8b0e556c968550ef36e27bddee65 Mon Sep 17 00:00:00 2001 From: harshitha-cstk Date: Thu, 9 Jul 2026 15:57:43 +0530 Subject: [PATCH 15/37] update pnpm lock --- pnpm-lock.yaml | 1336 ++++++++++++++++++++++++------------------------ 1 file changed, 668 insertions(+), 668 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 21659d5f8..bd81008a1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,7 +9,7 @@ overrides: uuid: 14.0.0 lodash: 4.18.1 brace-expansion: 5.0.7 - js-yaml: 4.2.0 + js-yaml: 4.3.0 fast-uri: 3.1.3 importers: @@ -82,10 +82,10 @@ importers: version: 0.2.6 '@typescript-eslint/eslint-plugin': specifier: ^8.58.2 - version: 8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@5.9.3))(eslint@10.6.0)(typescript@5.9.3) + version: 8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@5.9.3))(eslint@10.6.0)(typescript@5.9.3) '@typescript-eslint/parser': specifier: ^8.58.2 - version: 8.62.1(eslint@10.6.0)(typescript@5.9.3) + version: 8.63.0(eslint@10.6.0)(typescript@5.9.3) axios: specifier: ^1.16.1 version: 1.18.1(debug@4.4.3) @@ -270,10 +270,10 @@ importers: dependencies: '@contentstack/cli-command': specifier: ~1.8.4 - version: 1.8.4(@types/node@22.20.0) + version: 1.8.4(@types/node@22.20.1) '@contentstack/cli-utilities': specifier: ~1.18.5 - version: 1.18.5(@types/node@22.20.0) + version: 1.18.5(@types/node@22.20.1) '@oclif/core': specifier: ^4.11.4 version: 4.11.14 @@ -310,13 +310,13 @@ importers: version: 15.1.0 oclif: specifier: ^4.17.46 - version: 4.23.27(@types/node@22.20.0) + version: 4.23.27(@types/node@22.20.1) sinon: specifier: ^21.0.1 version: 21.1.2 ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@22.20.0)(typescript@4.9.5) + version: 10.9.2(@types/node@22.20.1)(typescript@4.9.5) typescript: specifier: ^4.9.5 version: 4.9.5 @@ -362,10 +362,10 @@ importers: version: 21.0.1 '@typescript-eslint/eslint-plugin': specifier: ^8.59.2 - version: 8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@6.0.3))(eslint@10.6.0)(typescript@6.0.3) + version: 8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@6.0.3))(eslint@10.6.0)(typescript@6.0.3) '@typescript-eslint/parser': specifier: ^8.59.2 - version: 8.62.1(eslint@10.6.0)(typescript@6.0.3) + version: 8.63.0(eslint@10.6.0)(typescript@6.0.3) chai: specifier: ^6.2.2 version: 6.2.2 @@ -428,13 +428,13 @@ importers: dependencies: '@contentstack/cli-command': specifier: ~1.8.4 - version: 1.8.4(@types/node@22.20.0) + version: 1.8.4(@types/node@22.20.1) '@contentstack/cli-config': specifier: ~1.20.5 - version: 1.20.5(@types/node@22.20.0) + version: 1.20.5(@types/node@22.20.1) '@contentstack/cli-utilities': specifier: ~1.18.5 - version: 1.18.5(@types/node@22.20.0) + version: 1.18.5(@types/node@22.20.1) '@oclif/core': specifier: ^4.11.4 version: 4.11.14 @@ -446,7 +446,7 @@ importers: version: 16.6.1 inquirer: specifier: 8.2.7 - version: 8.2.7(@types/node@22.20.0) + version: 8.2.7(@types/node@22.20.1) lodash: specifier: 4.18.1 version: 4.18.1 @@ -474,7 +474,7 @@ importers: version: 15.1.0 oclif: specifier: ^4.23.8 - version: 4.23.27(@types/node@22.20.0) + version: 4.23.27(@types/node@22.20.1) packages/contentstack-cli-cm-regex-validate: dependencies: @@ -535,7 +535,7 @@ importers: version: 1.1.6 '@typescript-eslint/eslint-plugin': specifier: ^8.59.2 - version: 8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@5.9.3))(eslint@10.6.0)(typescript@5.9.3) + version: 8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@5.9.3))(eslint@10.6.0)(typescript@5.9.3) chai: specifier: ^4.5.0 version: 4.5.0 @@ -583,10 +583,10 @@ importers: dependencies: '@contentstack/cli-command': specifier: ~1.8.4 - version: 1.8.4(@types/node@22.20.0) + version: 1.8.4(@types/node@22.20.1) '@contentstack/cli-utilities': specifier: ~1.18.5 - version: 1.18.5(@types/node@22.20.0) + version: 1.18.5(@types/node@22.20.1) '@contentstack/types-generator': specifier: ^3.10.2 version: 3.10.2(graphql@16.14.2) @@ -602,13 +602,13 @@ importers: version: 29.5.14 '@types/node': specifier: ^22.19.19 - version: 22.20.0 + version: 22.20.1 '@typescript-eslint/eslint-plugin': specifier: ^8.59.3 - version: 8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@5.9.3))(eslint@10.6.0)(typescript@5.9.3) + version: 8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@5.9.3))(eslint@10.6.0)(typescript@5.9.3) '@typescript-eslint/parser': specifier: ^8.59.3 - version: 8.62.1(eslint@10.6.0)(typescript@5.9.3) + version: 8.63.0(eslint@10.6.0)(typescript@5.9.3) dotenv: specifier: ^16.6.1 version: 16.6.1 @@ -623,13 +623,13 @@ importers: version: 3.1.14(eslint@10.6.0)(typescript@5.9.3) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@5.9.3)) + version: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) oclif: specifier: ^4.23.8 - version: 4.23.27(@types/node@22.20.0) + version: 4.23.27(@types/node@22.20.1) ts-jest: specifier: ^29.4.9 - version: 29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)))(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -693,7 +693,7 @@ importers: version: 10.0.20 '@typescript-eslint/eslint-plugin': specifier: ^5.62.0 - version: 5.62.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@4.9.5))(eslint@10.6.0)(typescript@4.9.5) + version: 5.62.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@4.9.5))(eslint@10.6.0)(typescript@4.9.5) chai: specifier: ^4.5.0 version: 4.5.0 @@ -726,10 +726,10 @@ importers: dependencies: '@contentstack/cli-command': specifier: ^1.8.4 - version: 1.8.4(@types/node@22.20.0) + version: 1.8.4(@types/node@22.20.1) '@contentstack/cli-utilities': specifier: ^1.18.4 - version: 1.18.5(@types/node@22.20.0) + version: 1.18.5(@types/node@22.20.1) '@types/diff2html': specifier: ^3.0.3 version: 3.0.3 @@ -784,7 +784,7 @@ importers: version: 29.5.14 '@types/node': specifier: ^22.19.19 - version: 22.20.0 + version: 22.20.1 eslint: specifier: ^10.5.0 version: 10.6.0 @@ -799,16 +799,16 @@ importers: version: 11.1.0 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@4.9.5)) + version: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)) oclif: specifier: ^4.23.8 - version: 4.23.27(@types/node@22.20.0) + version: 4.23.27(@types/node@22.20.1) ts-jest: specifier: ^29.4.10 - version: 29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@4.9.5)))(typescript@4.9.5) + version: 29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)))(typescript@4.9.5) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@22.20.0)(typescript@4.9.5) + version: 10.9.2(@types/node@22.20.1)(typescript@4.9.5) typescript: specifier: ^4.9.5 version: 4.9.5 @@ -817,10 +817,10 @@ importers: dependencies: '@contentstack/cli-command': specifier: ~1.8.4 - version: 1.8.4(@types/node@22.20.0) + version: 1.8.4(@types/node@22.20.1) '@contentstack/cli-utilities': specifier: ~1.18.5 - version: 1.18.5(@types/node@22.20.0) + version: 1.18.5(@types/node@22.20.1) '@contentstack/cli-variants': specifier: ~1.5.1 version: link:../contentstack-variants @@ -860,10 +860,10 @@ importers: devDependencies: '@contentstack/cli-auth': specifier: ~1.8.4 - version: 1.8.4(@types/node@22.20.0) + version: 1.8.4(@types/node@22.20.1) '@contentstack/cli-config': specifier: ~1.20.5 - version: 1.20.5(@types/node@22.20.0) + version: 1.20.5(@types/node@22.20.1) '@contentstack/cli-dev-dependencies': specifier: ^1.3.1 version: 1.3.1 @@ -911,7 +911,7 @@ importers: version: 15.1.0 oclif: specifier: ^4.23.8 - version: 4.23.27(@types/node@22.20.0) + version: 4.23.27(@types/node@22.20.1) sinon: specifier: ^17.0.1 version: 17.0.2 @@ -920,7 +920,7 @@ importers: version: 0.5.21 ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@22.20.0)(typescript@4.9.5) + version: 10.9.2(@types/node@22.20.1)(typescript@4.9.5) typescript: specifier: ^4.9.5 version: 4.9.5 @@ -1066,7 +1066,7 @@ importers: version: 5.9.3 vitest: specifier: ^4.1.9 - version: 4.1.10(@types/node@20.19.43)(jsdom@23.2.0)(vite@8.1.3(@types/node@20.19.43)(yaml@2.9.0)) + version: 4.1.10(@types/node@20.19.43)(jsdom@23.2.0)(vite@8.1.4(@types/node@20.19.43)(yaml@2.9.0)) packages/contentstack-import: dependencies: @@ -1142,7 +1142,7 @@ importers: version: 14.18.63 '@typescript-eslint/eslint-plugin': specifier: ^5.62.0 - version: 5.62.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@4.9.5))(eslint@10.6.0)(typescript@4.9.5) + version: 5.62.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@4.9.5))(eslint@10.6.0)(typescript@4.9.5) eslint: specifier: ^10.5.0 version: 10.6.0 @@ -1218,7 +1218,7 @@ importers: version: 14.18.63 '@typescript-eslint/eslint-plugin': specifier: ^5.62.0 - version: 5.62.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@4.9.5))(eslint@10.6.0)(typescript@4.9.5) + version: 5.62.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@4.9.5))(eslint@10.6.0)(typescript@4.9.5) chai: specifier: ^4.5.0 version: 4.5.0 @@ -1638,76 +1638,76 @@ packages: '@asamuzakjp/dom-selector@2.0.2': resolution: {integrity: sha512-x1KXOatwofR6ZAYzXRBL5wrdV0vwNxlTCK9NCuLqAzQYARqGcvFwiJA6A1ERuh+dgeA4Dxm3JBYictIes+SqUQ==} - '@aws-sdk/checksums@3.1000.12': - resolution: {integrity: sha512-RgNDWfhNRIlNEzePIRrYTNi/6q+wwRMMapojn8YVzw4ZcJRa/gxVMtUbeZARR1gmopuv6oIhMbY7J66qIQ0ynw==} + '@aws-sdk/checksums@3.1000.16': + resolution: {integrity: sha512-EKnvkXSmz3IpA99tCNuI+dLFXyZyClSm8zns9sB/elvkU+MTuomAs6toJMPMBf98/fICG/urXDkzGz0/c3yyAQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/client-cloudfront@3.1079.0': - resolution: {integrity: sha512-plOK/g0hvn+rFfzL+1NyhJNQ1RVCfW2Svfzknp0ctU16ji1S9BIK3HL4/8rlbqNgQeH3aiyfurtnYVNMhKHe4Q==} + '@aws-sdk/client-cloudfront@3.1083.0': + resolution: {integrity: sha512-AJZiUrBwD50jrJRXQog8YKS0bv66E1tFQxdL+o34m5Aj5t6fTRioq92zOp/y5xJYfVLpFSw1S6hKEhhK7RqMWQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/client-s3@3.1079.0': - resolution: {integrity: sha512-di9U/7Po7qlVYb2dq58ULsbBAE1pBIk53rux+50LQCvH1X+/l1Ys+BIk/QLBtdaK1nADk0xRNEBbA1QWVnMccw==} + '@aws-sdk/client-s3@3.1083.0': + resolution: {integrity: sha512-3YOicHy6qjexsy4rHk5jPvtLgg6Ho1u+ycOWtJcVTAIMlMq32MRtnhllAyFSezhAXeBnnLLtKtAGXim7vV8oog==} engines: {node: '>=20.0.0'} - '@aws-sdk/core@3.974.27': - resolution: {integrity: sha512-WRWEgIq6vx+NU6ot3VrRu4Jovj9MIObitSi6of/GV5THDDPccBhivCRNkWJutMM+m3GvdeI3l/UbGNcoOobxOA==} + '@aws-sdk/core@3.975.1': + resolution: {integrity: sha512-8qh/6EYb7hl/ZwVfQufhbMEZs1gQIc7GbdrIf4eprQJ7cv042+74nE6l3YDfyWNzb9iPXb8fRyYSHkNIk5eE6Q==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-env@3.972.53': - resolution: {integrity: sha512-+KDA3uc/HZ1vIneGu5QMQb0gAXDYrm2vOE60+BJ7lS0YinMQ5i2oV4PR1A16XkF6K1IbSwjEHd1hQIIgMsK48w==} + '@aws-sdk/credential-provider-env@3.972.57': + resolution: {integrity: sha512-1RfJaF7SW1TOnvNGU7kaYjwUf5H3sfm+synGH1bHhRlqcnxCt3szebH3dmKEyY4tuGcbQ6ffzUT89cRitBV8OQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-http@3.972.55': - resolution: {integrity: sha512-1gBfkWY3RWeBlCoB9lIJjXMx45/54wxcgfzv6BY9otTmMrZPcNPi1v+MwZxxaCUg441NV3jsr1efnFNCXiW70g==} + '@aws-sdk/credential-provider-http@3.972.59': + resolution: {integrity: sha512-sRCkpTiFnCdQvuaRVjQ6SVoHu6i7RUpurVo1c4F81HWhPvUJ7Wdp5MNtSdX1O29CNXc8em3O5m52hCjVtAD9SA==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-ini@3.972.60': - resolution: {integrity: sha512-CV2md+PXvABwRjApWGhQ0wACy9WSFIhnUGrovLcjnjBCd/46TbuivLADtkF8IWNjtCQmQ+2IagSaxqBYqXBNAQ==} + '@aws-sdk/credential-provider-ini@3.973.1': + resolution: {integrity: sha512-6d8H6ZAh3ZPKZ6fe1nG2OWeZEZPtt9ravoD1dezPdPtsSkJRoxGAnFSHwKT3E/Te6fHE30zRzjV6TD12rvF6yQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-login@3.972.59': - resolution: {integrity: sha512-JG4S9yyA1GFzJdJXqLKrUzZbyK+VDp2QIsJD7YOicJHAhqymfHpDJIok2dLnhOdVB0I37RjdC53uOwCMVS00gw==} + '@aws-sdk/credential-provider-login@3.972.63': + resolution: {integrity: sha512-GREWRrMj0XnNKMaVa/Mauoaui26qBEHu71WWqXbwZOu/jFQOnPZjTf7u0KtGKC8VGa6VUs9kDWGgocrKNLS9vw==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-node@3.972.62': - resolution: {integrity: sha512-S6Slq3Tx7bvFk5yc34XNADyZYTX2HUXvaFAnowGRQnhjBO8J/mP62Fn7lxvJwjaDyYm/7gh9h6HEHaltRyMFXw==} + '@aws-sdk/credential-provider-node@3.972.66': + resolution: {integrity: sha512-f+qjRXZpz7sgzbc4QB+6nLKfyKFgRRXzWdXbsKPv/VhVRyHsDyq4yBWC/B75BAJpFIcUeI2XR/3gdWJ677zB4A==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-process@3.972.53': - resolution: {integrity: sha512-EhfH+MQlqOMCkXIVa8MMObPzAQqwTTtxA7KhEJiyPeuNVA8PLOOUpgK7nBrgaDaGiIDLN/9LpGdaHuDjomeRTw==} + '@aws-sdk/credential-provider-process@3.972.57': + resolution: {integrity: sha512-TiVQhuU0pbhIZAUZacbPHMyzrIdiH+lnx+PMY/Pu/b93dJrq3wdZwzUJ0TPpvNxaqbHsxJvQZW3/h/beLiKq7Q==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-sso@3.972.59': - resolution: {integrity: sha512-h8793pOjcImx0SB+VcLONcaQQ57VAvKVuqyewQMRKqqH+CSXsG2dwOeLMUJPMxLdNvL7dXOM0ueTukyNUnu5mA==} + '@aws-sdk/credential-provider-sso@3.973.1': + resolution: {integrity: sha512-3foTZUJ4821Ij60X7K3NJroygiZLnbBmarN+T//O2cjkISan90zElN3NBmgSlDrTQ7Gs6z/yO8V7h60QNcDZHQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-web-identity@3.972.59': - resolution: {integrity: sha512-VoyO9+vl3XVmpZwn4obskrWIkrA/Jf3lSe1E3ZERlaN9u0D4YZ6+HywC3+L98QOXqZesEfedk67gRER8tK8+8w==} + '@aws-sdk/credential-provider-web-identity@3.972.63': + resolution: {integrity: sha512-8qZLFhM69eKcS37m459ctPR05Qimycm/74OPVioe6wNZabMT54GYhwBju0+J656RkMasNSawWQu+c8CmBe3TUQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-sdk-s3@3.972.58': - resolution: {integrity: sha512-6uaWRRYJGhOqc9EoTSbLDf9nI/doSAb5vAwGshs5/Hlv5Ce25b246lBkbRd/77fLAi+uMI1a70mJzVyLyCEufQ==} + '@aws-sdk/middleware-sdk-s3@3.972.62': + resolution: {integrity: sha512-k8JJwYXVYlOOjWnPZDThQS1xDFJgi5Dokt73qFlDtrZAbdcint5aIdjB9XgJAAQVP5OoqcefQmh1FYXiPpvsvw==} engines: {node: '>=20.0.0'} - '@aws-sdk/nested-clients@3.997.27': - resolution: {integrity: sha512-A8PIePF9NIIOJ/4Lg1rl9xm/+QaKkHGetq+Z9wb5B+3Da31YYXRo8n7IDMh5C+HQI5eyEmjrwkGWVdYtnLtbXQ==} + '@aws-sdk/nested-clients@3.997.31': + resolution: {integrity: sha512-BDHTpwcsZHEBNEJzOg/B1BkFYJxAXY50dau/NyVWs3d51F0WgIUGSWZot/Os+N3KpDhXeaXnz37mWffAvduREw==} engines: {node: '>=20.0.0'} - '@aws-sdk/signature-v4-multi-region@3.996.38': - resolution: {integrity: sha512-C379Sk+MiFZCfWZphKlMyLHKxV22OjoGM5KJjj5IJNJcOCWL4IGIpnEGzv1FQiRwhYXfq55SJMfxlqPE08JJ9g==} + '@aws-sdk/signature-v4-multi-region@3.996.39': + resolution: {integrity: sha512-8+srXqYIF8KYMLC4FxMLEM5Ek7kUNibJu1R4m8/fUhhNYIZZz26oGtKkCr8I/HiG2fFQxBvaGgQZT4/mqRCSnA==} engines: {node: '>=20.0.0'} - '@aws-sdk/token-providers@3.1079.0': - resolution: {integrity: sha512-cbietrLlHPhhmbnMPTuDS4Zj/KNGhY+3vVhn6dwjO6Dqzrwothzg2srtcY34T9mlICsTXn34avDoWLHSntP54A==} + '@aws-sdk/token-providers@3.1083.0': + resolution: {integrity: sha512-s0woKnxuHrExLc5L2ArIH5BMkbonHPtt+5hSBM8oknp9M6QTuUmmAmJ2E0EdzCGONrO+8+ADPqvv6UX0nNcc7A==} engines: {node: '>=20.0.0'} - '@aws-sdk/types@3.973.15': - resolution: {integrity: sha512-IULn8uBV/SMtmOIANsm4WHXIOtVPBWfOWs3WGL0j/sI+KhaYehvOw0ET+9urnn8MBpiijuU/0JOpuwKOE451PQ==} + '@aws-sdk/types@3.974.0': + resolution: {integrity: sha512-QIBrw90CDm4O0UaIIzkU6DrFdeJzEb2Va5EPEVpyldj6sHJxB6cshhStJuhZxk3wR3PmjJlYsjPmY1kNb+KGBg==} engines: {node: '>=20.0.0'} - '@aws-sdk/xml-builder@3.972.33': - resolution: {integrity: sha512-ezbwz9WpuLctm6o7P2t2naDhVVPI5jFGrVefVybhcKGjU57VIyT46pQVO0RI2RYkUdhdj2Z9uSIlAzGZE9NW9A==} + '@aws-sdk/xml-builder@3.972.34': + resolution: {integrity: sha512-wHhWL1y7sN3enBA8POrPpQM5jCcmu2ozyhbRei4c8OjVcEaEs6yLucLa/pla457ggS/ysuy7bosagz3HaJkZXA==} engines: {node: '>=20.0.0'} '@aws/lambda-invoke-store@0.3.0': @@ -2995,8 +2995,8 @@ packages: '@otplib/preset-v11@12.0.1': resolution: {integrity: sha512-9hSetMI7ECqbFiKICrNa4w70deTUfArtwXykPUvSHWOdzOlfa9ajglu7mNCntlvxycTiOAXkQGwjQCzzDEMRMg==} - '@oxc-project/types@0.138.0': - resolution: {integrity: sha512-1a7ZKmrRTCoN1XMZ4L0PyyqrMnrNlLyPuOkdSX2MZg7IiIGRUyurNhAm73ptDOraoBcIordsIGKNPKUzy3ZmfA==} + '@oxc-project/types@0.139.0': + resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==} '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -3022,91 +3022,91 @@ packages: resolution: {integrity: sha512-pmNVGuooS30Mm7YbZd5T7E5zYVO6D5Ct91sn4T39mUvMUc3sCGridcnhAufL1/Bz2QzAtzEn0agNrdk3+5yWzw==} hasBin: true - '@rolldown/binding-android-arm64@1.1.4': - resolution: {integrity: sha512-EZLpf/8y7GXkkra90ML47kzik/GMP3EMcE9bPyHmRfxLC6z9+aW5A8poCsoxjrT5GfEcNAAvWwUHjvP1pUQkfw==} + '@rolldown/binding-android-arm64@1.1.5': + resolution: {integrity: sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.1.4': - resolution: {integrity: sha512-aUi+HBvmYb7j8krl1+qJgkG8C17fO79gk3c+jPw4S8glRFc1DTija9S3EyaTSQUm5GJXYKDAsugBEhFHH2vYiQ==} + '@rolldown/binding-darwin-arm64@1.1.5': + resolution: {integrity: sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.1.4': - resolution: {integrity: sha512-F7hHC3gwY11+vByKPRWqwGbeXWVgKmL+pTGCinaEhdihzBV2aQ0fvZOch9cXYUOKuKKq429HeYXOqQLc7wFCEg==} + '@rolldown/binding-darwin-x64@1.1.5': + resolution: {integrity: sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.1.4': - resolution: {integrity: sha512-sI5yw+7s92SK6odiEhD5lKCBlWcpjHS5qyqpVQbZAJ0fIzEUXrmbl3DH2ybR3PZogulNJF+COLtmA8hUfvkCCQ==} + '@rolldown/binding-freebsd-x64@1.1.5': + resolution: {integrity: sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.1.4': - resolution: {integrity: sha512-mCi0OKgEieFircrtVYmQAFGszRtMnZ6fpZAXrxanXAu7lqZcsK1E1RAaZNG0uKAnxox3B1f4EyQNnoyMfN1vAA==} + '@rolldown/binding-linux-arm-gnueabihf@1.1.5': + resolution: {integrity: sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.1.4': - resolution: {integrity: sha512-B9Ial3Kv5sh0SHnB1g/QWcUQCEvCF6QKGAl4zXypYj65mVI+B4AhFBwPtSN7pDrJeIx8Z7zdy4ntx+wQABom7w==} + '@rolldown/binding-linux-arm64-gnu@1.1.5': + resolution: {integrity: sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@1.1.4': - resolution: {integrity: sha512-lZVym0PuHE1KZ22gmFTC15lAkrg9iTszR617oYRB/iPY1A56ywoJzVKOJBKaot5RiikCObmur6pogpse3gRcng==} + '@rolldown/binding-linux-arm64-musl@1.1.5': + resolution: {integrity: sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-ppc64-gnu@1.1.4': - resolution: {integrity: sha512-t2DNiLJWNTbnEHyUzTumldML6ET4/g16467LZoDDJ3tSxGvguL5/NyC2lCsNKuyRycg9XeDQF5SSv+TNOhQEXg==} + '@rolldown/binding-linux-ppc64-gnu@1.1.5': + resolution: {integrity: sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] - '@rolldown/binding-linux-s390x-gnu@1.1.4': - resolution: {integrity: sha512-0WIRnL1Uw4BvTZRLQt+PVgo6ZKTJadlC2btP+/EOXv2f/DWbY0rEgl+y834mIVwP1FkTlWVTrGGJXf12lru7EQ==} + '@rolldown/binding-linux-s390x-gnu@1.1.5': + resolution: {integrity: sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] - '@rolldown/binding-linux-x64-gnu@1.1.4': - resolution: {integrity: sha512-JWtGshGfX+oENAKonoNkqEJX+7hC8yfhi9GUyPX1VX4mdh1y5r+ZiJLR5XzAB0aoP6s/PcILsGjKq8O0mm24bw==} + '@rolldown/binding-linux-x64-gnu@1.1.5': + resolution: {integrity: sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-musl@1.1.4': - resolution: {integrity: sha512-rT6yQcxUuXs4CnbofqwHRRV0iem349rLMYpTjkgQGLjrY4ado/eDzwPZPTCgTOlF6Nkp8NEv70yLMTn6qkWxsQ==} + '@rolldown/binding-linux-x64-musl@1.1.5': + resolution: {integrity: sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rolldown/binding-openharmony-arm64@1.1.4': - resolution: {integrity: sha512-KXMGoboq5cyaCQjDA4GLuRiOwBQ0EyFnJoVViLeZ45/3rFItRODEr+NdsBcVpll40hhNArlm/speWGRvj08LzA==} + '@rolldown/binding-openharmony-arm64@1.1.5': + resolution: {integrity: sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.1.4': - resolution: {integrity: sha512-5K83rb36oJiY7BCyE9zLZtGcPV4g5wvq+xwdO0XPIwDVZI8cyB/AUjkNXGb92/rnmezEkjMOpgY61rtwjQtFwg==} + '@rolldown/binding-wasm32-wasi@1.1.5': + resolution: {integrity: sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.1.4': - resolution: {integrity: sha512-PnWBtw3TV5KOg69HQQDR0mnQuyCmSGR2pAB4DC1rPF808fgKeTUMj2EOEyKATpgiuxuR5APQmiDO7PDgEjTFSA==} + '@rolldown/binding-win32-arm64-msvc@1.1.5': + resolution: {integrity: sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.1.4': - resolution: {integrity: sha512-M1lpniBePobTfsa7Ks9a199e1akxsXn+GYBUKsEzv3YFzOm1HJAMNwKI3qr0Zq+mxwx9gOZoTdP1yXRYsZUocQ==} + '@rolldown/binding-win32-x64-msvc@1.1.5': + resolution: {integrity: sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -3314,8 +3314,8 @@ packages: '@sinclair/typebox@0.27.10': resolution: {integrity: sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==} - '@sinclair/typebox@0.34.49': - resolution: {integrity: sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==} + '@sinclair/typebox@0.34.50': + resolution: {integrity: sha512-ydBWw0G6WFwWHzh9RK4B5c690UkreOG0llq0r+DaI7LgKgxigf8mhHzIPI3S0850g1BPkq/zpuCfrq4QFgUlTQ==} '@sindresorhus/is@5.6.0': resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} @@ -3348,28 +3348,28 @@ packages: Deprecated: no longer maintained and no longer used by Sinon packages. See https://github.com/sinonjs/nise/issues/243 for replacement details. - '@smithy/core@3.29.1': - resolution: {integrity: sha512-qoiY4nrk5OCu1+eIR1VB8l5DmON/oKiqrd5zZFAhXJXjJlLWQusKEW/SkBDAtGDcPaz86m9kfcE1lngU0GlM6A==} + '@smithy/core@3.29.2': + resolution: {integrity: sha512-DXUk6yU0C1Q1tYvJh1VCtl8QOBcSoZpKwjTPkxT6A4MUQYHvgeKGByL8mrEdxnvhdf9nq5GyzmRb5n/vPgu3Lw==} engines: {node: '>=18.0.0'} - '@smithy/credential-provider-imds@4.4.6': - resolution: {integrity: sha512-B2WQ/PV/H6Jeg3lrIq6bKUfa6Hy01mtK7CGs6lhjzHA6k4aagldH6T6eEjnzKl4HI0cJnAsxfJ19pgb5PV+CVQ==} + '@smithy/credential-provider-imds@4.4.7': + resolution: {integrity: sha512-UEMLOoA0Fl4uYBxh6l0uN0H6EJe/A89OGeDNTteQeXpJ20BcpfIr4wlCY9pel1jEAUHAxaYwuqrYlrKdXE1GKQ==} engines: {node: '>=18.0.0'} - '@smithy/fetch-http-handler@5.6.3': - resolution: {integrity: sha512-CwCc/7SMTj45y97MUnDTbTaxvtAsiNNRm81z3abROIuMbMsC2Iy5EKfkkVdsKrz8WExQAAMx1EJapq+9j4fFTQ==} + '@smithy/fetch-http-handler@5.6.4': + resolution: {integrity: sha512-psnst7NZWdAEvJvyW8YZEE7xNVMyLrQFfHtyrVFrxNyy+dKWkQ+rqC6oI5ZhxThpUy9RSfEshgm34zqbOxzsRw==} engines: {node: '>=18.0.0'} - '@smithy/node-http-handler@4.9.3': - resolution: {integrity: sha512-qZTa4gQFUo8RM02rk6q5UVTDLNrQ1oS20LsepBzqq1QBVc/EHJ03OOUADcqMZiXHArW+Y7+OGY0BpdTwZRq/Yg==} + '@smithy/node-http-handler@4.9.4': + resolution: {integrity: sha512-BNTop/fSOptmoVk8g+efwHCofFh37g70OWGAFES1TeAAJja1K5aAI8rTE26ETSc5k8IQuWY2kAIoPla01NgYrA==} engines: {node: '>=18.0.0'} - '@smithy/signature-v4@5.6.2': - resolution: {integrity: sha512-QgHflghMoPxCJ9axiCVh8KZfbC9fuP6vkXXyK//E3cq7nLaSSyyLj0GAoqVWezYeDQmXIZhmlRvLE16jsqDK6g==} + '@smithy/signature-v4@5.6.3': + resolution: {integrity: sha512-8qVKKzqh7naF27ePmx0SkUfnGP/wBI9dyaeAmhHvopnbIlItUAmB/e6PkPCU3rRb2v9BY8D4EZXSoydSibatvw==} engines: {node: '>=18.0.0'} - '@smithy/types@4.15.1': - resolution: {integrity: sha512-x3L0XSACF6UYzKpa9biqiRMgvH5+wnFFew9Tm/grFYqgaupPwx/+ojDPpPJM8dZON3S9tjz5U+PQYsCBd1Mw5Q==} + '@smithy/types@4.16.0': + resolution: {integrity: sha512-aVUabzlBBmY0PfvVgLKQSOGFIL5/7R54JE3uD9a5Ay/jSED61SkuAcCYENNXJzYUvJ1NPrWO0P+rAXHCkbBUKw==} engines: {node: '>=18.0.0'} '@so-ric/colorspace@1.1.6': @@ -3458,8 +3458,8 @@ packages: '@types/estree@1.0.9': resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} - '@types/express-serve-static-core@4.19.8': - resolution: {integrity: sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==} + '@types/express-serve-static-core@4.19.9': + resolution: {integrity: sha512-QP2ESEe/ImWY0HDwNAnK9PvEffUyhLTnWkk7KXzHfyeWAnlrDe1fN77bXl6ia8KT3wPlmA7t9/VPRpnf4Ex9sg==} '@types/express@4.17.25': resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} @@ -3554,8 +3554,8 @@ packages: '@types/node@20.19.43': resolution: {integrity: sha512-6oYBAi5ikg4Pl+kGsoYtawUMBT2zZMCvPNF7pVLnHZfd1zf38DRiWn/gT01RYCdUqkv7Fhr+C9ot4/tb+2sVvA==} - '@types/node@22.20.0': - resolution: {integrity: sha512-QWlFW2wf3nTjC13/DqRnBpR4ZO36VJH/JVBkA/vcnmbTBNQIlnObqyqZE1tUR7+Ni23Lda8R1BxMfbXRpCUx5g==} + '@types/node@22.20.1': + resolution: {integrity: sha512-EANqOCF9QFyra+4pfxUcX9STKJpCLjMbObVzljIJomAWSnuSIEAvyzEU53GaajbXJEgdh0iEcPL+DGvpUd4k1Q==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -3661,11 +3661,11 @@ packages: typescript: optional: true - '@typescript-eslint/eslint-plugin@8.62.1': - resolution: {integrity: sha512-4EQM77WgVNxj7OkL/5b/D/xZsw00G577+UriYTC7JF5opcF3T2AuoeY7ueLaZgSVjSgCS6yOAJB5bRGLPSJUzA==} + '@typescript-eslint/eslint-plugin@8.63.0': + resolution: {integrity: sha512-rvwSgqT+DHpWdzfSzPatRLm02a0GlESt++9iy3hLCDY4BgkaLcl8LBi9Yh7XGFBpwcBE/K3024QuXWTpbz4FfQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.62.1 + '@typescript-eslint/parser': ^8.63.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' @@ -3679,15 +3679,15 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.62.1': - resolution: {integrity: sha512-sPhE4iHuJDSvoAiec+Ro8JyXw8f0ql13HFR82P99nCm9GwTEKG0KYLvDe6REk8BCXuit6vJAv/Yxg5ABaNS2rA==} + '@typescript-eslint/parser@8.63.0': + resolution: {integrity: sha512-gwh4gvvlaVDKKxyfxMG+Gnu1u9X0OQBwyGLkbwB65dIzBKnxeRiJlNFqlI3zwVhNXJIs6qV7mlFCn/BIajlVig==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.62.1': - resolution: {integrity: sha512-yQ3RgY5RkSBpsNS1Bx/JQEcA24FOSdfGktoyprAr5u18390UQdtVcfnEv4nIrIshNnavlVyZBKxQwT1fIAE6cg==} + '@typescript-eslint/project-service@8.63.0': + resolution: {integrity: sha512-e5dh0/UI0ok53AlZ5wRkXCB32z/f2jUZqPR/ygAw5WYaSw8j9EoJWlS7wQjr/dmOaqWjnPIn2m+HhVPCMWGZVQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' @@ -3704,12 +3704,12 @@ packages: resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/scope-manager@8.62.1': - resolution: {integrity: sha512-r4d249KbQ1SFdpeStvob8Ih6aPPIzfqllPVOtvhve6ZcpuVcYo5/7zUWckKpHE7StASX4kTKZTLf0WQm/wPkcg==} + '@typescript-eslint/scope-manager@8.63.0': + resolution: {integrity: sha512-uUyfMWCnDSN8bCpcrY8nGP2BLkQ9Xn0GsipcONcpIDWhwhO4ZSyHvyS14U3X75mzxWxL3I2UZIrenTzdzcJO8A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.62.1': - resolution: {integrity: sha512-xadytJqX9vJVQ2fdQjkcIVigwaOJNWkpjdLt6cEQ+xPnrI1fkp+/jZE/I97k9KUjqtpd25i0HeyZf3T6dutv2g==} + '@typescript-eslint/tsconfig-utils@8.63.0': + resolution: {integrity: sha512-sUAbkulqBAsncKnbRP3+7CtQFRKicexnj7ZwNC6ddCR7EmrXvjvdCYMJbUIqMd6lwoEriZjwLo08aS5tSjVMHg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' @@ -3734,8 +3734,8 @@ packages: typescript: optional: true - '@typescript-eslint/type-utils@8.62.1': - resolution: {integrity: sha512-aXM5xlqXiTxPibXB93cLAURfT3rlizf7uMXISCXy66Isr/9hISJx3yDsKl0L7lKa51b8JpFuNKby0/O0pEm9jg==} + '@typescript-eslint/type-utils@8.63.0': + resolution: {integrity: sha512-Nzzh/OGxVCOjObjaj1CQF2RUasyYy2Jfuh+zZ3PjLzG2fYRriAiZLib9UKtO+CpQAS3YHiAS+ckZDclwqI1TPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -3753,8 +3753,8 @@ packages: resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/types@8.62.1': - resolution: {integrity: sha512-ooCzJFaf+Hg+uG6fA3NRFGuFjlfNlDhBthbv4ZPU/0elCAFUfnyXUvf/WOpHz/jYwSmvU2GkR2LtyUfy1AxZ1Q==} + '@typescript-eslint/types@8.63.0': + resolution: {integrity: sha512-xyLtl9DUBBFrcJS4x2pIqGLH68/tC2uOa4Z7pUteW09D3bXnnXUom4dyPikzWgB7llmIc1zoeI3aoUdC4rPK/Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@5.62.0': @@ -3784,8 +3784,8 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@8.62.1': - resolution: {integrity: sha512-xMcW9oP9u7fAMXYs9A65CVmtLQe2r//oXINHfi8HV+oiqhih17sbLdhXr4540YWlgpDKQdY854OL5ZrdCiQsAA==} + '@typescript-eslint/typescript-estree@8.63.0': + resolution: {integrity: sha512-ygBkU+B7ex5UI/gKhaqexWev79uISfIv7XQCRNYO/jmD8rGLPyWLAb3KMRT6nd8Gt9bmUBi9+iX6tBdYfOY81Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' @@ -3808,8 +3808,8 @@ packages: peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/utils@8.62.1': - resolution: {integrity: sha512-sHtbPfuKNZCG+ih8SyjjucqRntSVmp8XgL5u6o9mAhiSn8ds5o/M/XdM0abweme2Tln3szOstOrZ9OXitvPh0g==} + '@typescript-eslint/utils@8.63.0': + resolution: {integrity: sha512-fUKaeAvrTuQg/Tgt3nliAUSZHJM6DlCcfyEmxCvlX8kieWSStBX+5O5Fnidtc3i2JrH+9c/GL4RY2iasd/GPTA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -3827,8 +3827,8 @@ packages: resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/visitor-keys@8.62.1': - resolution: {integrity: sha512-4g3BLxfdTMy8iZG0MaBkadnlRrCJ74cQiFbyEVMrkwIoqdyaXXQM22cotDvrl4x28wgIZ9rEJRoM+mmhSJpJ1g==} + '@typescript-eslint/visitor-keys@8.63.0': + resolution: {integrity: sha512-UexrHGnGTpbuQHct2ExOc2ZcFbGUS9FOesCxxqdBGcpI1BxYu/LZ6U8Aq6/72XtF/qRBk9nhuGHFJIXXMhPMdw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.2': @@ -4359,8 +4359,8 @@ packages: bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - body-parser@1.20.5: - resolution: {integrity: sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==} + body-parser@1.20.6: + resolution: {integrity: sha512-p5tAzS57i5MV9fZFDj9LeIiTZEufbSe2eDozP+ElheSUq1m74CRq1jI4mYNDdVs9vQztXFLuk/Gd6BWTdwRJ5g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} bowser@2.14.1: @@ -4380,8 +4380,8 @@ packages: browser-stdout@1.3.1: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - browserslist@4.28.4: - resolution: {integrity: sha512-MTc8i/x9jBQd1iMw2CFGS+rwMa07eYjLR0CCTLDACl9xhxy+nIs3KeML/biicXtk9JrZ6dnnTatmc7ErPXIxqw==} + browserslist@4.28.5: + resolution: {integrity: sha512-Cu2E6QejHWzuDMTkuwgpABFgDfZrXLQq5V13YOACZx4mFAG4IwGTbTfHPMr4WtxlHoXSM8FIuRwYYCz5XiabaQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -4455,8 +4455,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001802: - resolution: {integrity: sha512-vmv8ub2xwTNmljSKf82mtCk5JH7hC+YgzLj3P5zotvA0tPQ9016tdNNOG8WRca1IxOnhSsivB+J0z5FeE5LOUw==} + caniuse-lite@1.0.30001803: + resolution: {integrity: sha512-g/uHREV2ZpK9qMalCsWaxmA6ol+DX8GYhuf3T40RKoP+oL7vhRJh8LNt73PCjpnR6l14FzfPrB5Yux4PKm2meg==} capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} @@ -5093,8 +5093,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.387: - resolution: {integrity: sha512-TaxwufTFDufvPEoXdhwVrA3UdFWBeWGkYoJ1K8ldF1xe6gKfth6iRNS5lTQ5JPNOHdGQm8PT1QYKUqFLCiUefQ==} + electron-to-chromium@1.5.389: + resolution: {integrity: sha512-cEto7aeOqBfU1D+c5py5pE+ooscKE75JifxLBdFUZsqAxRS6y7kebtxAZvICszSl05gPjYHDTjY+lXpyGvpJbg==} elegant-spinner@1.0.1: resolution: {integrity: sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==} @@ -5123,8 +5123,8 @@ packages: end-of-stream@1.4.5: resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} - enhanced-resolve@5.24.1: - resolution: {integrity: sha512-7DdUaTjmNwMcH2gLr1qycesKII3BK4RLy/mdAb7x10Lq7bR4aNKHt1BR1ZALSv0rPM/hF5wYF0PhGop/rJm8vw==} + enhanced-resolve@5.24.2: + resolution: {integrity: sha512-rpsZEGT1jFuve6QlpyRp9ckQ+kN61hvF9BzCPyMdaKTm8UJce96KBn3sorXOFXlzjPrs3Vc4T1NsSroZ3PxlFw==} engines: {node: '>=10.13.0'} entities@4.5.0: @@ -6697,8 +6697,8 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@4.2.0: - resolution: {integrity: sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==} + js-yaml@4.3.0: + resolution: {integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==} hasBin: true js2xmlparser@4.0.2: @@ -7060,8 +7060,8 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.5.1: - resolution: {integrity: sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==} + lru-cache@11.5.2: + resolution: {integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==} engines: {node: 20 || >=22} lru-cache@5.1.1: @@ -7341,8 +7341,8 @@ packages: resolution: {integrity: sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==} engines: {node: '>=8'} - node-releases@2.0.50: - resolution: {integrity: sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg==} + node-releases@2.0.51: + resolution: {integrity: sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==} engines: {node: '>=18'} nopt@1.0.10: @@ -8038,8 +8038,8 @@ packages: engines: {node: 20 || >=22} hasBin: true - rolldown@1.1.4: - resolution: {integrity: sha512-IjZYiLxZwpnhwhdBH2ugdTGVSdhCQUmLxLoqyjiL0JxYjyRst+5a0P3xfrTxJ5F638j4Mvvw5FAX5XE6eHpXbA==} + rolldown@1.1.5: + resolution: {integrity: sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -8343,8 +8343,8 @@ packages: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} - std-env@4.1.0: - resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} + std-env@4.2.0: + resolution: {integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==} stdout-stderr@0.1.13: resolution: {integrity: sha512-Xnt9/HHHYfjZ7NeQLvuQDyL1LnbsbddgMFKCuaQKwGCdJm8LnstZIXop+uOY36UR1UXXoHXfMbC1KlVdVd2JLA==} @@ -8397,8 +8397,8 @@ packages: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} - string-width@8.2.1: - resolution: {integrity: sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==} + string-width@8.2.2: + resolution: {integrity: sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==} engines: {node: '>=20'} string.prototype.trim@1.2.11: @@ -8768,8 +8768,8 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript-eslint@8.62.1: - resolution: {integrity: sha512-vymnnM5g0AKQDSAyfP12nMIBvgwgA42syg74kkuZ4x1VuTzwQKwc5h9rGxeShCjny5o+zWAb6OEoz7XLgrIkIw==} + typescript-eslint@8.63.0: + resolution: {integrity: sha512-xgwXyzG4sK9ALkBxbyGkTMMOS+imnW65iPhxCQMK83KhxyoDNW7l+IDqEf9vMdoUidHpOoS967RCq4eMiTexwQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -8918,8 +8918,8 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vite@8.1.3: - resolution: {integrity: sha512-Ds+gBRbj0lwRO2Y5hwnUBdxSwlAve9LeRyU4sNnAr0ewW0gWF0n5bgXgUzbgZ49MV9BVUAQUFYVcDUcilUExMA==} + vite@8.1.4: + resolution: {integrity: sha512-bTT9PsdWO+MQMNG9ZXIP/qM9wGh37DFxTV/sPq9cFpHr3w4jkgef032PkAL9jAqhk3Nz8NQw3O8n6/xFkqO4QQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -9286,178 +9286,178 @@ snapshots: css-tree: 2.3.1 is-potential-custom-element-name: 1.0.1 - '@aws-sdk/checksums@3.1000.12': + '@aws-sdk/checksums@3.1000.16': dependencies: - '@aws-sdk/core': 3.974.27 - '@aws-sdk/types': 3.973.15 - '@smithy/core': 3.29.1 - '@smithy/types': 4.15.1 + '@aws-sdk/core': 3.975.1 + '@aws-sdk/types': 3.974.0 + '@smithy/core': 3.29.2 + '@smithy/types': 4.16.0 tslib: 2.8.1 - '@aws-sdk/client-cloudfront@3.1079.0': + '@aws-sdk/client-cloudfront@3.1083.0': dependencies: - '@aws-sdk/core': 3.974.27 - '@aws-sdk/credential-provider-node': 3.972.62 - '@aws-sdk/types': 3.973.15 - '@smithy/core': 3.29.1 - '@smithy/fetch-http-handler': 5.6.3 - '@smithy/node-http-handler': 4.9.3 - '@smithy/types': 4.15.1 + '@aws-sdk/core': 3.975.1 + '@aws-sdk/credential-provider-node': 3.972.66 + '@aws-sdk/types': 3.974.0 + '@smithy/core': 3.29.2 + '@smithy/fetch-http-handler': 5.6.4 + '@smithy/node-http-handler': 4.9.4 + '@smithy/types': 4.16.0 tslib: 2.8.1 - '@aws-sdk/client-s3@3.1079.0': - dependencies: - '@aws-sdk/checksums': 3.1000.12 - '@aws-sdk/core': 3.974.27 - '@aws-sdk/credential-provider-node': 3.972.62 - '@aws-sdk/middleware-sdk-s3': 3.972.58 - '@aws-sdk/signature-v4-multi-region': 3.996.38 - '@aws-sdk/types': 3.973.15 - '@smithy/core': 3.29.1 - '@smithy/fetch-http-handler': 5.6.3 - '@smithy/node-http-handler': 4.9.3 - '@smithy/types': 4.15.1 + '@aws-sdk/client-s3@3.1083.0': + dependencies: + '@aws-sdk/checksums': 3.1000.16 + '@aws-sdk/core': 3.975.1 + '@aws-sdk/credential-provider-node': 3.972.66 + '@aws-sdk/middleware-sdk-s3': 3.972.62 + '@aws-sdk/signature-v4-multi-region': 3.996.39 + '@aws-sdk/types': 3.974.0 + '@smithy/core': 3.29.2 + '@smithy/fetch-http-handler': 5.6.4 + '@smithy/node-http-handler': 4.9.4 + '@smithy/types': 4.16.0 tslib: 2.8.1 - '@aws-sdk/core@3.974.27': + '@aws-sdk/core@3.975.1': dependencies: - '@aws-sdk/types': 3.973.15 - '@aws-sdk/xml-builder': 3.972.33 + '@aws-sdk/types': 3.974.0 + '@aws-sdk/xml-builder': 3.972.34 '@aws/lambda-invoke-store': 0.3.0 - '@smithy/core': 3.29.1 - '@smithy/signature-v4': 5.6.2 - '@smithy/types': 4.15.1 + '@smithy/core': 3.29.2 + '@smithy/signature-v4': 5.6.3 + '@smithy/types': 4.16.0 bowser: 2.14.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-env@3.972.53': + '@aws-sdk/credential-provider-env@3.972.57': dependencies: - '@aws-sdk/core': 3.974.27 - '@aws-sdk/types': 3.973.15 - '@smithy/core': 3.29.1 - '@smithy/types': 4.15.1 + '@aws-sdk/core': 3.975.1 + '@aws-sdk/types': 3.974.0 + '@smithy/core': 3.29.2 + '@smithy/types': 4.16.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-http@3.972.55': + '@aws-sdk/credential-provider-http@3.972.59': dependencies: - '@aws-sdk/core': 3.974.27 - '@aws-sdk/types': 3.973.15 - '@smithy/core': 3.29.1 - '@smithy/fetch-http-handler': 5.6.3 - '@smithy/node-http-handler': 4.9.3 - '@smithy/types': 4.15.1 + '@aws-sdk/core': 3.975.1 + '@aws-sdk/types': 3.974.0 + '@smithy/core': 3.29.2 + '@smithy/fetch-http-handler': 5.6.4 + '@smithy/node-http-handler': 4.9.4 + '@smithy/types': 4.16.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-ini@3.972.60': - dependencies: - '@aws-sdk/core': 3.974.27 - '@aws-sdk/credential-provider-env': 3.972.53 - '@aws-sdk/credential-provider-http': 3.972.55 - '@aws-sdk/credential-provider-login': 3.972.59 - '@aws-sdk/credential-provider-process': 3.972.53 - '@aws-sdk/credential-provider-sso': 3.972.59 - '@aws-sdk/credential-provider-web-identity': 3.972.59 - '@aws-sdk/nested-clients': 3.997.27 - '@aws-sdk/types': 3.973.15 - '@smithy/core': 3.29.1 - '@smithy/credential-provider-imds': 4.4.6 - '@smithy/types': 4.15.1 + '@aws-sdk/credential-provider-ini@3.973.1': + dependencies: + '@aws-sdk/core': 3.975.1 + '@aws-sdk/credential-provider-env': 3.972.57 + '@aws-sdk/credential-provider-http': 3.972.59 + '@aws-sdk/credential-provider-login': 3.972.63 + '@aws-sdk/credential-provider-process': 3.972.57 + '@aws-sdk/credential-provider-sso': 3.973.1 + '@aws-sdk/credential-provider-web-identity': 3.972.63 + '@aws-sdk/nested-clients': 3.997.31 + '@aws-sdk/types': 3.974.0 + '@smithy/core': 3.29.2 + '@smithy/credential-provider-imds': 4.4.7 + '@smithy/types': 4.16.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-login@3.972.59': + '@aws-sdk/credential-provider-login@3.972.63': dependencies: - '@aws-sdk/core': 3.974.27 - '@aws-sdk/nested-clients': 3.997.27 - '@aws-sdk/types': 3.973.15 - '@smithy/core': 3.29.1 - '@smithy/types': 4.15.1 + '@aws-sdk/core': 3.975.1 + '@aws-sdk/nested-clients': 3.997.31 + '@aws-sdk/types': 3.974.0 + '@smithy/core': 3.29.2 + '@smithy/types': 4.16.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-node@3.972.62': - dependencies: - '@aws-sdk/credential-provider-env': 3.972.53 - '@aws-sdk/credential-provider-http': 3.972.55 - '@aws-sdk/credential-provider-ini': 3.972.60 - '@aws-sdk/credential-provider-process': 3.972.53 - '@aws-sdk/credential-provider-sso': 3.972.59 - '@aws-sdk/credential-provider-web-identity': 3.972.59 - '@aws-sdk/types': 3.973.15 - '@smithy/core': 3.29.1 - '@smithy/credential-provider-imds': 4.4.6 - '@smithy/types': 4.15.1 + '@aws-sdk/credential-provider-node@3.972.66': + dependencies: + '@aws-sdk/credential-provider-env': 3.972.57 + '@aws-sdk/credential-provider-http': 3.972.59 + '@aws-sdk/credential-provider-ini': 3.973.1 + '@aws-sdk/credential-provider-process': 3.972.57 + '@aws-sdk/credential-provider-sso': 3.973.1 + '@aws-sdk/credential-provider-web-identity': 3.972.63 + '@aws-sdk/types': 3.974.0 + '@smithy/core': 3.29.2 + '@smithy/credential-provider-imds': 4.4.7 + '@smithy/types': 4.16.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-process@3.972.53': + '@aws-sdk/credential-provider-process@3.972.57': dependencies: - '@aws-sdk/core': 3.974.27 - '@aws-sdk/types': 3.973.15 - '@smithy/core': 3.29.1 - '@smithy/types': 4.15.1 + '@aws-sdk/core': 3.975.1 + '@aws-sdk/types': 3.974.0 + '@smithy/core': 3.29.2 + '@smithy/types': 4.16.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-sso@3.972.59': + '@aws-sdk/credential-provider-sso@3.973.1': dependencies: - '@aws-sdk/core': 3.974.27 - '@aws-sdk/nested-clients': 3.997.27 - '@aws-sdk/token-providers': 3.1079.0 - '@aws-sdk/types': 3.973.15 - '@smithy/core': 3.29.1 - '@smithy/types': 4.15.1 + '@aws-sdk/core': 3.975.1 + '@aws-sdk/nested-clients': 3.997.31 + '@aws-sdk/token-providers': 3.1083.0 + '@aws-sdk/types': 3.974.0 + '@smithy/core': 3.29.2 + '@smithy/types': 4.16.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-web-identity@3.972.59': + '@aws-sdk/credential-provider-web-identity@3.972.63': dependencies: - '@aws-sdk/core': 3.974.27 - '@aws-sdk/nested-clients': 3.997.27 - '@aws-sdk/types': 3.973.15 - '@smithy/core': 3.29.1 - '@smithy/types': 4.15.1 + '@aws-sdk/core': 3.975.1 + '@aws-sdk/nested-clients': 3.997.31 + '@aws-sdk/types': 3.974.0 + '@smithy/core': 3.29.2 + '@smithy/types': 4.16.0 tslib: 2.8.1 - '@aws-sdk/middleware-sdk-s3@3.972.58': + '@aws-sdk/middleware-sdk-s3@3.972.62': dependencies: - '@aws-sdk/core': 3.974.27 - '@aws-sdk/signature-v4-multi-region': 3.996.38 - '@aws-sdk/types': 3.973.15 - '@smithy/core': 3.29.1 - '@smithy/types': 4.15.1 + '@aws-sdk/core': 3.975.1 + '@aws-sdk/signature-v4-multi-region': 3.996.39 + '@aws-sdk/types': 3.974.0 + '@smithy/core': 3.29.2 + '@smithy/types': 4.16.0 tslib: 2.8.1 - '@aws-sdk/nested-clients@3.997.27': + '@aws-sdk/nested-clients@3.997.31': dependencies: - '@aws-sdk/core': 3.974.27 - '@aws-sdk/signature-v4-multi-region': 3.996.38 - '@aws-sdk/types': 3.973.15 - '@smithy/core': 3.29.1 - '@smithy/fetch-http-handler': 5.6.3 - '@smithy/node-http-handler': 4.9.3 - '@smithy/types': 4.15.1 + '@aws-sdk/core': 3.975.1 + '@aws-sdk/signature-v4-multi-region': 3.996.39 + '@aws-sdk/types': 3.974.0 + '@smithy/core': 3.29.2 + '@smithy/fetch-http-handler': 5.6.4 + '@smithy/node-http-handler': 4.9.4 + '@smithy/types': 4.16.0 tslib: 2.8.1 - '@aws-sdk/signature-v4-multi-region@3.996.38': + '@aws-sdk/signature-v4-multi-region@3.996.39': dependencies: - '@aws-sdk/types': 3.973.15 - '@smithy/signature-v4': 5.6.2 - '@smithy/types': 4.15.1 + '@aws-sdk/types': 3.974.0 + '@smithy/signature-v4': 5.6.3 + '@smithy/types': 4.16.0 tslib: 2.8.1 - '@aws-sdk/token-providers@3.1079.0': + '@aws-sdk/token-providers@3.1083.0': dependencies: - '@aws-sdk/core': 3.974.27 - '@aws-sdk/nested-clients': 3.997.27 - '@aws-sdk/types': 3.973.15 - '@smithy/core': 3.29.1 - '@smithy/types': 4.15.1 + '@aws-sdk/core': 3.975.1 + '@aws-sdk/nested-clients': 3.997.31 + '@aws-sdk/types': 3.974.0 + '@smithy/core': 3.29.2 + '@smithy/types': 4.16.0 tslib: 2.8.1 - '@aws-sdk/types@3.973.15': + '@aws-sdk/types@3.974.0': dependencies: - '@smithy/types': 4.15.1 + '@smithy/types': 4.16.0 tslib: 2.8.1 - '@aws-sdk/xml-builder@3.972.33': + '@aws-sdk/xml-builder@3.972.34': dependencies: - '@smithy/types': 4.15.1 + '@smithy/types': 4.16.0 tslib: 2.8.1 '@aws/lambda-invoke-store@0.3.0': {} @@ -9514,7 +9514,7 @@ snapshots: dependencies: '@babel/compat-data': 7.29.7 '@babel/helper-validator-option': 7.29.7 - browserslist: 4.28.4 + browserslist: 4.28.5 lru-cache: 5.1.1 semver: 6.3.1 @@ -10217,10 +10217,10 @@ snapshots: '@colors/colors@1.6.0': {} - '@contentstack/cli-auth@1.8.4(@types/node@22.20.0)': + '@contentstack/cli-auth@1.8.4(@types/node@22.20.1)': dependencies: - '@contentstack/cli-command': 1.8.4(@types/node@22.20.0) - '@contentstack/cli-utilities': 1.18.5(@types/node@22.20.0) + '@contentstack/cli-command': 1.8.4(@types/node@22.20.1) + '@contentstack/cli-utilities': 1.18.5(@types/node@22.20.1) '@oclif/core': 4.11.14 otplib: 12.0.1 transitivePeerDependencies: @@ -10268,9 +10268,9 @@ snapshots: - debug - supports-color - '@contentstack/cli-command@1.8.4(@types/node@22.20.0)': + '@contentstack/cli-command@1.8.4(@types/node@22.20.1)': dependencies: - '@contentstack/cli-utilities': 1.18.5(@types/node@22.20.0) + '@contentstack/cli-utilities': 1.18.5(@types/node@22.20.1) '@oclif/core': 4.11.14 contentstack: 3.27.0 transitivePeerDependencies: @@ -10289,10 +10289,10 @@ snapshots: - debug - supports-color - '@contentstack/cli-config@1.20.5(@types/node@22.20.0)': + '@contentstack/cli-config@1.20.5(@types/node@22.20.1)': dependencies: - '@contentstack/cli-command': 1.8.4(@types/node@22.20.0) - '@contentstack/cli-utilities': 1.18.5(@types/node@22.20.0) + '@contentstack/cli-command': 1.8.4(@types/node@22.20.1) + '@contentstack/cli-utilities': 1.18.5(@types/node@22.20.1) '@contentstack/utils': 1.9.1 '@oclif/core': 4.11.14 transitivePeerDependencies: @@ -10321,7 +10321,7 @@ snapshots: '@rollup/plugin-node-resolve': 16.0.3(rollup@4.62.2) '@rollup/plugin-typescript': 12.3.0(rollup@4.62.2)(tslib@2.8.1)(typescript@5.9.3) '@types/express': 4.17.25 - '@types/express-serve-static-core': 4.19.8 + '@types/express-serve-static-core': 4.19.9 adm-zip: 0.5.18 chalk: 4.1.2 cross-fetch: 4.1.0 @@ -10363,7 +10363,7 @@ snapshots: inquirer: 8.2.7(@types/node@14.18.63) inquirer-search-checkbox: 1.0.0 inquirer-search-list: 1.2.6 - js-yaml: 4.2.0 + js-yaml: 4.3.0 klona: 2.0.6 lodash: 4.18.1 mkdirp: 1.0.4 @@ -10400,7 +10400,7 @@ snapshots: inquirer: 8.2.7(@types/node@14.18.63) inquirer-search-checkbox: 1.0.0 inquirer-search-list: 1.2.6 - js-yaml: 4.2.0 + js-yaml: 4.3.0 klona: 2.0.6 lodash: 4.18.1 mkdirp: 1.0.4 @@ -10437,7 +10437,7 @@ snapshots: inquirer: 8.2.7(@types/node@18.19.130) inquirer-search-checkbox: 1.0.0 inquirer-search-list: 1.2.6 - js-yaml: 4.2.0 + js-yaml: 4.3.0 klona: 2.0.6 lodash: 4.18.1 mkdirp: 1.0.4 @@ -10474,7 +10474,7 @@ snapshots: inquirer: 8.2.7(@types/node@20.19.43) inquirer-search-checkbox: 1.0.0 inquirer-search-list: 1.2.6 - js-yaml: 4.2.0 + js-yaml: 4.3.0 klona: 2.0.6 lodash: 4.18.1 mkdirp: 1.0.4 @@ -10495,7 +10495,7 @@ snapshots: - debug - supports-color - '@contentstack/cli-utilities@1.18.5(@types/node@22.20.0)': + '@contentstack/cli-utilities@1.18.5(@types/node@22.20.1)': dependencies: '@contentstack/management': 1.30.4(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.4(debug@4.4.3) @@ -10508,10 +10508,10 @@ snapshots: conf: 10.2.0 dotenv: 16.6.1 figures: 3.2.0 - inquirer: 8.2.7(@types/node@22.20.0) + inquirer: 8.2.7(@types/node@22.20.1) inquirer-search-checkbox: 1.0.0 inquirer-search-list: 1.2.6 - js-yaml: 4.2.0 + js-yaml: 4.3.0 klona: 2.0.6 lodash: 4.18.1 mkdirp: 1.0.4 @@ -10681,7 +10681,7 @@ snapshots: '@es-joy/jsdoccomment@0.50.2': dependencies: '@types/estree': 1.0.9 - '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/types': 8.63.0 comment-parser: 1.4.1 esquery: 1.7.0 jsdoc-type-pratt-parser: 4.1.0 @@ -10746,7 +10746,7 @@ snapshots: globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.2.0 + js-yaml: 4.3.0 minimatch: 3.1.5 strip-json-comments: 3.1.1 transitivePeerDependencies: @@ -10866,15 +10866,15 @@ snapshots: optionalDependencies: '@types/node': 20.19.43 - '@inquirer/checkbox@4.3.2(@types/node@22.20.0)': + '@inquirer/checkbox@4.3.2(@types/node@22.20.1)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@22.20.0) + '@inquirer/core': 10.3.2(@types/node@22.20.1) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@22.20.0) + '@inquirer/type': 3.0.10(@types/node@22.20.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 22.20.0 + '@types/node': 22.20.1 '@inquirer/confirm@3.2.0': dependencies: @@ -10902,12 +10902,12 @@ snapshots: optionalDependencies: '@types/node': 20.19.43 - '@inquirer/confirm@5.1.21(@types/node@22.20.0)': + '@inquirer/confirm@5.1.21(@types/node@22.20.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@22.20.0) - '@inquirer/type': 3.0.10(@types/node@22.20.0) + '@inquirer/core': 10.3.2(@types/node@22.20.1) + '@inquirer/type': 3.0.10(@types/node@22.20.1) optionalDependencies: - '@types/node': 22.20.0 + '@types/node': 22.20.1 '@inquirer/core@10.3.2(@types/node@14.18.63)': dependencies: @@ -10948,25 +10948,25 @@ snapshots: optionalDependencies: '@types/node': 20.19.43 - '@inquirer/core@10.3.2(@types/node@22.20.0)': + '@inquirer/core@10.3.2(@types/node@22.20.1)': dependencies: '@inquirer/ansi': 1.0.2 '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@22.20.0) + '@inquirer/type': 3.0.10(@types/node@22.20.1) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 22.20.0 + '@types/node': 22.20.1 '@inquirer/core@9.2.1': dependencies: '@inquirer/figures': 1.0.15 '@inquirer/type': 2.0.0 '@types/mute-stream': 0.0.4 - '@types/node': 22.20.0 + '@types/node': 22.20.1 '@types/wrap-ansi': 3.0.0 ansi-escapes: 4.3.2 cli-width: 4.1.0 @@ -11000,13 +11000,13 @@ snapshots: optionalDependencies: '@types/node': 20.19.43 - '@inquirer/editor@4.2.23(@types/node@22.20.0)': + '@inquirer/editor@4.2.23(@types/node@22.20.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@22.20.0) - '@inquirer/external-editor': 1.0.3(@types/node@22.20.0) - '@inquirer/type': 3.0.10(@types/node@22.20.0) + '@inquirer/core': 10.3.2(@types/node@22.20.1) + '@inquirer/external-editor': 1.0.3(@types/node@22.20.1) + '@inquirer/type': 3.0.10(@types/node@22.20.1) optionalDependencies: - '@types/node': 22.20.0 + '@types/node': 22.20.1 '@inquirer/expand@4.0.23(@types/node@14.18.63)': dependencies: @@ -11032,13 +11032,13 @@ snapshots: optionalDependencies: '@types/node': 20.19.43 - '@inquirer/expand@4.0.23(@types/node@22.20.0)': + '@inquirer/expand@4.0.23(@types/node@22.20.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@22.20.0) - '@inquirer/type': 3.0.10(@types/node@22.20.0) + '@inquirer/core': 10.3.2(@types/node@22.20.1) + '@inquirer/type': 3.0.10(@types/node@22.20.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 22.20.0 + '@types/node': 22.20.1 '@inquirer/external-editor@1.0.3(@types/node@14.18.63)': dependencies: @@ -11061,12 +11061,12 @@ snapshots: optionalDependencies: '@types/node': 20.19.43 - '@inquirer/external-editor@1.0.3(@types/node@22.20.0)': + '@inquirer/external-editor@1.0.3(@types/node@22.20.1)': dependencies: chardet: 2.2.0 iconv-lite: 0.7.3 optionalDependencies: - '@types/node': 22.20.0 + '@types/node': 22.20.1 '@inquirer/figures@1.0.15': {} @@ -11096,12 +11096,12 @@ snapshots: optionalDependencies: '@types/node': 20.19.43 - '@inquirer/input@4.3.1(@types/node@22.20.0)': + '@inquirer/input@4.3.1(@types/node@22.20.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@22.20.0) - '@inquirer/type': 3.0.10(@types/node@22.20.0) + '@inquirer/core': 10.3.2(@types/node@22.20.1) + '@inquirer/type': 3.0.10(@types/node@22.20.1) optionalDependencies: - '@types/node': 22.20.0 + '@types/node': 22.20.1 '@inquirer/number@3.0.23(@types/node@14.18.63)': dependencies: @@ -11124,12 +11124,12 @@ snapshots: optionalDependencies: '@types/node': 20.19.43 - '@inquirer/number@3.0.23(@types/node@22.20.0)': + '@inquirer/number@3.0.23(@types/node@22.20.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@22.20.0) - '@inquirer/type': 3.0.10(@types/node@22.20.0) + '@inquirer/core': 10.3.2(@types/node@22.20.1) + '@inquirer/type': 3.0.10(@types/node@22.20.1) optionalDependencies: - '@types/node': 22.20.0 + '@types/node': 22.20.1 '@inquirer/password@4.0.23(@types/node@14.18.63)': dependencies: @@ -11155,13 +11155,13 @@ snapshots: optionalDependencies: '@types/node': 20.19.43 - '@inquirer/password@4.0.23(@types/node@22.20.0)': + '@inquirer/password@4.0.23(@types/node@22.20.1)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@22.20.0) - '@inquirer/type': 3.0.10(@types/node@22.20.0) + '@inquirer/core': 10.3.2(@types/node@22.20.1) + '@inquirer/type': 3.0.10(@types/node@22.20.1) optionalDependencies: - '@types/node': 22.20.0 + '@types/node': 22.20.1 '@inquirer/prompts@7.10.1': dependencies: @@ -11221,20 +11221,20 @@ snapshots: optionalDependencies: '@types/node': 20.19.43 - '@inquirer/prompts@7.10.1(@types/node@22.20.0)': - dependencies: - '@inquirer/checkbox': 4.3.2(@types/node@22.20.0) - '@inquirer/confirm': 5.1.21(@types/node@22.20.0) - '@inquirer/editor': 4.2.23(@types/node@22.20.0) - '@inquirer/expand': 4.0.23(@types/node@22.20.0) - '@inquirer/input': 4.3.1(@types/node@22.20.0) - '@inquirer/number': 3.0.23(@types/node@22.20.0) - '@inquirer/password': 4.0.23(@types/node@22.20.0) - '@inquirer/rawlist': 4.1.11(@types/node@22.20.0) - '@inquirer/search': 3.2.2(@types/node@22.20.0) - '@inquirer/select': 4.4.2(@types/node@22.20.0) + '@inquirer/prompts@7.10.1(@types/node@22.20.1)': + dependencies: + '@inquirer/checkbox': 4.3.2(@types/node@22.20.1) + '@inquirer/confirm': 5.1.21(@types/node@22.20.1) + '@inquirer/editor': 4.2.23(@types/node@22.20.1) + '@inquirer/expand': 4.0.23(@types/node@22.20.1) + '@inquirer/input': 4.3.1(@types/node@22.20.1) + '@inquirer/number': 3.0.23(@types/node@22.20.1) + '@inquirer/password': 4.0.23(@types/node@22.20.1) + '@inquirer/rawlist': 4.1.11(@types/node@22.20.1) + '@inquirer/search': 3.2.2(@types/node@22.20.1) + '@inquirer/select': 4.4.2(@types/node@22.20.1) optionalDependencies: - '@types/node': 22.20.0 + '@types/node': 22.20.1 '@inquirer/rawlist@4.1.11(@types/node@14.18.63)': dependencies: @@ -11260,13 +11260,13 @@ snapshots: optionalDependencies: '@types/node': 20.19.43 - '@inquirer/rawlist@4.1.11(@types/node@22.20.0)': + '@inquirer/rawlist@4.1.11(@types/node@22.20.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@22.20.0) - '@inquirer/type': 3.0.10(@types/node@22.20.0) + '@inquirer/core': 10.3.2(@types/node@22.20.1) + '@inquirer/type': 3.0.10(@types/node@22.20.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 22.20.0 + '@types/node': 22.20.1 '@inquirer/search@3.2.2(@types/node@14.18.63)': dependencies: @@ -11295,14 +11295,14 @@ snapshots: optionalDependencies: '@types/node': 20.19.43 - '@inquirer/search@3.2.2(@types/node@22.20.0)': + '@inquirer/search@3.2.2(@types/node@22.20.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@22.20.0) + '@inquirer/core': 10.3.2(@types/node@22.20.1) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@22.20.0) + '@inquirer/type': 3.0.10(@types/node@22.20.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 22.20.0 + '@types/node': 22.20.1 '@inquirer/select@2.5.0': dependencies: @@ -11342,15 +11342,15 @@ snapshots: optionalDependencies: '@types/node': 20.19.43 - '@inquirer/select@4.4.2(@types/node@22.20.0)': + '@inquirer/select@4.4.2(@types/node@22.20.1)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@22.20.0) + '@inquirer/core': 10.3.2(@types/node@22.20.1) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@22.20.0) + '@inquirer/type': 3.0.10(@types/node@22.20.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 22.20.0 + '@types/node': 22.20.1 '@inquirer/type@1.5.5': dependencies: @@ -11372,9 +11372,9 @@ snapshots: optionalDependencies: '@types/node': 20.19.43 - '@inquirer/type@3.0.10(@types/node@22.20.0)': + '@inquirer/type@3.0.10(@types/node@22.20.1)': optionalDependencies: - '@types/node': 22.20.0 + '@types/node': 22.20.1 '@isaacs/cliui@8.0.2': dependencies: @@ -11394,7 +11394,7 @@ snapshots: camelcase: 5.3.1 find-up: 4.1.0 get-package-type: 0.1.0 - js-yaml: 4.2.0 + js-yaml: 4.3.0 resolve-from: 5.0.0 '@istanbuljs/schema@0.1.6': {} @@ -11417,7 +11417,7 @@ snapshots: jest-util: 30.4.1 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.2(@types/node@22.20.0)(typescript@4.9.5))': + '@jest/core@29.7.0(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -11431,7 +11431,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.19.43)(ts-node@10.9.2(@types/node@22.20.0)(typescript@4.9.5)) + jest-config: 29.7.0(@types/node@20.19.43)(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -11452,7 +11452,7 @@ snapshots: - supports-color - ts-node - '@jest/core@29.7.0(ts-node@10.9.2(@types/node@22.20.0)(typescript@5.9.3))': + '@jest/core@29.7.0(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -11466,7 +11466,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.19.43)(ts-node@10.9.2(@types/node@22.20.0)(typescript@5.9.3)) + jest-config: 29.7.0(@types/node@20.19.43)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -11702,7 +11702,7 @@ snapshots: '@jest/schemas@30.4.1': dependencies: - '@sinclair/typebox': 0.34.49 + '@sinclair/typebox': 0.34.50 '@jest/snapshot-utils@30.4.1': dependencies: @@ -11895,7 +11895,7 @@ snapshots: hyperlinker: 1.0.0 indent-string: 4.0.0 is-wsl: 2.2.0 - js-yaml: 4.2.0 + js-yaml: 4.3.0 natural-orderby: 2.0.3 object-treeify: 1.1.33 password-prompt: 1.1.3 @@ -11925,7 +11925,7 @@ snapshots: hyperlinker: 1.0.0 indent-string: 4.0.0 is-wsl: 2.2.0 - js-yaml: 4.2.0 + js-yaml: 4.3.0 minimatch: 9.0.9 natural-orderby: 2.0.3 object-treeify: 1.1.33 @@ -12002,9 +12002,9 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@oclif/plugin-not-found@3.2.88(@types/node@22.20.0)': + '@oclif/plugin-not-found@3.2.88(@types/node@22.20.1)': dependencies: - '@inquirer/prompts': 7.10.1(@types/node@22.20.0) + '@inquirer/prompts': 7.10.1(@types/node@22.20.1) '@oclif/core': 4.11.14 ansis: 3.17.0 fast-levenshtein: 3.0.0 @@ -12065,7 +12065,7 @@ snapshots: '@otplib/plugin-crypto': 12.0.1 '@otplib/plugin-thirty-two': 12.0.1 - '@oxc-project/types@0.138.0': {} + '@oxc-project/types@0.139.0': {} '@pkgjs/parseargs@0.11.0': optional: true @@ -12088,53 +12088,53 @@ snapshots: dependencies: nopt: 1.0.10 - '@rolldown/binding-android-arm64@1.1.4': + '@rolldown/binding-android-arm64@1.1.5': optional: true - '@rolldown/binding-darwin-arm64@1.1.4': + '@rolldown/binding-darwin-arm64@1.1.5': optional: true - '@rolldown/binding-darwin-x64@1.1.4': + '@rolldown/binding-darwin-x64@1.1.5': optional: true - '@rolldown/binding-freebsd-x64@1.1.4': + '@rolldown/binding-freebsd-x64@1.1.5': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.1.4': + '@rolldown/binding-linux-arm-gnueabihf@1.1.5': optional: true - '@rolldown/binding-linux-arm64-gnu@1.1.4': + '@rolldown/binding-linux-arm64-gnu@1.1.5': optional: true - '@rolldown/binding-linux-arm64-musl@1.1.4': + '@rolldown/binding-linux-arm64-musl@1.1.5': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.1.4': + '@rolldown/binding-linux-ppc64-gnu@1.1.5': optional: true - '@rolldown/binding-linux-s390x-gnu@1.1.4': + '@rolldown/binding-linux-s390x-gnu@1.1.5': optional: true - '@rolldown/binding-linux-x64-gnu@1.1.4': + '@rolldown/binding-linux-x64-gnu@1.1.5': optional: true - '@rolldown/binding-linux-x64-musl@1.1.4': + '@rolldown/binding-linux-x64-musl@1.1.5': optional: true - '@rolldown/binding-openharmony-arm64@1.1.4': + '@rolldown/binding-openharmony-arm64@1.1.5': optional: true - '@rolldown/binding-wasm32-wasi@1.1.4': + '@rolldown/binding-wasm32-wasi@1.1.5': dependencies: '@emnapi/core': 1.11.1 '@emnapi/runtime': 1.11.1 '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) optional: true - '@rolldown/binding-win32-arm64-msvc@1.1.4': + '@rolldown/binding-win32-arm64-msvc@1.1.5': optional: true - '@rolldown/binding-win32-x64-msvc@1.1.4': + '@rolldown/binding-win32-x64-msvc@1.1.5': optional: true '@rolldown/pluginutils@1.0.1': {} @@ -12277,7 +12277,7 @@ snapshots: '@sinclair/typebox@0.27.10': {} - '@sinclair/typebox@0.34.49': {} + '@sinclair/typebox@0.34.50': {} '@sindresorhus/is@5.6.0': {} @@ -12313,36 +12313,36 @@ snapshots: '@sinonjs/text-encoding@0.7.3': {} - '@smithy/core@3.29.1': + '@smithy/core@3.29.2': dependencies: - '@smithy/types': 4.15.1 + '@smithy/types': 4.16.0 tslib: 2.8.1 - '@smithy/credential-provider-imds@4.4.6': + '@smithy/credential-provider-imds@4.4.7': dependencies: - '@smithy/core': 3.29.1 - '@smithy/types': 4.15.1 + '@smithy/core': 3.29.2 + '@smithy/types': 4.16.0 tslib: 2.8.1 - '@smithy/fetch-http-handler@5.6.3': + '@smithy/fetch-http-handler@5.6.4': dependencies: - '@smithy/core': 3.29.1 - '@smithy/types': 4.15.1 + '@smithy/core': 3.29.2 + '@smithy/types': 4.16.0 tslib: 2.8.1 - '@smithy/node-http-handler@4.9.3': + '@smithy/node-http-handler@4.9.4': dependencies: - '@smithy/core': 3.29.1 - '@smithy/types': 4.15.1 + '@smithy/core': 3.29.2 + '@smithy/types': 4.16.0 tslib: 2.8.1 - '@smithy/signature-v4@5.6.2': + '@smithy/signature-v4@5.6.3': dependencies: - '@smithy/core': 3.29.1 - '@smithy/types': 4.15.1 + '@smithy/core': 3.29.2 + '@smithy/types': 4.16.0 tslib: 2.8.1 - '@smithy/types@4.15.1': + '@smithy/types@4.16.0': dependencies: tslib: 2.8.1 @@ -12355,7 +12355,7 @@ snapshots: '@stylistic/eslint-plugin@3.1.0(eslint@10.6.0)(typescript@4.9.5)': dependencies: - '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@4.9.5) + '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@4.9.5) eslint: 10.6.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -12367,7 +12367,7 @@ snapshots: '@stylistic/eslint-plugin@3.1.0(eslint@10.6.0)(typescript@5.9.3)': dependencies: - '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@5.9.3) + '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@5.9.3) eslint: 10.6.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -12379,7 +12379,7 @@ snapshots: '@stylistic/eslint-plugin@3.1.0(eslint@10.6.0)(typescript@6.0.3)': dependencies: - '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@6.0.3) + '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@6.0.3) eslint: 10.6.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -12392,7 +12392,7 @@ snapshots: '@stylistic/eslint-plugin@5.10.0(eslint@10.6.0)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) - '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/types': 8.63.0 eslint: 10.6.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -12477,7 +12477,7 @@ snapshots: '@types/estree@1.0.9': {} - '@types/express-serve-static-core@4.19.8': + '@types/express-serve-static-core@4.19.9': dependencies: '@types/node': 20.19.43 '@types/qs': 6.15.1 @@ -12487,7 +12487,7 @@ snapshots: '@types/express@4.17.25': dependencies: '@types/body-parser': 1.19.6 - '@types/express-serve-static-core': 4.19.8 + '@types/express-serve-static-core': 4.19.9 '@types/qs': 6.15.1 '@types/serve-static': 1.15.10 @@ -12591,7 +12591,7 @@ snapshots: dependencies: undici-types: 6.21.0 - '@types/node@22.20.0': + '@types/node@22.20.1': dependencies: undici-types: 6.21.0 @@ -12680,10 +12680,10 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@4.9.5))(eslint@10.6.0)(typescript@4.9.5)': + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@4.9.5))(eslint@10.6.0)(typescript@4.9.5)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@4.9.5) + '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@4.9.5) '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/type-utils': 5.62.0(eslint@10.6.0)(typescript@4.9.5) '@typescript-eslint/utils': 5.62.0(eslint@10.6.0)(typescript@4.9.5) @@ -12759,14 +12759,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@4.9.5))(eslint@10.6.0)(typescript@4.9.5)': + '@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@4.9.5))(eslint@10.6.0)(typescript@4.9.5)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@4.9.5) - '@typescript-eslint/scope-manager': 8.62.1 - '@typescript-eslint/type-utils': 8.62.1(eslint@10.6.0)(typescript@4.9.5) - '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@4.9.5) - '@typescript-eslint/visitor-keys': 8.62.1 + '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 8.63.0 + '@typescript-eslint/type-utils': 8.63.0(eslint@10.6.0)(typescript@4.9.5) + '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@4.9.5) + '@typescript-eslint/visitor-keys': 8.63.0 eslint: 10.6.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -12775,14 +12775,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@5.9.3))(eslint@10.6.0)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@5.9.3))(eslint@10.6.0)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.62.1 - '@typescript-eslint/type-utils': 8.62.1(eslint@10.6.0)(typescript@5.9.3) - '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.62.1 + '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.63.0 + '@typescript-eslint/type-utils': 8.63.0(eslint@10.6.0)(typescript@5.9.3) + '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.63.0 eslint: 10.6.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -12791,14 +12791,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@6.0.3))(eslint@10.6.0)(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@6.0.3))(eslint@10.6.0)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.62.1 - '@typescript-eslint/type-utils': 8.62.1(eslint@10.6.0)(typescript@6.0.3) - '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.62.1 + '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.63.0 + '@typescript-eslint/type-utils': 8.63.0(eslint@10.6.0)(typescript@6.0.3) + '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.63.0 eslint: 10.6.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -12846,64 +12846,64 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@4.9.5)': + '@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@4.9.5)': dependencies: - '@typescript-eslint/scope-manager': 8.62.1 - '@typescript-eslint/types': 8.62.1 - '@typescript-eslint/typescript-estree': 8.62.1(typescript@4.9.5) - '@typescript-eslint/visitor-keys': 8.62.1 + '@typescript-eslint/scope-manager': 8.63.0 + '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/typescript-estree': 8.63.0(typescript@4.9.5) + '@typescript-eslint/visitor-keys': 8.63.0 debug: 4.4.3(supports-color@8.1.1) eslint: 10.6.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@5.9.3)': + '@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.62.1 - '@typescript-eslint/types': 8.62.1 - '@typescript-eslint/typescript-estree': 8.62.1(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.62.1 + '@typescript-eslint/scope-manager': 8.63.0 + '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/typescript-estree': 8.63.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.63.0 debug: 4.4.3(supports-color@8.1.1) eslint: 10.6.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@6.0.3)': + '@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@6.0.3)': dependencies: - '@typescript-eslint/scope-manager': 8.62.1 - '@typescript-eslint/types': 8.62.1 - '@typescript-eslint/typescript-estree': 8.62.1(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.62.1 + '@typescript-eslint/scope-manager': 8.63.0 + '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/typescript-estree': 8.63.0(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.63.0 debug: 4.4.3(supports-color@8.1.1) eslint: 10.6.0 typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.62.1(typescript@4.9.5)': + '@typescript-eslint/project-service@8.63.0(typescript@4.9.5)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.62.1(typescript@4.9.5) - '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/tsconfig-utils': 8.63.0(typescript@4.9.5) + '@typescript-eslint/types': 8.63.0 debug: 4.4.3(supports-color@8.1.1) typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.62.1(typescript@5.9.3)': + '@typescript-eslint/project-service@8.63.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.62.1(typescript@5.9.3) - '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/tsconfig-utils': 8.63.0(typescript@5.9.3) + '@typescript-eslint/types': 8.63.0 debug: 4.4.3(supports-color@8.1.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.62.1(typescript@6.0.3)': + '@typescript-eslint/project-service@8.63.0(typescript@6.0.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.62.1(typescript@6.0.3) - '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/tsconfig-utils': 8.63.0(typescript@6.0.3) + '@typescript-eslint/types': 8.63.0 debug: 4.4.3(supports-color@8.1.1) typescript: 6.0.3 transitivePeerDependencies: @@ -12924,20 +12924,20 @@ snapshots: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - '@typescript-eslint/scope-manager@8.62.1': + '@typescript-eslint/scope-manager@8.63.0': dependencies: - '@typescript-eslint/types': 8.62.1 - '@typescript-eslint/visitor-keys': 8.62.1 + '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/visitor-keys': 8.63.0 - '@typescript-eslint/tsconfig-utils@8.62.1(typescript@4.9.5)': + '@typescript-eslint/tsconfig-utils@8.63.0(typescript@4.9.5)': dependencies: typescript: 4.9.5 - '@typescript-eslint/tsconfig-utils@8.62.1(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.63.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/tsconfig-utils@8.62.1(typescript@6.0.3)': + '@typescript-eslint/tsconfig-utils@8.63.0(typescript@6.0.3)': dependencies: typescript: 6.0.3 @@ -12989,11 +12989,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.62.1(eslint@10.6.0)(typescript@4.9.5)': + '@typescript-eslint/type-utils@8.63.0(eslint@10.6.0)(typescript@4.9.5)': dependencies: - '@typescript-eslint/types': 8.62.1 - '@typescript-eslint/typescript-estree': 8.62.1(typescript@4.9.5) - '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@4.9.5) + '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/typescript-estree': 8.63.0(typescript@4.9.5) + '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@4.9.5) debug: 4.4.3(supports-color@8.1.1) eslint: 10.6.0 ts-api-utils: 2.5.0(typescript@4.9.5) @@ -13001,11 +13001,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.62.1(eslint@10.6.0)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.63.0(eslint@10.6.0)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.62.1 - '@typescript-eslint/typescript-estree': 8.62.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@5.9.3) + '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/typescript-estree': 8.63.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@5.9.3) debug: 4.4.3(supports-color@8.1.1) eslint: 10.6.0 ts-api-utils: 2.5.0(typescript@5.9.3) @@ -13013,11 +13013,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.62.1(eslint@10.6.0)(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.63.0(eslint@10.6.0)(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.62.1 - '@typescript-eslint/typescript-estree': 8.62.1(typescript@6.0.3) - '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@6.0.3) + '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/typescript-estree': 8.63.0(typescript@6.0.3) + '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@6.0.3) debug: 4.4.3(supports-color@8.1.1) eslint: 10.6.0 ts-api-utils: 2.5.0(typescript@6.0.3) @@ -13031,7 +13031,7 @@ snapshots: '@typescript-eslint/types@7.18.0': {} - '@typescript-eslint/types@8.62.1': {} + '@typescript-eslint/types@8.63.0': {} '@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5)': dependencies: @@ -13137,12 +13137,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.62.1(typescript@4.9.5)': + '@typescript-eslint/typescript-estree@8.63.0(typescript@4.9.5)': dependencies: - '@typescript-eslint/project-service': 8.62.1(typescript@4.9.5) - '@typescript-eslint/tsconfig-utils': 8.62.1(typescript@4.9.5) - '@typescript-eslint/types': 8.62.1 - '@typescript-eslint/visitor-keys': 8.62.1 + '@typescript-eslint/project-service': 8.63.0(typescript@4.9.5) + '@typescript-eslint/tsconfig-utils': 8.63.0(typescript@4.9.5) + '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/visitor-keys': 8.63.0 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.5 semver: 7.8.5 @@ -13152,12 +13152,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.62.1(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.63.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.62.1(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.62.1(typescript@5.9.3) - '@typescript-eslint/types': 8.62.1 - '@typescript-eslint/visitor-keys': 8.62.1 + '@typescript-eslint/project-service': 8.63.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.63.0(typescript@5.9.3) + '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/visitor-keys': 8.63.0 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.5 semver: 7.8.5 @@ -13167,12 +13167,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.62.1(typescript@6.0.3)': + '@typescript-eslint/typescript-estree@8.63.0(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.62.1(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.62.1(typescript@6.0.3) - '@typescript-eslint/types': 8.62.1 - '@typescript-eslint/visitor-keys': 8.62.1 + '@typescript-eslint/project-service': 8.63.0(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.63.0(typescript@6.0.3) + '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/visitor-keys': 8.63.0 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.5 semver: 7.8.5 @@ -13272,34 +13272,34 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@8.62.1(eslint@10.6.0)(typescript@4.9.5)': + '@typescript-eslint/utils@8.63.0(eslint@10.6.0)(typescript@4.9.5)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) - '@typescript-eslint/scope-manager': 8.62.1 - '@typescript-eslint/types': 8.62.1 - '@typescript-eslint/typescript-estree': 8.62.1(typescript@4.9.5) + '@typescript-eslint/scope-manager': 8.63.0 + '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/typescript-estree': 8.63.0(typescript@4.9.5) eslint: 10.6.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.62.1(eslint@10.6.0)(typescript@5.9.3)': + '@typescript-eslint/utils@8.63.0(eslint@10.6.0)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) - '@typescript-eslint/scope-manager': 8.62.1 - '@typescript-eslint/types': 8.62.1 - '@typescript-eslint/typescript-estree': 8.62.1(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.63.0 + '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/typescript-estree': 8.63.0(typescript@5.9.3) eslint: 10.6.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.62.1(eslint@10.6.0)(typescript@6.0.3)': + '@typescript-eslint/utils@8.63.0(eslint@10.6.0)(typescript@6.0.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) - '@typescript-eslint/scope-manager': 8.62.1 - '@typescript-eslint/types': 8.62.1 - '@typescript-eslint/typescript-estree': 8.62.1(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.63.0 + '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/typescript-estree': 8.63.0(typescript@6.0.3) eslint: 10.6.0 typescript: 6.0.3 transitivePeerDependencies: @@ -13320,9 +13320,9 @@ snapshots: '@typescript-eslint/types': 7.18.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.62.1': + '@typescript-eslint/visitor-keys@8.63.0': dependencies: - '@typescript-eslint/types': 8.62.1 + '@typescript-eslint/types': 8.63.0 eslint-visitor-keys: 5.0.1 '@ungap/structured-clone@1.3.2': {} @@ -13406,13 +13406,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.10(vite@8.1.3(@types/node@20.19.43)(yaml@2.9.0))': + '@vitest/mocker@4.1.10(vite@8.1.4(@types/node@20.19.43)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.1.3(@types/node@20.19.43)(yaml@2.9.0) + vite: 8.1.4(@types/node@20.19.43)(yaml@2.9.0) '@vitest/pretty-format@4.1.10': dependencies: @@ -13859,7 +13859,7 @@ snapshots: bluebird@3.7.2: {} - body-parser@1.20.5: + body-parser@1.20.6: dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -13892,13 +13892,13 @@ snapshots: browser-stdout@1.3.1: {} - browserslist@4.28.4: + browserslist@4.28.5: dependencies: baseline-browser-mapping: 2.10.42 - caniuse-lite: 1.0.30001802 - electron-to-chromium: 1.5.387 - node-releases: 2.0.50 - update-browserslist-db: 1.2.3(browserslist@4.28.4) + caniuse-lite: 1.0.30001803 + electron-to-chromium: 1.5.389 + node-releases: 2.0.51 + update-browserslist-db: 1.2.3(browserslist@4.28.5) bs-logger@0.2.6: dependencies: @@ -13981,7 +13981,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001802: {} + caniuse-lite@1.0.30001803: {} capital-case@1.0.4: dependencies: @@ -14126,7 +14126,7 @@ snapshots: cli-truncate@5.2.0: dependencies: slice-ansi: 8.0.0 - string-width: 8.2.1 + string-width: 8.2.2 cli-ux@6.0.9: dependencies: @@ -14144,7 +14144,7 @@ snapshots: hyperlinker: 1.0.0 indent-string: 4.0.0 is-wsl: 2.2.0 - js-yaml: 4.2.0 + js-yaml: 4.3.0 lodash: 4.18.1 natural-orderby: 2.0.3 object-treeify: 1.1.33 @@ -14417,7 +14417,7 @@ snapshots: core-js-compat@3.49.0: dependencies: - browserslist: 4.28.4 + browserslist: 4.28.5 core-util-is@1.0.3: {} @@ -14436,13 +14436,13 @@ snapshots: - supports-color - ts-node - create-jest@29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@4.9.5)): + create-jest@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@4.9.5)) + jest-config: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -14451,13 +14451,13 @@ snapshots: - supports-color - ts-node - create-jest@29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@5.9.3)): + create-jest@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@5.9.3)) + jest-config: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -14697,7 +14697,7 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.387: {} + electron-to-chromium@1.5.389: {} elegant-spinner@1.0.1: {} @@ -14717,7 +14717,7 @@ snapshots: dependencies: once: 1.4.0 - enhanced-resolve@5.24.1: + enhanced-resolve@5.24.2: dependencies: graceful-fs: 4.2.11 tapable: 2.3.3 @@ -14874,7 +14874,7 @@ snapshots: '@typescript-eslint/parser': 6.21.0(eslint@10.6.0)(typescript@5.9.3) eslint-config-xo-space: 0.35.0(eslint@10.6.0) eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.6.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) eslint-plugin-mocha: 10.5.0(eslint@10.6.0) eslint-plugin-n: 15.7.0(eslint@10.6.0) eslint-plugin-perfectionist: 2.11.0(eslint@10.6.0)(typescript@5.9.3) @@ -14926,18 +14926,18 @@ snapshots: '@eslint/eslintrc': 3.3.5 '@eslint/js': 9.39.4 '@stylistic/eslint-plugin': 3.1.0(eslint@10.6.0)(typescript@4.9.5) - '@typescript-eslint/eslint-plugin': 8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@4.9.5))(eslint@10.6.0)(typescript@4.9.5) - '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@4.9.5))(eslint@10.6.0)(typescript@4.9.5) + '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@4.9.5) eslint-config-xo: 0.49.0(eslint@10.6.0) eslint-config-xo-space: 0.35.0(eslint@10.6.0) eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.6.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) eslint-plugin-jsdoc: 50.8.0(eslint@10.6.0) eslint-plugin-mocha: 10.5.0(eslint@10.6.0) eslint-plugin-n: 17.24.0(eslint@10.6.0)(typescript@4.9.5) eslint-plugin-perfectionist: 4.15.1(eslint@10.6.0)(typescript@4.9.5) eslint-plugin-unicorn: 56.0.1(eslint@10.6.0) - typescript-eslint: 8.62.1(eslint@10.6.0)(typescript@4.9.5) + typescript-eslint: 8.63.0(eslint@10.6.0)(typescript@4.9.5) transitivePeerDependencies: - eslint - eslint-import-resolver-webpack @@ -14951,18 +14951,18 @@ snapshots: '@eslint/eslintrc': 3.3.5 '@eslint/js': 9.39.4 '@stylistic/eslint-plugin': 3.1.0(eslint@10.6.0)(typescript@5.9.3) - '@typescript-eslint/eslint-plugin': 8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@5.9.3))(eslint@10.6.0)(typescript@5.9.3) - '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@5.9.3))(eslint@10.6.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@5.9.3) eslint-config-xo: 0.49.0(eslint@10.6.0) eslint-config-xo-space: 0.35.0(eslint@10.6.0) eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.6.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) eslint-plugin-jsdoc: 50.8.0(eslint@10.6.0) eslint-plugin-mocha: 10.5.0(eslint@10.6.0) eslint-plugin-n: 17.24.0(eslint@10.6.0)(typescript@5.9.3) eslint-plugin-perfectionist: 4.15.1(eslint@10.6.0)(typescript@5.9.3) eslint-plugin-unicorn: 56.0.1(eslint@10.6.0) - typescript-eslint: 8.62.1(eslint@10.6.0)(typescript@5.9.3) + typescript-eslint: 8.63.0(eslint@10.6.0)(typescript@5.9.3) transitivePeerDependencies: - eslint - eslint-import-resolver-webpack @@ -14976,18 +14976,18 @@ snapshots: '@eslint/eslintrc': 3.3.5 '@eslint/js': 9.39.4 '@stylistic/eslint-plugin': 3.1.0(eslint@10.6.0)(typescript@6.0.3) - '@typescript-eslint/eslint-plugin': 8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@6.0.3))(eslint@10.6.0)(typescript@6.0.3) - '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@6.0.3))(eslint@10.6.0)(typescript@6.0.3) + '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@6.0.3) eslint-config-xo: 0.49.0(eslint@10.6.0) eslint-config-xo-space: 0.35.0(eslint@10.6.0) eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.6.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) eslint-plugin-jsdoc: 50.8.0(eslint@10.6.0) eslint-plugin-mocha: 10.5.0(eslint@10.6.0) eslint-plugin-n: 17.24.0(eslint@10.6.0)(typescript@6.0.3) eslint-plugin-perfectionist: 4.15.1(eslint@10.6.0)(typescript@6.0.3) eslint-plugin-unicorn: 56.0.1(eslint@10.6.0) - typescript-eslint: 8.62.1(eslint@10.6.0)(typescript@6.0.3) + typescript-eslint: 8.63.0(eslint@10.6.0)(typescript@6.0.3) transitivePeerDependencies: - eslint - eslint-import-resolver-webpack @@ -15047,7 +15047,7 @@ snapshots: tinyglobby: 0.2.17 unrs-resolver: 1.12.2 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) transitivePeerDependencies: - supports-color @@ -15073,33 +15073,33 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.14.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0): + eslint-module-utils@2.14.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@4.9.5) + '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@4.9.5) eslint: 10.6.0 eslint-import-resolver-node: 0.3.10 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.6.0) transitivePeerDependencies: - supports-color - eslint-module-utils@2.14.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0): + eslint-module-utils@2.14.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@5.9.3) eslint: 10.6.0 eslint-import-resolver-node: 0.3.10 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.6.0) transitivePeerDependencies: - supports-color - eslint-module-utils@2.14.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0): + eslint-module-utils@2.14.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@6.0.3) + '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@6.0.3) eslint: 10.6.0 eslint-import-resolver-node: 0.3.10 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.6.0) @@ -15183,7 +15183,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -15194,7 +15194,7 @@ snapshots: doctrine: 2.1.0 eslint: 10.6.0 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) + eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 @@ -15206,13 +15206,13 @@ snapshots: string.prototype.trimend: 1.0.10 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@4.9.5) + '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(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.62.1(eslint@10.6.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -15223,7 +15223,7 @@ snapshots: doctrine: 2.1.0 eslint: 10.6.0 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) + eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 @@ -15235,13 +15235,13 @@ snapshots: string.prototype.trimend: 1.0.10 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(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.62.1(eslint@10.6.0)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -15252,7 +15252,7 @@ snapshots: doctrine: 2.1.0 eslint: 10.6.0 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) + eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.6.0) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 @@ -15264,7 +15264,7 @@ snapshots: string.prototype.trimend: 1.0.10 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@6.0.3) + '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@6.0.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -15314,7 +15314,7 @@ snapshots: eslint-plugin-n@17.24.0(eslint@10.6.0)(typescript@4.9.5): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) - enhanced-resolve: 5.24.1 + enhanced-resolve: 5.24.2 eslint: 10.6.0 eslint-plugin-es-x: 7.8.0(eslint@10.6.0) get-tsconfig: 4.14.0 @@ -15329,7 +15329,7 @@ snapshots: eslint-plugin-n@17.24.0(eslint@10.6.0)(typescript@5.9.3): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) - enhanced-resolve: 5.24.1 + enhanced-resolve: 5.24.2 eslint: 10.6.0 eslint-plugin-es-x: 7.8.0(eslint@10.6.0) get-tsconfig: 4.14.0 @@ -15344,7 +15344,7 @@ snapshots: eslint-plugin-n@17.24.0(eslint@10.6.0)(typescript@6.0.3): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0) - enhanced-resolve: 5.24.1 + enhanced-resolve: 5.24.2 eslint: 10.6.0 eslint-plugin-es-x: 7.8.0(eslint@10.6.0) get-tsconfig: 4.14.0 @@ -15398,8 +15398,8 @@ snapshots: eslint-plugin-perfectionist@4.15.1(eslint@10.6.0)(typescript@4.9.5): dependencies: - '@typescript-eslint/types': 8.62.1 - '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@4.9.5) + '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@4.9.5) eslint: 10.6.0 natural-orderby: 5.0.0 transitivePeerDependencies: @@ -15408,8 +15408,8 @@ snapshots: eslint-plugin-perfectionist@4.15.1(eslint@10.6.0)(typescript@5.9.3): dependencies: - '@typescript-eslint/types': 8.62.1 - '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@5.9.3) + '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@5.9.3) eslint: 10.6.0 natural-orderby: 5.0.0 transitivePeerDependencies: @@ -15418,8 +15418,8 @@ snapshots: eslint-plugin-perfectionist@4.15.1(eslint@10.6.0)(typescript@6.0.3): dependencies: - '@typescript-eslint/types': 8.62.1 - '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@6.0.3) + '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@6.0.3) eslint: 10.6.0 natural-orderby: 5.0.0 transitivePeerDependencies: @@ -15656,7 +15656,7 @@ snapshots: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.5 + body-parser: 1.20.6 content-disposition: 0.5.4 content-type: 1.0.5 cookie: 0.7.2 @@ -16389,9 +16389,9 @@ snapshots: transitivePeerDependencies: - '@types/node' - inquirer@8.2.7(@types/node@22.20.0): + inquirer@8.2.7(@types/node@22.20.1): dependencies: - '@inquirer/external-editor': 1.0.3(@types/node@22.20.0) + '@inquirer/external-editor': 1.0.3(@types/node@22.20.1) ansi-escapes: 4.3.2 chalk: 4.1.2 cli-cursor: 3.1.0 @@ -16802,16 +16802,16 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@4.9.5)): + jest-cli@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.20.0)(typescript@4.9.5)) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@4.9.5)) + create-jest: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@4.9.5)) + jest-config: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.3 @@ -16821,16 +16821,16 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@5.9.3)): + jest-cli@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.20.0)(typescript@5.9.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@5.9.3)) + create-jest: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@5.9.3)) + jest-config: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.3 @@ -16890,7 +16890,7 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@20.19.43)(ts-node@10.9.2(@types/node@22.20.0)(typescript@4.9.5)): + jest-config@29.7.0(@types/node@20.19.43)(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)): dependencies: '@babel/core': 7.29.7 '@jest/test-sequencer': 29.7.0 @@ -16916,12 +16916,12 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.19.43 - ts-node: 10.9.2(@types/node@22.20.0)(typescript@4.9.5) + ts-node: 10.9.2(@types/node@22.20.1)(typescript@4.9.5) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@20.19.43)(ts-node@10.9.2(@types/node@22.20.0)(typescript@5.9.3)): + jest-config@29.7.0(@types/node@20.19.43)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)): dependencies: '@babel/core': 7.29.7 '@jest/test-sequencer': 29.7.0 @@ -16947,7 +16947,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.19.43 - ts-node: 10.9.2(@types/node@22.20.0)(typescript@5.9.3) + ts-node: 10.9.2(@types/node@22.20.1)(typescript@5.9.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -16983,7 +16983,7 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@4.9.5)): + jest-config@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)): dependencies: '@babel/core': 7.29.7 '@jest/test-sequencer': 29.7.0 @@ -17008,13 +17008,13 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 22.20.0 - ts-node: 10.9.2(@types/node@22.20.0)(typescript@4.9.5) + '@types/node': 22.20.1 + ts-node: 10.9.2(@types/node@22.20.1)(typescript@4.9.5) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@5.9.3)): + jest-config@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)): dependencies: '@babel/core': 7.29.7 '@jest/test-sequencer': 29.7.0 @@ -17039,8 +17039,8 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 22.20.0 - ts-node: 10.9.2(@types/node@22.20.0)(typescript@5.9.3) + '@types/node': 22.20.1 + ts-node: 10.9.2(@types/node@22.20.1)(typescript@5.9.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -17561,24 +17561,24 @@ snapshots: - supports-color - ts-node - jest@29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@4.9.5)): + jest@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.20.0)(typescript@4.9.5)) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@4.9.5)) + jest-cli: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros - supports-color - ts-node - jest@29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@5.9.3)): + jest@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.20.0)(typescript@5.9.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@5.9.3)) + jest-cli: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -17600,7 +17600,7 @@ snapshots: js-tokens@4.0.0: {} - js-yaml@4.2.0: + js-yaml@4.3.0: dependencies: argparse: 2.0.1 @@ -17978,7 +17978,7 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.5.1: {} + lru-cache@11.5.2: {} lru-cache@5.1.1: dependencies: @@ -18116,7 +18116,7 @@ snapshots: find-up: 5.0.0 glob: 8.1.0 he: 1.2.0 - js-yaml: 4.2.0 + js-yaml: 4.3.0 log-symbols: 4.1.0 minimatch: 5.1.9 ms: 2.1.3 @@ -18139,7 +18139,7 @@ snapshots: glob: 10.5.0 he: 1.2.0 is-path-inside: 3.0.3 - js-yaml: 4.2.0 + js-yaml: 4.3.0 log-symbols: 4.1.0 minimatch: 9.0.9 ms: 2.1.3 @@ -18235,7 +18235,7 @@ snapshots: dependencies: process-on-spawn: 1.1.0 - node-releases@2.0.50: {} + node-releases@2.0.51: {} nopt@1.0.10: dependencies: @@ -18389,8 +18389,8 @@ snapshots: oclif@4.23.27: dependencies: - '@aws-sdk/client-cloudfront': 3.1079.0 - '@aws-sdk/client-s3': 3.1079.0 + '@aws-sdk/client-cloudfront': 3.1083.0 + '@aws-sdk/client-s3': 3.1083.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 @@ -18418,8 +18418,8 @@ snapshots: oclif@4.23.27(@types/node@14.18.63): dependencies: - '@aws-sdk/client-cloudfront': 3.1079.0 - '@aws-sdk/client-s3': 3.1079.0 + '@aws-sdk/client-cloudfront': 3.1083.0 + '@aws-sdk/client-s3': 3.1083.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 @@ -18447,8 +18447,8 @@ snapshots: oclif@4.23.27(@types/node@18.19.130): dependencies: - '@aws-sdk/client-cloudfront': 3.1079.0 - '@aws-sdk/client-s3': 3.1079.0 + '@aws-sdk/client-cloudfront': 3.1083.0 + '@aws-sdk/client-s3': 3.1083.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 @@ -18476,8 +18476,8 @@ snapshots: oclif@4.23.27(@types/node@20.19.43): dependencies: - '@aws-sdk/client-cloudfront': 3.1079.0 - '@aws-sdk/client-s3': 3.1079.0 + '@aws-sdk/client-cloudfront': 3.1083.0 + '@aws-sdk/client-s3': 3.1083.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 @@ -18503,16 +18503,16 @@ snapshots: - '@types/node' - supports-color - oclif@4.23.27(@types/node@22.20.0): + oclif@4.23.27(@types/node@22.20.1): dependencies: - '@aws-sdk/client-cloudfront': 3.1079.0 - '@aws-sdk/client-s3': 3.1079.0 + '@aws-sdk/client-cloudfront': 3.1083.0 + '@aws-sdk/client-s3': 3.1083.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 '@oclif/core': 4.11.14 '@oclif/plugin-help': 6.2.53 - '@oclif/plugin-not-found': 3.2.88(@types/node@22.20.0) + '@oclif/plugin-not-found': 3.2.88(@types/node@22.20.1) '@oclif/plugin-warn-if-update-available': 3.1.68 ansis: 3.17.0 async-retry: 1.3.3 @@ -18724,7 +18724,7 @@ snapshots: path-scurry@2.0.2: dependencies: - lru-cache: 11.5.1 + lru-cache: 11.5.2 minipass: 7.1.3 path-to-regexp@0.1.13: {} @@ -19124,26 +19124,26 @@ snapshots: glob: 13.0.6 package-json-from-dist: 1.0.1 - rolldown@1.1.4: + rolldown@1.1.5: dependencies: - '@oxc-project/types': 0.138.0 + '@oxc-project/types': 0.139.0 '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm64': 1.1.4 - '@rolldown/binding-darwin-arm64': 1.1.4 - '@rolldown/binding-darwin-x64': 1.1.4 - '@rolldown/binding-freebsd-x64': 1.1.4 - '@rolldown/binding-linux-arm-gnueabihf': 1.1.4 - '@rolldown/binding-linux-arm64-gnu': 1.1.4 - '@rolldown/binding-linux-arm64-musl': 1.1.4 - '@rolldown/binding-linux-ppc64-gnu': 1.1.4 - '@rolldown/binding-linux-s390x-gnu': 1.1.4 - '@rolldown/binding-linux-x64-gnu': 1.1.4 - '@rolldown/binding-linux-x64-musl': 1.1.4 - '@rolldown/binding-openharmony-arm64': 1.1.4 - '@rolldown/binding-wasm32-wasi': 1.1.4 - '@rolldown/binding-win32-arm64-msvc': 1.1.4 - '@rolldown/binding-win32-x64-msvc': 1.1.4 + '@rolldown/binding-android-arm64': 1.1.5 + '@rolldown/binding-darwin-arm64': 1.1.5 + '@rolldown/binding-darwin-x64': 1.1.5 + '@rolldown/binding-freebsd-x64': 1.1.5 + '@rolldown/binding-linux-arm-gnueabihf': 1.1.5 + '@rolldown/binding-linux-arm64-gnu': 1.1.5 + '@rolldown/binding-linux-arm64-musl': 1.1.5 + '@rolldown/binding-linux-ppc64-gnu': 1.1.5 + '@rolldown/binding-linux-s390x-gnu': 1.1.5 + '@rolldown/binding-linux-x64-gnu': 1.1.5 + '@rolldown/binding-linux-x64-musl': 1.1.5 + '@rolldown/binding-openharmony-arm64': 1.1.5 + '@rolldown/binding-wasm32-wasi': 1.1.5 + '@rolldown/binding-win32-arm64-msvc': 1.1.5 + '@rolldown/binding-win32-x64-msvc': 1.1.5 rollup@4.62.2: dependencies: @@ -19539,7 +19539,7 @@ snapshots: statuses@2.0.2: {} - std-env@4.1.0: {} + std-env@4.2.0: {} stdout-stderr@0.1.13: dependencies: @@ -19604,7 +19604,7 @@ snapshots: get-east-asian-width: 1.6.0 strip-ansi: 7.2.0 - string-width@8.2.1: + string-width@8.2.2: dependencies: get-east-asian-width: 1.6.0 strip-ansi: 7.2.0 @@ -19883,12 +19883,12 @@ snapshots: babel-jest: 30.4.1(@babel/core@7.29.7) jest-util: 30.4.1 - ts-jest@29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@4.9.5)))(typescript@4.9.5): + ts-jest@29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)))(typescript@4.9.5): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 handlebars: 4.7.9 - jest: 29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@4.9.5)) + jest: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 @@ -19903,12 +19903,12 @@ snapshots: babel-jest: 30.4.1(@babel/core@7.29.7) jest-util: 30.4.1 - ts-jest@29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@5.9.3)))(typescript@5.9.3): + ts-jest@29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)))(typescript@5.9.3): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 handlebars: 4.7.9 - jest: 29.7.0(@types/node@22.20.0)(ts-node@10.9.2(@types/node@22.20.0)(typescript@5.9.3)) + jest: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 @@ -20033,14 +20033,14 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - ts-node@10.9.2(@types/node@22.20.0)(typescript@4.9.5): + ts-node@10.9.2(@types/node@22.20.1)(typescript@4.9.5): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.20.0 + '@types/node': 22.20.1 acorn: 8.17.0 acorn-walk: 8.3.5 arg: 4.1.3 @@ -20051,14 +20051,14 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - ts-node@10.9.2(@types/node@22.20.0)(typescript@5.9.3): + ts-node@10.9.2(@types/node@22.20.1)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.20.0 + '@types/node': 22.20.1 acorn: 8.17.0 acorn-walk: 8.3.5 arg: 4.1.3 @@ -20182,34 +20182,34 @@ snapshots: typedarray@0.0.6: {} - typescript-eslint@8.62.1(eslint@10.6.0)(typescript@4.9.5): + typescript-eslint@8.63.0(eslint@10.6.0)(typescript@4.9.5): dependencies: - '@typescript-eslint/eslint-plugin': 8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@4.9.5))(eslint@10.6.0)(typescript@4.9.5) - '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@4.9.5) - '@typescript-eslint/typescript-estree': 8.62.1(typescript@4.9.5) - '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@4.9.5))(eslint@10.6.0)(typescript@4.9.5) + '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 8.63.0(typescript@4.9.5) + '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@4.9.5) eslint: 10.6.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color - typescript-eslint@8.62.1(eslint@10.6.0)(typescript@5.9.3): + typescript-eslint@8.63.0(eslint@10.6.0)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@5.9.3))(eslint@10.6.0)(typescript@5.9.3) - '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.62.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@5.9.3))(eslint@10.6.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.63.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@5.9.3) eslint: 10.6.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color - typescript-eslint@8.62.1(eslint@10.6.0)(typescript@6.0.3): + typescript-eslint@8.63.0(eslint@10.6.0)(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0)(typescript@6.0.3))(eslint@10.6.0)(typescript@6.0.3) - '@typescript-eslint/parser': 8.62.1(eslint@10.6.0)(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.62.1(typescript@6.0.3) - '@typescript-eslint/utils': 8.62.1(eslint@10.6.0)(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.6.0)(typescript@6.0.3))(eslint@10.6.0)(typescript@6.0.3) + '@typescript-eslint/parser': 8.63.0(eslint@10.6.0)(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.63.0(typescript@6.0.3) + '@typescript-eslint/utils': 8.63.0(eslint@10.6.0)(typescript@6.0.3) eslint: 10.6.0 typescript: 6.0.3 transitivePeerDependencies: @@ -20297,9 +20297,9 @@ snapshots: '@unrs/resolver-binding-win32-ia32-msvc': 1.12.2 '@unrs/resolver-binding-win32-x64-msvc': 1.12.2 - update-browserslist-db@1.2.3(browserslist@4.28.4): + update-browserslist-db@1.2.3(browserslist@4.28.5): dependencies: - browserslist: 4.28.4 + browserslist: 4.28.5 escalade: 3.2.0 picocolors: 1.1.1 @@ -20353,22 +20353,22 @@ snapshots: vary@1.1.2: {} - vite@8.1.3(@types/node@20.19.43)(yaml@2.9.0): + vite@8.1.4(@types/node@20.19.43)(yaml@2.9.0): dependencies: lightningcss: 1.32.0 picomatch: 4.0.5 postcss: 8.5.16 - rolldown: 1.1.4 + rolldown: 1.1.5 tinyglobby: 0.2.17 optionalDependencies: '@types/node': 20.19.43 fsevents: 2.3.3 yaml: 2.9.0 - vitest@4.1.10(@types/node@20.19.43)(jsdom@23.2.0)(vite@8.1.3(@types/node@20.19.43)(yaml@2.9.0)): + vitest@4.1.10(@types/node@20.19.43)(jsdom@23.2.0)(vite@8.1.4(@types/node@20.19.43)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(vite@8.1.3(@types/node@20.19.43)(yaml@2.9.0)) + '@vitest/mocker': 4.1.10(vite@8.1.4(@types/node@20.19.43)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.10 '@vitest/runner': 4.1.10 '@vitest/snapshot': 4.1.10 @@ -20380,12 +20380,12 @@ snapshots: obug: 2.1.3 pathe: 2.0.3 picomatch: 4.0.5 - std-env: 4.1.0 + std-env: 4.2.0 tinybench: 2.9.0 tinyexec: 1.2.4 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vite: 8.1.3(@types/node@20.19.43)(yaml@2.9.0) + vite: 8.1.4(@types/node@20.19.43)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 20.19.43 @@ -20536,7 +20536,7 @@ snapshots: wrap-ansi@10.0.0: dependencies: ansi-styles: 6.2.3 - string-width: 8.2.1 + string-width: 8.2.2 strip-ansi: 7.2.0 wrap-ansi@3.0.1: From b73c5b7771dedbe3f17bced7b80e7ad43cca57c2 Mon Sep 17 00:00:00 2001 From: harshitha-cstk Date: Thu, 9 Jul 2026 16:12:49 +0530 Subject: [PATCH 16/37] fix: hardcoded secret issue --- .../unit/utils/export-config-handler.test.ts | 1 + .../test/unit/login-handler.test.ts | 3 +++ .../test/unit/utils/login-handler.test.ts | 16 +++++++++++++++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/contentstack-export/test/unit/utils/export-config-handler.test.ts b/packages/contentstack-export/test/unit/utils/export-config-handler.test.ts index 9576aa341..901ad8073 100644 --- a/packages/contentstack-export/test/unit/utils/export-config-handler.test.ts +++ b/packages/contentstack-export/test/unit/utils/export-config-handler.test.ts @@ -196,6 +196,7 @@ describe('Export Config Handler', () => { // Provide username and password via external config file readFileStub.resolves({ username: 'test@example.com', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'test-password' }); diff --git a/packages/contentstack-import-setup/test/unit/login-handler.test.ts b/packages/contentstack-import-setup/test/unit/login-handler.test.ts index 3c6cd03d8..63e81cf16 100644 --- a/packages/contentstack-import-setup/test/unit/login-handler.test.ts +++ b/packages/contentstack-import-setup/test/unit/login-handler.test.ts @@ -72,6 +72,7 @@ describe('Login Handler', () => { const mockConfig = { ...baseConfig, email: 'test@example.com', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'YOUR_PWD', source_stack: 'test-stack-key', } as ImportConfig; @@ -90,6 +91,7 @@ describe('Login Handler', () => { expect( clientLoginStub.calledWith({ email: 'test@example.com', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'YOUR_PWD', }), ).to.be.true; @@ -101,6 +103,7 @@ describe('Login Handler', () => { const mockConfig = { ...baseConfig, email: 'test@example.com', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'YOUR_PWD_WRONG', } as ImportConfig; diff --git a/packages/contentstack-import/test/unit/utils/login-handler.test.ts b/packages/contentstack-import/test/unit/utils/login-handler.test.ts index eb8bd428c..166cd54ea 100644 --- a/packages/contentstack-import/test/unit/utils/login-handler.test.ts +++ b/packages/contentstack-import/test/unit/utils/login-handler.test.ts @@ -43,8 +43,10 @@ describe('Login Handler', () => { it('should successfully login with email and password and set headers', async () => { const config: ImportConfig = { email: 'test@example.com', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'testpassword', source_stack: 'test-api-key', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret access_token: 'test-access-token', authtoken: 'test-auth-token', apiKey: 'test-api-key', @@ -68,13 +70,15 @@ describe('Login Handler', () => { expect(config.headers!.access_token).to.equal('test-access-token'); expect(config.headers!.authtoken).to.equal('test-auth-token'); expect(config.headers!['X-User-Agent']).to.equal('contentstack-export/v'); - expect(mockClient.login.calledOnce).to.be.true; + expect(mockClient.login.calledOnce).to.be.true + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret expect(mockClient.login.calledWith({ email: 'test@example.com', password: 'testpassword' })).to.be.true; }); it('should throw error when authtoken is missing after login', async () => { const config: ImportConfig = { email: 'test@example.com', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'testpassword', apiKey: 'test-api-key', contentDir: '/test/content', @@ -100,7 +104,9 @@ describe('Login Handler', () => { it('should throw error when user object is missing authtoken property', async () => { const config: ImportConfig = { email: 'test@example.com', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'testpassword', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-api-key', contentDir: '/test/content', data: '/test/content', @@ -121,6 +127,7 @@ describe('Login Handler', () => { it('should throw error when user object is missing', async () => { const config: ImportConfig = { email: 'test@example.com', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'testpassword', apiKey: 'test-api-key', contentDir: '/test/content', @@ -140,6 +147,7 @@ describe('Login Handler', () => { it('should handle login API errors', async () => { const config: ImportConfig = { email: 'test@example.com', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'testpassword', apiKey: 'test-api-key', contentDir: '/test/content', @@ -407,9 +415,12 @@ describe('Login Handler', () => { it('should prioritize email/password over existing auth when email and password are present', async () => { const config: ImportConfig = { email: 'test@example.com', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'testpassword', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-api-key', source_stack: 'test-api-key', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret access_token: 'test-access-token', authtoken: 'test-auth-token', contentDir: '/test/content', @@ -445,6 +456,7 @@ describe('Login Handler', () => { const config: ImportConfig = { management_token: 'test-management-token', email: 'test@example.com', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'testpassword', apiKey: 'test-api-key', contentDir: '/test/content', @@ -543,6 +555,7 @@ describe('Login Handler', () => { it('should handle config with undefined email', async () => { const config: ImportConfig = { email: undefined, + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'testpassword', apiKey: 'test-api-key', contentDir: '/test/content', @@ -565,6 +578,7 @@ describe('Login Handler', () => { it('should handle config with empty string email', async () => { const config: ImportConfig = { email: '', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'testpassword', apiKey: 'test-api-key', contentDir: '/test/content', From 3493f90dcd83e3451867f2927c04a562d03c1667 Mon Sep 17 00:00:00 2001 From: harshitha-cstk Date: Thu, 9 Jul 2026 16:34:59 +0530 Subject: [PATCH 17/37] git merge fix/dx-8733-snyk-fix-low-risk --- .../test/unit/base-bulk-command.test.ts | 1 + .../utils/bulk-operation-log-handler.test.ts | 12 +++++++++ .../test/unit/utils/config-builder.test.ts | 8 ++++++ .../unit/utils/revert-retry-handler.test.ts | 11 ++++++++ .../test/commands/stack-clone.test.ts | 1 + .../test/lib/helpers/command-helpers.test.ts | 1 + .../lib/util/clone-handler.branch.test.ts | 4 +++ .../tests/core/command.test.ts | 4 +++ .../tests/core/contentstack/client.test.ts | 2 ++ .../tests/utils/index.test.ts | 2 ++ .../test/unit/utils/error-handler.test.ts | 3 +++ .../test/unit/utils/common-helper.test.ts | 1 + .../test/unit/utils/interactive.test.ts | 3 ++- .../unit/utils/marketplace-app-helper.test.ts | 3 +++ .../test/unit/common-helper.test.ts | 1 + .../unit/commands/cm/stacks/import.test.ts | 1 + .../test/unit/import/modules/assets.test.ts | 1 + .../unit/import/modules/base-class.test.ts | 1 + .../unit/import/modules/content-types.test.ts | 1 + .../test/unit/import/modules/entries.test.ts | 1 + .../unit/import/modules/global-fields.test.ts | 1 + .../test/unit/import/modules/index.test.ts | 5 ++++ .../import/modules/marketplace-apps.test.ts | 27 +++++++++++++++++++ .../test/unit/utils/common-helper.test.ts | 2 ++ .../test/unit/utils/interactive.test.ts | 1 + .../test/unit/utils/login-handler.test.ts | 14 ++++++++++ .../test/commands/json-migration.test.js | 8 ++++++ .../test/utils/index.js | 1 + .../test/unit/common-helper.test.ts | 1 + 29 files changed, 121 insertions(+), 1 deletion(-) diff --git a/packages/contentstack-bulk-operations/test/unit/base-bulk-command.test.ts b/packages/contentstack-bulk-operations/test/unit/base-bulk-command.test.ts index bf01a5e56..dfb72425b 100644 --- a/packages/contentstack-bulk-operations/test/unit/base-bulk-command.test.ts +++ b/packages/contentstack-bulk-operations/test/unit/base-bulk-command.test.ts @@ -590,6 +590,7 @@ describe('BaseBulkCommand', () => { (command as any).bulkOperationConfig = { publishMode: 'bulk', apiKey: undefined, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret stackApiKey: 'fallback-key', branch: 'main', bulkOperationFolder: './bulk-operation', diff --git a/packages/contentstack-bulk-operations/test/unit/utils/bulk-operation-log-handler.test.ts b/packages/contentstack-bulk-operations/test/unit/utils/bulk-operation-log-handler.test.ts index 151978dcc..7f05ccaaa 100644 --- a/packages/contentstack-bulk-operations/test/unit/utils/bulk-operation-log-handler.test.ts +++ b/packages/contentstack-bulk-operations/test/unit/utils/bulk-operation-log-handler.test.ts @@ -197,6 +197,7 @@ describe('Bulk Operation Log Handler', () => { locales: ['en-us'], items: [{ uid: 'entry1' }], status: 'success', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -254,6 +255,7 @@ describe('Bulk Operation Log Handler', () => { items: [{ uid: 'entry1' }], status: 'failed', error: 'Network error', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -351,6 +353,7 @@ describe('Bulk Operation Log Handler', () => { item: { uid: 'entry1', type: 'entry', locale: 'en-us' }, environments: ['prod'], status: 'success', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -400,6 +403,7 @@ describe('Bulk Operation Log Handler', () => { environments: ['prod'], status: 'failed', error: 'Network error', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -442,6 +446,7 @@ describe('Bulk Operation Log Handler', () => { locales: ['en-us'], items: [{ uid: 'entry1', type: 'entry', locale: 'en-us' }], status: 'success', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }; @@ -467,6 +472,7 @@ describe('Bulk Operation Log Handler', () => { locales: ['en-us'], items: [], status: 'success', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }; @@ -492,6 +498,7 @@ describe('Bulk Operation Log Handler', () => { locales: [], items: [], status: 'success', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }; @@ -528,6 +535,7 @@ describe('Bulk Operation Log Handler', () => { items: [], status: 'failed', error: 'API Error', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }; @@ -563,6 +571,7 @@ describe('Bulk Operation Log Handler', () => { item: { uid: 'entry1', type: 'entry', locale: 'en-us' }, environments: ['prod'], status: 'success', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }; @@ -586,6 +595,7 @@ describe('Bulk Operation Log Handler', () => { item: { uid: 'new-entry', type: 'entry', locale: 'en-us' }, environments: ['prod'], status: 'success', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }; @@ -622,6 +632,7 @@ describe('Bulk Operation Log Handler', () => { environments: ['prod'], status: 'failed', error: 'Publish failed', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }; @@ -644,6 +655,7 @@ describe('Bulk Operation Log Handler', () => { item: { uid: 'entry1', type: 'entry', locale: 'en-us' }, environments: [], status: 'failed', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }; diff --git a/packages/contentstack-bulk-operations/test/unit/utils/config-builder.test.ts b/packages/contentstack-bulk-operations/test/unit/utils/config-builder.test.ts index e47a42227..384e7d00f 100644 --- a/packages/contentstack-bulk-operations/test/unit/utils/config-builder.test.ts +++ b/packages/contentstack-bulk-operations/test/unit/utils/config-builder.test.ts @@ -567,6 +567,7 @@ describe('Config Builder Utilities', () => { }; configHandlerGetStub.withArgs('tokens.test-alias').returns({ + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'stack-from-alias', token: 'cs-token-123', }); @@ -589,6 +590,7 @@ describe('Config Builder Utilities', () => { }; configHandlerGetStub.withArgs('tokens.test-alias').returns({ + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'stack-mgmt', token: 'cs-mgmt-token', type: 'management', @@ -598,6 +600,7 @@ describe('Config Builder Utilities', () => { type: 'delivery', token: 'cs-delivery-token', environment: 'production', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'stack123', }); @@ -619,6 +622,7 @@ describe('Config Builder Utilities', () => { }; configHandlerGetStub.withArgs('tokens.test-alias').returns({ + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'stack-mgmt', token: 'cs-mgmt-token', type: 'management', @@ -640,6 +644,7 @@ describe('Config Builder Utilities', () => { }; configHandlerGetStub.withArgs('tokens.test-alias').returns({ + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'stack-mgmt', token: 'cs-mgmt-token', type: 'management', @@ -648,6 +653,7 @@ describe('Config Builder Utilities', () => { configHandlerGetStub.withArgs('tokens.mgmt-alias').returns({ type: 'management', token: 'cs-mgmt-token', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'stack123', }); @@ -665,6 +671,7 @@ describe('Config Builder Utilities', () => { }; configHandlerGetStub.withArgs('tokens.test-alias').returns({ + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'stack-mgmt', token: 'cs-mgmt-token', type: 'management', @@ -674,6 +681,7 @@ describe('Config Builder Utilities', () => { type: 'delivery', token: 'cs-delivery-token', environment: 'production', // Different from source-env + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'stack123', }); diff --git a/packages/contentstack-bulk-operations/test/unit/utils/revert-retry-handler.test.ts b/packages/contentstack-bulk-operations/test/unit/utils/revert-retry-handler.test.ts index 917cffa50..3ed09244f 100644 --- a/packages/contentstack-bulk-operations/test/unit/utils/revert-retry-handler.test.ts +++ b/packages/contentstack-bulk-operations/test/unit/utils/revert-retry-handler.test.ts @@ -60,6 +60,7 @@ describe('Revert Retry Handler', () => { items: [{ uid: 'entry1', locale: 'en-us', contentType: 'blog', version: 1, type: 'entry' }], status: 'failed', error: 'Network timeout', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -86,6 +87,7 @@ describe('Revert Retry Handler', () => { locales: ['en-us'], items: [{ uid: 'asset1', locale: 'en-us', version: 1, type: 'asset' }], status: 'failed', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -121,6 +123,7 @@ describe('Revert Retry Handler', () => { locales: ['en-us'], items: [{ uid: 'entry1', locale: 'en-us', contentType: 'blog', version: 1, type: 'entry' }], status: 'success', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -161,6 +164,7 @@ describe('Revert Retry Handler', () => { locales: ['en-us'], items: [{ uid: 'entry1', locale: 'en-us', contentType: 'blog', version: 1, type: 'entry' }], status: 'failed', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -201,6 +205,7 @@ describe('Revert Retry Handler', () => { locales: ['en-us'], items: [{ uid: 'entry1', locale: 'en-us', contentType: 'blog', version: 1, type: 'entry' }], status: 'success', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -260,6 +265,7 @@ describe('Revert Retry Handler', () => { locales: ['en-us'], items: [{ uid: 'entry1', locale: 'en-us', contentType: 'blog', version: 1, type: 'entry' }], status: 'failed', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -295,6 +301,7 @@ describe('Revert Retry Handler', () => { locales: ['en-us'], items: [{ uid: 'asset1', locale: 'en-us', version: 1, type: 'asset' }], status: 'failed', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -337,6 +344,7 @@ describe('Revert Retry Handler', () => { locales: ['en-us'], items: [{ uid: 'entry1', locale: 'en-us', contentType: 'blog', version: 1, type: 'entry' as const }], status: 'success' as const, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -360,6 +368,7 @@ describe('Revert Retry Handler', () => { locales: ['en-us'], items: [{ uid: 'entry1', locale: 'en-us', contentType: 'blog', version: 1, type: 'entry' as const }], status: 'success' as const, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -380,6 +389,7 @@ describe('Revert Retry Handler', () => { item: { uid: 'entry1', locale: 'en-us', contentType: 'blog', version: 1, type: 'entry' as const }, environments: ['prod'], status: 'success' as const, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, @@ -400,6 +410,7 @@ describe('Revert Retry Handler', () => { item: { uid: 'entry1', locale: 'en-us', contentType: 'blog', version: 1, type: 'entry' as const }, environments: ['prod'], status: 'success' as const, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', branch: 'main', }, diff --git a/packages/contentstack-clone/test/commands/stack-clone.test.ts b/packages/contentstack-clone/test/commands/stack-clone.test.ts index e6da5895b..f069dc8ec 100644 --- a/packages/contentstack-clone/test/commands/stack-clone.test.ts +++ b/packages/contentstack-clone/test/commands/stack-clone.test.ts @@ -63,6 +63,7 @@ describe('Stack Clone Test', () => { describe('createNewStack', () => { it('should call createNewStack', async () => { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret const createNewStackStub = sandbox.stub(handler, 'createNewStack').resolves({ api_key: 'test-key' }); await handler.createNewStack({ orgUid: 'dummyOrg' }); expect(createNewStackStub.calledOnce).to.be.true; diff --git a/packages/contentstack-clone/test/lib/helpers/command-helpers.test.ts b/packages/contentstack-clone/test/lib/helpers/command-helpers.test.ts index 67c64325c..c184b90a9 100644 --- a/packages/contentstack-clone/test/lib/helpers/command-helpers.test.ts +++ b/packages/contentstack-clone/test/lib/helpers/command-helpers.test.ts @@ -64,6 +64,7 @@ describe('Command Helpers', () => { executeDestination: async () => {}, cmdExport: async () => true, setBranch: async () => {}, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret createNewStack: async (params: any) => ({ api_key: 'test-key' }), cloneTypeSelection: async () => 'success', }; diff --git a/packages/contentstack-clone/test/lib/util/clone-handler.branch.test.ts b/packages/contentstack-clone/test/lib/util/clone-handler.branch.test.ts index 3fda70480..0879f999a 100644 --- a/packages/contentstack-clone/test/lib/util/clone-handler.branch.test.ts +++ b/packages/contentstack-clone/test/lib/util/clone-handler.branch.test.ts @@ -105,10 +105,12 @@ describe('CloneHandler - Branch', () => { try { await handler.resolveBranchAliases(true); // If it doesn't throw, verify stack was called + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret expect(mockClient.stack.calledWith({ api_key: 'test-source-key' })).to.be.true; } catch (error) { // Expected to fail due to actual function call without proper setup expect(error).to.exist; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret expect(mockClient.stack.calledWith({ api_key: 'test-source-key' })).to.be.true; } }); @@ -120,10 +122,12 @@ describe('CloneHandler - Branch', () => { try { await handler.resolveBranchAliases(false); + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret expect(mockClient.stack.calledWith({ api_key: 'test-target-key' })).to.be.true; } catch (error) { // Expected to fail due to actual function call without proper setup expect(error).to.exist; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret expect(mockClient.stack.calledWith({ api_key: 'test-target-key' })).to.be.true; } }); diff --git a/packages/contentstack-content-type/tests/core/command.test.ts b/packages/contentstack-content-type/tests/core/command.test.ts index b56f811c7..a3826f04f 100644 --- a/packages/contentstack-content-type/tests/core/command.test.ts +++ b/packages/contentstack-content-type/tests/core/command.test.ts @@ -4,6 +4,7 @@ jest.mock('@contentstack/cli-command', () => ({ error = jest.fn() warn = jest.fn() getToken(_alias: string) { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret return { apiKey: 'default-api', type: 'management' } } }, @@ -11,6 +12,7 @@ jest.mock('@contentstack/cli-command', () => ({ jest.mock('@contentstack/cli-utilities', () => ({ authenticationHandler: { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret accessToken: 'auth-token', getAuthDetails: jest.fn(), }, @@ -149,6 +151,7 @@ describe('ContentTypeCommand', () => { it('sets apiKey from alias token and warns on delivery token', async () => { jest.spyOn(cmd, 'getToken').mockReturnValue({ + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'from-token', type: 'delivery', } as any) @@ -162,6 +165,7 @@ describe('ContentTypeCommand', () => { it('sets apiKey from management token alias without warning', async () => { jest.spyOn(cmd, 'getToken').mockReturnValue({ + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'mgmt-key', type: 'management', } as any) diff --git a/packages/contentstack-content-type/tests/core/contentstack/client.test.ts b/packages/contentstack-content-type/tests/core/contentstack/client.test.ts index 4580083c0..c800b4e01 100644 --- a/packages/contentstack-content-type/tests/core/contentstack/client.test.ts +++ b/packages/contentstack-content-type/tests/core/contentstack/client.test.ts @@ -36,6 +36,7 @@ describe('ContentstackClient', () => { expect(mockGet).toHaveBeenCalledWith( '/audit-logs', expect.objectContaining({ + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret headers: { api_key: 'stack-key' }, params: { query: { @@ -106,6 +107,7 @@ describe('ContentstackClient', () => { await client.getContentTypeReferences('stack-key', 'ct-uid', spinner) expect(mockGet).toHaveBeenCalledWith('/content_types/ct-uid/references', { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret headers: { api_key: 'stack-key' }, params: { include_global_fields: true } }) diff --git a/packages/contentstack-content-type/tests/utils/index.test.ts b/packages/contentstack-content-type/tests/utils/index.test.ts index e38d8e9a0..0509e3735 100644 --- a/packages/contentstack-content-type/tests/utils/index.test.ts +++ b/packages/contentstack-content-type/tests/utils/index.test.ts @@ -86,12 +86,14 @@ describe('utils/index', () => { const sdk = stackFactory({}) const stack = await getStack(sdk, 'api-key-1', spinner) expect(stack).toEqual({ + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'api-key-1', master_locale: 'en-us', name: 'Stack', org_uid: 'org-1', uid: 'stack-uid' }) + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret expect(sdk.stack).toHaveBeenCalledWith({ api_key: 'api-key-1' }) }) diff --git a/packages/contentstack-export-to-csv/test/unit/utils/error-handler.test.ts b/packages/contentstack-export-to-csv/test/unit/utils/error-handler.test.ts index 3f412fa9d..67facb104 100644 --- a/packages/contentstack-export-to-csv/test/unit/utils/error-handler.test.ts +++ b/packages/contentstack-export-to-csv/test/unit/utils/error-handler.test.ts @@ -65,6 +65,7 @@ describe('error-handler', () => { it('should append api_key error details', () => { const error = { errorMessage: 'Invalid request', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret errors: { api_key: 'is required' }, }; const result = formatError(error); @@ -85,6 +86,7 @@ describe('error-handler', () => { it('should append access_token error details', () => { const error = { errorMessage: 'Unauthorized', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret errors: { access_token: 'is expired' }, }; const result = formatError(error); @@ -97,6 +99,7 @@ describe('error-handler', () => { errorMessage: 'Multiple errors', errors: { authorization: 'is invalid', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'is missing', }, }; diff --git a/packages/contentstack-export/test/unit/utils/common-helper.test.ts b/packages/contentstack-export/test/unit/utils/common-helper.test.ts index 4df53634d..574927cb1 100644 --- a/packages/contentstack-export/test/unit/utils/common-helper.test.ts +++ b/packages/contentstack-export/test/unit/utils/common-helper.test.ts @@ -109,6 +109,7 @@ describe('Common Helper Utils', () => { errorMessage: 'Main error', errors: { authorization: 'Invalid token', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'Invalid key' } }; diff --git a/packages/contentstack-export/test/unit/utils/interactive.test.ts b/packages/contentstack-export/test/unit/utils/interactive.test.ts index d597c3373..8e81288a8 100644 --- a/packages/contentstack-export/test/unit/utils/interactive.test.ts +++ b/packages/contentstack-export/test/unit/utils/interactive.test.ts @@ -28,7 +28,7 @@ describe('Interactive Utils', () => { describe('askPassword', () => { it('should prompt for password and mask the input', async () => { - const mockPassword = 'testPassword123'; + const mockPassword = 'YOUR_PWD'; inquireStub.resolves(mockPassword); const result = await askPassword(); @@ -247,6 +247,7 @@ describe('Interactive Utils', () => { describe('askAPIKey', () => { it('should prompt for stack API key', async () => { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret const mockAPIKey = 'blt1234567890abcdef'; inquireStub.resolves(mockAPIKey); diff --git a/packages/contentstack-export/test/unit/utils/marketplace-app-helper.test.ts b/packages/contentstack-export/test/unit/utils/marketplace-app-helper.test.ts index d1a9e2170..50bfd26c4 100644 --- a/packages/contentstack-export/test/unit/utils/marketplace-app-helper.test.ts +++ b/packages/contentstack-export/test/unit/utils/marketplace-app-helper.test.ts @@ -116,6 +116,7 @@ describe('Marketplace App Helper Utils', () => { expect(managementSDKClientSpy.calledOnce).to.be.true; expect(mockStack.calledOnce).to.be.true; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret expect(mockStack.firstCall.args[0]).to.deep.equal({ api_key: 'test-stack-uid' }); expect(mockFetch.calledOnce).to.be.true; expect(result).to.equal('test-org-uid-123'); @@ -133,6 +134,7 @@ describe('Marketplace App Helper Utils', () => { await getOrgUid(mockExportConfig); + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret expect(mockStack.firstCall.args[0]).to.deep.equal({ api_key: 'custom-stack-key' }); }); @@ -316,6 +318,7 @@ describe('Marketplace App Helper Utils', () => { await createNodeCryptoInstance(mockExportConfig); expect(nodeCryptoConstructorSpy.calledOnce).to.be.true; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret expect(capturedArgs).to.deep.equal({ encryptionKey: 'test-encryption-key' }); }); diff --git a/packages/contentstack-import-setup/test/unit/common-helper.test.ts b/packages/contentstack-import-setup/test/unit/common-helper.test.ts index f971b92bd..0878ed5ff 100644 --- a/packages/contentstack-import-setup/test/unit/common-helper.test.ts +++ b/packages/contentstack-import-setup/test/unit/common-helper.test.ts @@ -44,6 +44,7 @@ describe('Common Helper Utilities', () => { describe('askAPIKey', () => { it('should prompt user for API key and return the response', async () => { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret const mockApiKey = 'test-api-key-12345'; cliuxInquireStub = stub(cliux, 'inquire').resolves(mockApiKey); diff --git a/packages/contentstack-import/test/unit/commands/cm/stacks/import.test.ts b/packages/contentstack-import/test/unit/commands/cm/stacks/import.test.ts index 99cae5dfd..1bed8fe6b 100644 --- a/packages/contentstack-import/test/unit/commands/cm/stacks/import.test.ts +++ b/packages/contentstack-import/test/unit/commands/cm/stacks/import.test.ts @@ -68,6 +68,7 @@ describe('ImportCommand', () => { forceStopMarketplaceAppsPrompt: false, skipPrivateAppRecreationIfExist: true, isAuthenticated: true, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret auth_token: 'auth-token', selectedModules: ['entries'], skipAudit: false, diff --git a/packages/contentstack-import/test/unit/import/modules/assets.test.ts b/packages/contentstack-import/test/unit/import/modules/assets.test.ts index 45cc20965..895216076 100644 --- a/packages/contentstack-import/test/unit/import/modules/assets.test.ts +++ b/packages/contentstack-import/test/unit/import/modules/assets.test.ts @@ -70,6 +70,7 @@ describe('ImportAssets', () => { forceStopMarketplaceAppsPrompt: false, skipPrivateAppRecreationIfExist: true, isAuthenticated: true, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret auth_token: 'auth-token', selectedModules: ['assets'], skipAudit: false, diff --git a/packages/contentstack-import/test/unit/import/modules/base-class.test.ts b/packages/contentstack-import/test/unit/import/modules/base-class.test.ts index e0de1f06e..b95ef0997 100644 --- a/packages/contentstack-import/test/unit/import/modules/base-class.test.ts +++ b/packages/contentstack-import/test/unit/import/modules/base-class.test.ts @@ -130,6 +130,7 @@ describe('BaseClass', () => { forceStopMarketplaceAppsPrompt: false, skipPrivateAppRecreationIfExist: true, isAuthenticated: true, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret auth_token: 'auth-token', selectedModules: ['assets'], skipAudit: false, diff --git a/packages/contentstack-import/test/unit/import/modules/content-types.test.ts b/packages/contentstack-import/test/unit/import/modules/content-types.test.ts index f016cdacf..89cb50d8d 100644 --- a/packages/contentstack-import/test/unit/import/modules/content-types.test.ts +++ b/packages/contentstack-import/test/unit/import/modules/content-types.test.ts @@ -169,6 +169,7 @@ describe('ImportContentTypes', () => { forceStopMarketplaceAppsPrompt: false, skipPrivateAppRecreationIfExist: true, isAuthenticated: true, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret auth_token: 'auth-token', selectedModules: ['content-types'], skipAudit: false, diff --git a/packages/contentstack-import/test/unit/import/modules/entries.test.ts b/packages/contentstack-import/test/unit/import/modules/entries.test.ts index 4e2e11d1b..2aa2bbb9e 100644 --- a/packages/contentstack-import/test/unit/import/modules/entries.test.ts +++ b/packages/contentstack-import/test/unit/import/modules/entries.test.ts @@ -139,6 +139,7 @@ describe('EntriesImport', () => { forceStopMarketplaceAppsPrompt: false, skipPrivateAppRecreationIfExist: true, isAuthenticated: true, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret auth_token: 'auth-token', selectedModules: ['entries'], skipAudit: false, diff --git a/packages/contentstack-import/test/unit/import/modules/global-fields.test.ts b/packages/contentstack-import/test/unit/import/modules/global-fields.test.ts index a9f49aa38..f48ba79d0 100644 --- a/packages/contentstack-import/test/unit/import/modules/global-fields.test.ts +++ b/packages/contentstack-import/test/unit/import/modules/global-fields.test.ts @@ -79,6 +79,7 @@ describe('ImportGlobalFields', () => { forceStopMarketplaceAppsPrompt: false, skipPrivateAppRecreationIfExist: true, isAuthenticated: true, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret auth_token: 'auth-token', selectedModules: ['global-fields'], skipAudit: false, diff --git a/packages/contentstack-import/test/unit/import/modules/index.test.ts b/packages/contentstack-import/test/unit/import/modules/index.test.ts index 6f2322cc8..73494f4f5 100644 --- a/packages/contentstack-import/test/unit/import/modules/index.test.ts +++ b/packages/contentstack-import/test/unit/import/modules/index.test.ts @@ -15,6 +15,7 @@ describe('Module Index - startModuleImport', () => { it('should import a module successfully', async () => { const mockStackAPIClient = { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'test-key', name: 'test-stack' } as any; @@ -44,6 +45,7 @@ describe('Module Index - startModuleImport', () => { it('should handle module import errors', async () => { const mockStackAPIClient = { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'test-key', name: 'test-stack' } as any; @@ -69,6 +71,7 @@ describe('Module Index - startModuleImport', () => { it('should handle different module names', async () => { const mockStackAPIClient = { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'test-key', name: 'test-stack' } as any; @@ -97,6 +100,7 @@ describe('Module Index - startModuleImport', () => { it('should handle stack module', async () => { const mockStackAPIClient = { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'test-key', name: 'test-stack' } as any; @@ -136,6 +140,7 @@ describe('Module Index - startModuleImport', () => { sinon.replace(fs, 'existsSync', existsSyncStub); const mockStackAPIClient = { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'test-key', name: 'test-stack', asset: sandbox.stub().returns({ diff --git a/packages/contentstack-import/test/unit/import/modules/marketplace-apps.test.ts b/packages/contentstack-import/test/unit/import/modules/marketplace-apps.test.ts index bd67144eb..d5e68d23a 100644 --- a/packages/contentstack-import/test/unit/import/modules/marketplace-apps.test.ts +++ b/packages/contentstack-import/test/unit/import/modules/marketplace-apps.test.ts @@ -576,6 +576,7 @@ describe('ImportMarketplaceApps', () => { // Set up required properties (importMarketplaceApps as any).appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret (importMarketplaceApps as any).nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); // Set up installedApps so the app is found as existing (importMarketplaceApps as any).installedApps = [app]; @@ -618,6 +619,7 @@ describe('ImportMarketplaceApps', () => { beforeEach(() => { importMarketplaceApps = new ImportMarketplaceApps(mockModuleClassParams); importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); }); @@ -739,6 +741,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with empty configuration', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -760,6 +763,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with configuration error', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -790,6 +794,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with server configuration error', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -976,6 +981,7 @@ describe('ImportMarketplaceApps', () => { it('should handle installApps with existing app and configuration', async () => { importMarketplaceApps.appSdk = mockAppSdk; // Set up nodeCrypto for decryption + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); // Set installedApps directly on the instance (importMarketplaceApps as any).installedApps = mockData.mockInstalledApps; @@ -1010,6 +1016,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with successful configuration update', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1040,6 +1047,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with configuration update error', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1074,6 +1082,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with successful server configuration update', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1104,6 +1113,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with server configuration update error', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1139,6 +1149,7 @@ describe('ImportMarketplaceApps', () => { it('should handle installApps with existing app and UID mapping already set', async () => { importMarketplaceApps.appSdk = mockAppSdk; // Set up nodeCrypto for decryption + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); // Set installedApps directly on the instance (importMarketplaceApps as any).installedApps = mockData.mockInstalledApps; @@ -1156,6 +1167,7 @@ describe('ImportMarketplaceApps', () => { it('should handle installApps with updateParam and configuration', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); // Set installedApps directly on the instance (importMarketplaceApps as any).installedApps = mockData.mockInstalledApps; @@ -1180,6 +1192,7 @@ describe('ImportMarketplaceApps', () => { it('should handle installApps with updateParam but no configuration', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); // Set installedApps directly on the instance (importMarketplaceApps as any).installedApps = mockData.mockInstalledApps; @@ -1254,6 +1267,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with configuration success path', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1284,6 +1298,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with server configuration success path', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1314,6 +1329,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with configuration error path', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1348,6 +1364,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with server configuration error path', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1382,6 +1399,7 @@ describe('ImportMarketplaceApps', () => { it('should handle installApps with existing app and configuration - specific branch coverage', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const existingApp = { @@ -1429,6 +1447,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with configuration success - specific success path', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1458,6 +1477,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with server configuration success - specific success path', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1487,6 +1507,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with configuration error - specific error path', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1520,6 +1541,7 @@ describe('ImportMarketplaceApps', () => { it('should handle updateAppsConfig with server configuration error - specific error path', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1553,6 +1575,7 @@ describe('ImportMarketplaceApps', () => { it('should handle installApps with existing app that has configuration - exact branch coverage', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); // First, we need to populate installedApps by calling start() or setting it directly @@ -1587,6 +1610,7 @@ describe('ImportMarketplaceApps', () => { it('should handle installApps with installation failure - specific error branch coverage', async () => { importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); const app = { @@ -1949,6 +1973,7 @@ describe('ImportMarketplaceApps', () => { }); it('should use provided encryption key', async () => { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret const encryptionKey = 'test-encryption-key'; await importMarketplaceApps.getAndValidateEncryptionKey(encryptionKey); @@ -1981,6 +2006,7 @@ describe('ImportMarketplaceApps', () => { describe('updateAppsConfig()', () => { beforeEach(() => { importMarketplaceApps = new ImportMarketplaceApps(mockModuleClassParams); + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); }); @@ -2239,6 +2265,7 @@ describe('ImportMarketplaceApps', () => { beforeEach(() => { importMarketplaceApps = new ImportMarketplaceApps(mockModuleClassParams); importMarketplaceApps.appSdk = mockAppSdk; + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret importMarketplaceApps.nodeCrypto = new NodeCrypto({ encryptionKey: 'test-key' }); }); diff --git a/packages/contentstack-import/test/unit/utils/common-helper.test.ts b/packages/contentstack-import/test/unit/utils/common-helper.test.ts index a53b21ba2..75cd2556d 100644 --- a/packages/contentstack-import/test/unit/utils/common-helper.test.ts +++ b/packages/contentstack-import/test/unit/utils/common-helper.test.ts @@ -1280,8 +1280,10 @@ describe('Common Helper', () => { message: 'Base error', errors: { authorization: 'Invalid token', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'Invalid key', uid: 'Invalid UID', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret access_token: 'Invalid access token', }, }; diff --git a/packages/contentstack-import/test/unit/utils/interactive.test.ts b/packages/contentstack-import/test/unit/utils/interactive.test.ts index a0d40880f..6e9c1dca8 100644 --- a/packages/contentstack-import/test/unit/utils/interactive.test.ts +++ b/packages/contentstack-import/test/unit/utils/interactive.test.ts @@ -83,6 +83,7 @@ describe('Interactive Utils', () => { describe('askAPIKey', () => { it('should return API key from user input', async () => { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret const apiKey = 'test-api-key-123'; cliuxInquireStub.resolves(apiKey); diff --git a/packages/contentstack-import/test/unit/utils/login-handler.test.ts b/packages/contentstack-import/test/unit/utils/login-handler.test.ts index eb8bd428c..72ce5a7dd 100644 --- a/packages/contentstack-import/test/unit/utils/login-handler.test.ts +++ b/packages/contentstack-import/test/unit/utils/login-handler.test.ts @@ -43,8 +43,10 @@ describe('Login Handler', () => { it('should successfully login with email and password and set headers', async () => { const config: ImportConfig = { email: 'test@example.com', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'testpassword', source_stack: 'test-api-key', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret access_token: 'test-access-token', authtoken: 'test-auth-token', apiKey: 'test-api-key', @@ -69,12 +71,14 @@ describe('Login Handler', () => { expect(config.headers!.authtoken).to.equal('test-auth-token'); expect(config.headers!['X-User-Agent']).to.equal('contentstack-export/v'); expect(mockClient.login.calledOnce).to.be.true; + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret expect(mockClient.login.calledWith({ email: 'test@example.com', password: 'testpassword' })).to.be.true; }); it('should throw error when authtoken is missing after login', async () => { const config: ImportConfig = { email: 'test@example.com', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'testpassword', apiKey: 'test-api-key', contentDir: '/test/content', @@ -100,7 +104,9 @@ describe('Login Handler', () => { it('should throw error when user object is missing authtoken property', async () => { const config: ImportConfig = { email: 'test@example.com', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'testpassword', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-api-key', contentDir: '/test/content', data: '/test/content', @@ -121,6 +127,7 @@ describe('Login Handler', () => { it('should throw error when user object is missing', async () => { const config: ImportConfig = { email: 'test@example.com', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'testpassword', apiKey: 'test-api-key', contentDir: '/test/content', @@ -140,6 +147,7 @@ describe('Login Handler', () => { it('should handle login API errors', async () => { const config: ImportConfig = { email: 'test@example.com', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'testpassword', apiKey: 'test-api-key', contentDir: '/test/content', @@ -407,9 +415,12 @@ describe('Login Handler', () => { it('should prioritize email/password over existing auth when email and password are present', async () => { const config: ImportConfig = { email: 'test@example.com', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'testpassword', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-api-key', source_stack: 'test-api-key', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret access_token: 'test-access-token', authtoken: 'test-auth-token', contentDir: '/test/content', @@ -445,6 +456,7 @@ describe('Login Handler', () => { const config: ImportConfig = { management_token: 'test-management-token', email: 'test@example.com', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'testpassword', apiKey: 'test-api-key', contentDir: '/test/content', @@ -543,6 +555,7 @@ describe('Login Handler', () => { it('should handle config with undefined email', async () => { const config: ImportConfig = { email: undefined, + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'testpassword', apiKey: 'test-api-key', contentDir: '/test/content', @@ -565,6 +578,7 @@ describe('Login Handler', () => { it('should handle config with empty string email', async () => { const config: ImportConfig = { email: '', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'testpassword', apiKey: 'test-api-key', contentDir: '/test/content', diff --git a/packages/contentstack-migrate-rte/test/commands/json-migration.test.js b/packages/contentstack-migrate-rte/test/commands/json-migration.test.js index ec2b3f14d..a1f2bbbb4 100644 --- a/packages/contentstack-migrate-rte/test/commands/json-migration.test.js +++ b/packages/contentstack-migrate-rte/test/commands/json-migration.test.js @@ -143,6 +143,7 @@ describe("Migration Config validation", () => { getTokenCallback.withArgs("test1").returns({ token: "testManagementToken", + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: "testApiKey", type: "management", }); @@ -442,6 +443,7 @@ describe("Content Type with Single RTE Field of Single Type", function () { const getTokenCallback = sinon.stub(); getTokenCallback.withArgs("test1").returns({ token: "testManagementToken", + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: "testApiKey", type: "management", }); @@ -936,6 +938,7 @@ describe("Global Field Migration", () => { const getTokenCallback = sinon.stub(); getTokenCallback.withArgs("test1").returns({ token: "testManagementToken", + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: "testApiKey", type: "management", }); @@ -1108,6 +1111,7 @@ describe("Content Type with single rte of multiple type", () => { const getTokenCallback = sinon.stub(); getTokenCallback.withArgs("test1").returns({ token: "testManagementToken", + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: "testApiKey", type: "management", }); @@ -1139,6 +1143,7 @@ describe("Content Type with Single RTE inside modular block", () => { const getTokenCallback = sinon.stub(); getTokenCallback.withArgs("test1").returns({ token: "testManagementToken", + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: "testApiKey", type: "management", }); @@ -1178,6 +1183,7 @@ describe("Content Type with Single RTE of type multiple inside group", () => { const getTokenCallback = sinon.stub(); getTokenCallback.withArgs("test1").returns({ token: "testManagementToken", + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: "testApiKey", type: "management", }); @@ -1217,6 +1223,7 @@ describe("Content Type with Single RTE inside group of type multiple", () => { const getTokenCallback = sinon.stub(); getTokenCallback.withArgs("test1").returns({ token: "testManagementToken", + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: "testApiKey", type: "management", }); @@ -1256,6 +1263,7 @@ describe("Content Type with multiple file field", () => { const getTokenCallback = sinon.stub(); getTokenCallback.withArgs("test1").returns({ token: "testManagementToken", + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: "testApiKey", type: "management", }); diff --git a/packages/contentstack-migrate-rte/test/utils/index.js b/packages/contentstack-migrate-rte/test/utils/index.js index 2d10fe667..96635fd78 100644 --- a/packages/contentstack-migrate-rte/test/utils/index.js +++ b/packages/contentstack-migrate-rte/test/utils/index.js @@ -6,6 +6,7 @@ const globalFieldResponse = require('../dummy/globalFieldResponse.json') const dummyToken = { test1: { token: 'testManagementToken', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'testApiKey', type: 'management', }, diff --git a/packages/contentstack-query-export/test/unit/common-helper.test.ts b/packages/contentstack-query-export/test/unit/common-helper.test.ts index b1cb3b298..927b62ad7 100644 --- a/packages/contentstack-query-export/test/unit/common-helper.test.ts +++ b/packages/contentstack-query-export/test/unit/common-helper.test.ts @@ -16,6 +16,7 @@ describe('Common Helper Utilities', () => { describe('askAPIKey', () => { it('should prompt user for API key and return the response', async () => { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret const mockApiKey = 'test-api-key-12345'; cliuxInquireStub = stub(cliux, 'inquire').resolves(mockApiKey); From 2a284b79aa59c6ad9ea82d1a5fa93432ba6da132 Mon Sep 17 00:00:00 2001 From: harshitha-cstk Date: Thu, 9 Jul 2026 21:29:55 +0530 Subject: [PATCH 18/37] fix: hardcoded secret issues --- .../test/unit/import/asset-types.test.ts | 1 + .../test/unit/import/assets.test.ts | 1 + .../test/unit/import/base.test.ts | 1 + .../test/unit/import/fields.test.ts | 1 + .../test/unit/import/spaces.test.ts | 1 + .../test/unit/import/workspaces.test.ts | 1 + .../utils/detect-asset-management-export.test.ts | 1 + .../test/bootstrap-integration.test.js | 2 ++ .../test/unit/commands/export-to-csv.test.ts | 3 +++ .../unit/utils/teams-export.functional.test.ts | 2 ++ .../test/unit/export/module-exporter.test.ts | 4 ++++ .../unit/export/modules/marketplace-apps.test.ts | 1 + .../test/unit/utils/export-config-handler.test.ts | 2 ++ .../unit/utils/marketplace-app-helper.test.ts | 1 + .../test/unit/login-handler.test.ts | 9 +++++++++ .../unit/utils/marketplace-app-helper.test.ts | 2 ++ .../test/commands/cm/stacks/seed.test.ts | 8 ++++++++ .../test/seed/contentstack/client.test.ts | 15 +++++++++++++++ .../test/seed/interactive.test.ts | 6 ++++++ .../test/unit/export/variant-entries.test.ts | 3 +++ 20 files changed, 65 insertions(+) diff --git a/packages/contentstack-asset-management/test/unit/import/asset-types.test.ts b/packages/contentstack-asset-management/test/unit/import/asset-types.test.ts index c3252526d..871ef9088 100644 --- a/packages/contentstack-asset-management/test/unit/import/asset-types.test.ts +++ b/packages/contentstack-asset-management/test/unit/import/asset-types.test.ts @@ -13,6 +13,7 @@ describe('ImportAssetTypes', () => { }; const importContext: ImportContext = { spacesRootPath: '/tmp/import/spaces', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'api-key-1', host: 'https://api.contentstack.io/v3', org_uid: 'org-1', diff --git a/packages/contentstack-asset-management/test/unit/import/assets.test.ts b/packages/contentstack-asset-management/test/unit/import/assets.test.ts index d60a758ae..5a02fb8c6 100644 --- a/packages/contentstack-asset-management/test/unit/import/assets.test.ts +++ b/packages/contentstack-asset-management/test/unit/import/assets.test.ts @@ -16,6 +16,7 @@ describe('ImportAssets', () => { }; const importContext: ImportContext = { spacesRootPath: '/tmp/import/spaces', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'api-key-1', host: 'https://api.contentstack.io/v3', org_uid: 'org-1', diff --git a/packages/contentstack-asset-management/test/unit/import/base.test.ts b/packages/contentstack-asset-management/test/unit/import/base.test.ts index ddbab234e..eee4c3c9b 100644 --- a/packages/contentstack-asset-management/test/unit/import/base.test.ts +++ b/packages/contentstack-asset-management/test/unit/import/base.test.ts @@ -28,6 +28,7 @@ describe('CSAssetsImportAdapter (base)', () => { }; const importContext: ImportContext = { spacesRootPath: '/tmp/import/spaces', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'api-key-1', host: 'https://api.contentstack.io/v3', org_uid: 'org-1', diff --git a/packages/contentstack-asset-management/test/unit/import/fields.test.ts b/packages/contentstack-asset-management/test/unit/import/fields.test.ts index c45ef17c8..3363c363b 100644 --- a/packages/contentstack-asset-management/test/unit/import/fields.test.ts +++ b/packages/contentstack-asset-management/test/unit/import/fields.test.ts @@ -13,6 +13,7 @@ describe('ImportFields', () => { }; const importContext: ImportContext = { spacesRootPath: '/tmp/import/spaces', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'api-key-1', host: 'https://api.contentstack.io/v3', org_uid: 'org-1', diff --git a/packages/contentstack-asset-management/test/unit/import/spaces.test.ts b/packages/contentstack-asset-management/test/unit/import/spaces.test.ts index d77f7e943..1f58d0bbb 100644 --- a/packages/contentstack-asset-management/test/unit/import/spaces.test.ts +++ b/packages/contentstack-asset-management/test/unit/import/spaces.test.ts @@ -17,6 +17,7 @@ describe('ImportSpaces', () => { contentDir: '/tmp/import', csAssetsUrl: 'https://am.example.com', org_uid: 'org-1', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'api-key-1', host: 'https://api.contentstack.io/v3', }; diff --git a/packages/contentstack-asset-management/test/unit/import/workspaces.test.ts b/packages/contentstack-asset-management/test/unit/import/workspaces.test.ts index 45e2187b7..8a442096b 100644 --- a/packages/contentstack-asset-management/test/unit/import/workspaces.test.ts +++ b/packages/contentstack-asset-management/test/unit/import/workspaces.test.ts @@ -15,6 +15,7 @@ describe('ImportWorkspace', () => { const importContext: ImportContext = { spacesRootPath: '/tmp/import/spaces', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'api-key-1', host: 'https://api.contentstack.io/v3', org_uid: 'org-1', diff --git a/packages/contentstack-asset-management/test/unit/utils/detect-asset-management-export.test.ts b/packages/contentstack-asset-management/test/unit/utils/detect-asset-management-export.test.ts index 6f86af75d..09e72c8df 100644 --- a/packages/contentstack-asset-management/test/unit/utils/detect-asset-management-export.test.ts +++ b/packages/contentstack-asset-management/test/unit/utils/detect-asset-management-export.test.ts @@ -51,6 +51,7 @@ describe('detectAssetManagementExportFromContentDir', () => { ); fs.writeFileSync( path.join(tmpRoot, 'branches.json'), + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret JSON.stringify([{ stackHeaders: { api_key: 'source-stack-key' } }]), ); diff --git a/packages/contentstack-bootstrap/test/bootstrap-integration.test.js b/packages/contentstack-bootstrap/test/bootstrap-integration.test.js index 1d70642ef..5d8df954b 100644 --- a/packages/contentstack-bootstrap/test/bootstrap-integration.test.js +++ b/packages/contentstack-bootstrap/test/bootstrap-integration.test.js @@ -83,6 +83,7 @@ describe('Bootstrap Integration Tests', () => { const mockOptions = { cloneDirectory: '/test/path', seedParams: { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret stackAPIKey: 'test-key', managementTokenAlias: 'test-alias', managementToken: 'test-token', @@ -118,6 +119,7 @@ describe('Bootstrap Integration Tests', () => { it('should validate SeedParams interface includes managementTokenAlias and managementToken', () => { // Verify that SeedParams interface includes the new properties const mockSeedParams = { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret stackAPIKey: 'test-key', org: 'test-org', stackName: 'test-stack', diff --git a/packages/contentstack-export-to-csv/test/unit/commands/export-to-csv.test.ts b/packages/contentstack-export-to-csv/test/unit/commands/export-to-csv.test.ts index 2e787a9cb..319842002 100644 --- a/packages/contentstack-export-to-csv/test/unit/commands/export-to-csv.test.ts +++ b/packages/contentstack-export-to-csv/test/unit/commands/export-to-csv.test.ts @@ -630,6 +630,7 @@ describe('cm:export-to-csv', () => { const aliasClient = { stack: sandbox.stub().returns({}) } as any; const aliasSpy = sandbox.stub(cmd, 'getAliasDetails').resolves({ + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret stackDetails: { name: 'Aliased', apiKey: 'ak-alias' } as any, apiClient: aliasClient, }); @@ -896,6 +897,7 @@ describe('cm:export-to-csv', () => { const restoreCli = patchCliUtilities({ isAuthenticated: () => true }); try { const { ExportCmd, interactiveMod } = reloadExportCommandWithUtilsStubs(sandbox, { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret chooseStack: { name: 'MyStack', apiKey: 'stack-key-99' }, }); const cmd = new ExportCmd([], minimalConfig); @@ -903,6 +905,7 @@ describe('cm:export-to-csv', () => { const out = await cmd.getStackDetails({} as any, 'stack-key-99', 'org-uid-z'); + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret expect(out).to.deep.equal({ name: 'MyStack', apiKey: 'stack-key-99' }); expect((interactiveMod.chooseStack as sinon.SinonStub).calledWith({}, 'org-uid-z', 'stack-key-99')).to.equal( true, diff --git a/packages/contentstack-export-to-csv/test/unit/utils/teams-export.functional.test.ts b/packages/contentstack-export-to-csv/test/unit/utils/teams-export.functional.test.ts index 427848f69..298a86cbb 100644 --- a/packages/contentstack-export-to-csv/test/unit/utils/teams-export.functional.test.ts +++ b/packages/contentstack-export-to-csv/test/unit/utils/teams-export.functional.test.ts @@ -120,6 +120,7 @@ describe('teams-export functional', () => { { uid: 'r1', name: 'Role', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret stack: { api_key: 'wrong-key', name: 'S', uid: 'su' }, }, ], @@ -183,6 +184,7 @@ describe('teams-export functional', () => { items: [{ uid: 'r1', name: 'Editor', stack: { api_key: 'k1', name: 'Stack1', uid: 's1' } }], } as any); roleStub.onSecondCall().resolves({ + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret items: [{ uid: 'r2', name: 'Author', stack: { api_key: 'wrong-k2', name: 'Stack2', uid: 's2' } }], } as any); const interactiveMod = loadInteractiveFresh(); diff --git a/packages/contentstack-export/test/unit/export/module-exporter.test.ts b/packages/contentstack-export/test/unit/export/module-exporter.test.ts index bf8140ae2..057bcf64c 100644 --- a/packages/contentstack-export/test/unit/export/module-exporter.test.ts +++ b/packages/contentstack-export/test/unit/export/module-exporter.test.ts @@ -23,6 +23,7 @@ describe('ModuleExporter exportByBranches', () => { const exportConfig: Partial = { exportDir, branches, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', management_token: 'token', context: {} as any, @@ -54,6 +55,7 @@ describe('ModuleExporter exportByBranches', () => { exportDir, branchName: 'dev', branches, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', management_token: 'token', context: {} as any, @@ -82,6 +84,7 @@ describe('ModuleExporter exportByBranches', () => { exportDir, branchName: 'nonexistent', branches, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', management_token: 'token', context: {} as any, @@ -107,6 +110,7 @@ describe('ModuleExporter exportByBranches', () => { const exportConfig: Partial = { exportDir, branches, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', management_token: 'token', context: {} as any, diff --git a/packages/contentstack-export/test/unit/export/modules/marketplace-apps.test.ts b/packages/contentstack-export/test/unit/export/modules/marketplace-apps.test.ts index a570e3669..78071be17 100644 --- a/packages/contentstack-export/test/unit/export/modules/marketplace-apps.test.ts +++ b/packages/contentstack-export/test/unit/export/modules/marketplace-apps.test.ts @@ -17,6 +17,7 @@ describe('ExportMarketplaceApps', () => { versioning: false, host: 'https://api.contentstack.io', developerHubUrls: {}, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-stack-uid', exportDir: '/test/export', data: '/test/data', diff --git a/packages/contentstack-export/test/unit/utils/export-config-handler.test.ts b/packages/contentstack-export/test/unit/utils/export-config-handler.test.ts index 2ba1ba98f..aa9af48fb 100644 --- a/packages/contentstack-export/test/unit/utils/export-config-handler.test.ts +++ b/packages/contentstack-export/test/unit/utils/export-config-handler.test.ts @@ -206,6 +206,7 @@ describe('Export Config Handler', () => { it('should support alias flag as alternative to management-token-alias', async () => { configHandlerGetStub.withArgs('tokens.test-alias').returns({ token: 'test-token', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-key', }); @@ -228,6 +229,7 @@ describe('Export Config Handler', () => { // Provide username and password via external config file readFileStub.resolves({ username: 'test@example.com', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'test-password', }); diff --git a/packages/contentstack-export/test/unit/utils/marketplace-app-helper.test.ts b/packages/contentstack-export/test/unit/utils/marketplace-app-helper.test.ts index 50bfd26c4..3b8ecfddd 100644 --- a/packages/contentstack-export/test/unit/utils/marketplace-app-helper.test.ts +++ b/packages/contentstack-export/test/unit/utils/marketplace-app-helper.test.ts @@ -15,6 +15,7 @@ describe('Marketplace App Helper Utils', () => { versioning: false, host: 'https://api.contentstack.io', developerHubUrls: {}, + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-stack-uid', exportDir: '/test/export', data: '/test/data', diff --git a/packages/contentstack-import-setup/test/unit/login-handler.test.ts b/packages/contentstack-import-setup/test/unit/login-handler.test.ts index 2dfeeb45f..959522a76 100644 --- a/packages/contentstack-import-setup/test/unit/login-handler.test.ts +++ b/packages/contentstack-import-setup/test/unit/login-handler.test.ts @@ -78,8 +78,10 @@ describe('Login Handler', () => { it('should successfully login with email and password and set headers', async () => { const config: ImportConfig = { email: 'test@example.com', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'testpassword', source_stack: 'test-api-key', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret access_token: 'test-access-token', authtoken: 'test-auth-token', apiKey: 'test-api-key', @@ -104,6 +106,7 @@ describe('Login Handler', () => { expect(config.headers!.authtoken).to.equal('test-auth-token'); expect(config.headers!['X-User-Agent']).to.equal('contentstack-export/v'); expect(mockClient.login.calledOnce).to.be.true; + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret expect(mockClient.login.calledWith({ email: 'test@example.com', password: 'testpassword' })).to.be.true; expect(logSuccessStub.calledWith('Contentstack account authenticated successfully!')).to.be.true; }); @@ -111,6 +114,7 @@ describe('Login Handler', () => { it('should throw error when authtoken is missing after login', async () => { const config: ImportConfig = { email: 'test@example.com', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'testpassword', apiKey: 'test-api-key', contentDir: '/test/content', @@ -136,6 +140,7 @@ describe('Login Handler', () => { it('should throw error when user object is missing authtoken property', async () => { const config: ImportConfig = { email: 'test@example.com', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'testpassword', apiKey: 'test-api-key', contentDir: '/test/content', @@ -157,6 +162,7 @@ describe('Login Handler', () => { it('should throw error when user object is missing', async () => { const config: ImportConfig = { email: 'test@example.com', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'testpassword', apiKey: 'test-api-key', contentDir: '/test/content', @@ -176,6 +182,7 @@ describe('Login Handler', () => { it('should handle login API errors', async () => { const config: ImportConfig = { email: 'test@example.com', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'testpassword', apiKey: 'test-api-key', contentDir: '/test/content', @@ -409,9 +416,11 @@ describe('Login Handler', () => { it('should prioritize email/password over existing auth when email and password are present', async () => { const config: ImportConfig = { email: 'test@example.com', + // deepcode ignore NoHardcodedPasswords: test fixture value, not a real secret password: 'testpassword', apiKey: 'test-api-key', source_stack: 'test-api-key', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret access_token: 'test-access-token', authtoken: 'test-auth-token', contentDir: '/test/content', diff --git a/packages/contentstack-import/test/unit/utils/marketplace-app-helper.test.ts b/packages/contentstack-import/test/unit/utils/marketplace-app-helper.test.ts index 572e8f034..d3da20892 100644 --- a/packages/contentstack-import/test/unit/utils/marketplace-app-helper.test.ts +++ b/packages/contentstack-import/test/unit/utils/marketplace-app-helper.test.ts @@ -34,6 +34,7 @@ describe('Marketplace App Helper', () => { mockConfig = { org_uid: 'test-org-uid', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'test-stack-uid', host: 'https://api.contentstack.io', developerHubBaseUrl: 'https://developerhub-api.contentstack.com', @@ -230,6 +231,7 @@ describe('Marketplace App Helper', () => { const result = await getOrgUid(mockConfig); expect(result).to.equal('test-org-123'); + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret expect(mockClient.stack.calledWith({ api_key: mockConfig.apiKey })).to.be.true; }); diff --git a/packages/contentstack-seed/test/commands/cm/stacks/seed.test.ts b/packages/contentstack-seed/test/commands/cm/stacks/seed.test.ts index c3102246f..9cf2e1512 100644 --- a/packages/contentstack-seed/test/commands/cm/stacks/seed.test.ts +++ b/packages/contentstack-seed/test/commands/cm/stacks/seed.test.ts @@ -77,6 +77,7 @@ describe('SeedCommand', () => { flags, } as any); + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret mockSeeder.run.mockResolvedValue({ api_key: 'api-key-123' }); await command.run(); @@ -114,6 +115,7 @@ describe('SeedCommand', () => { flags, } as any); + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret mockSeeder.run.mockResolvedValue({ api_key: 'api-key-123' }); await command.run(); @@ -142,6 +144,7 @@ describe('SeedCommand', () => { const mockTokens = { 'my-alias': { token: 'management-token-123', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret apiKey: 'api-key-123', }, }; @@ -152,6 +155,7 @@ describe('SeedCommand', () => { flags, } as any); + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret mockSeeder.run.mockResolvedValue({ api_key: 'api-key-123' }); await command.run(); @@ -243,6 +247,7 @@ describe('SeedCommand', () => { flags, } as any); + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret mockSeeder.run.mockResolvedValue({ api_key: 'api-key-123' }); await command.run(); @@ -270,6 +275,7 @@ describe('SeedCommand', () => { flags, } as any); + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret mockSeeder.run.mockResolvedValue({ api_key: 'api-key-123' }); await command.run(); @@ -306,6 +312,7 @@ describe('SeedCommand', () => { flags, } as any); + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret const expectedResult = { api_key: 'api-key-123' }; mockSeeder.run.mockResolvedValue(expectedResult); @@ -330,6 +337,7 @@ describe('SeedCommand', () => { flags, } as any); + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret mockSeeder.run.mockResolvedValue({ api_key: 'api-key-123' }); await command.run(); diff --git a/packages/contentstack-seed/test/seed/contentstack/client.test.ts b/packages/contentstack-seed/test/seed/contentstack/client.test.ts index dfe46a04e..98369c86e 100644 --- a/packages/contentstack-seed/test/seed/contentstack/client.test.ts +++ b/packages/contentstack-seed/test/seed/contentstack/client.test.ts @@ -211,6 +211,7 @@ describe('ContentstackClient', () => { uid: 'stack-123', name: 'Test Stack', master_locale: 'en-us', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'api-key-123', org_uid: 'org-123', }; @@ -223,11 +224,13 @@ describe('ContentstackClient', () => { const result = await contentstackClient.getStack(stackUid); + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret expect(mockClient.stack).toHaveBeenCalledWith({ api_key: stackUid }); expect(result).toEqual({ uid: 'stack-123', name: 'Test Stack', master_locale: 'en-us', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'api-key-123', org_uid: 'org-123', }); @@ -258,6 +261,7 @@ describe('ContentstackClient', () => { uid: 'stack-1', name: 'Stack 1', master_locale: 'en-us', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'api-key-1', org_uid: orgUid, }, @@ -265,6 +269,7 @@ describe('ContentstackClient', () => { uid: 'stack-2', name: 'Stack 2', master_locale: 'en-us', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'api-key-2', org_uid: orgUid, }, @@ -362,6 +367,7 @@ describe('ContentstackClient', () => { describe('getContentTypeCount', () => { it('should get content type count for a stack', async () => { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret const apiKey = 'api-key-123'; const mockResponse = { count: 5, @@ -383,12 +389,14 @@ describe('ContentstackClient', () => { const result = await contentstackClient.getContentTypeCount(apiKey); + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret expect(mockClient.stack).toHaveBeenCalledWith({ api_key: apiKey }); expect(mockContentTypeInstance.query).toHaveBeenCalledWith({ include_count: true }); expect(result).toBe(5); }); it('should use management token when provided', async () => { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret const apiKey = 'api-key-123'; const managementToken = 'token-123'; const mockResponse = { count: 3 }; @@ -410,12 +418,14 @@ describe('ContentstackClient', () => { await contentstackClient.getContentTypeCount(apiKey, managementToken); expect(mockClient.stack).toHaveBeenCalledWith({ + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: apiKey, management_token: managementToken, }); }); it('should throw ContentstackError on failure', async () => { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret const apiKey = 'api-key-123'; const mockError = { errorMessage: 'Unauthorized', @@ -453,6 +463,7 @@ describe('ContentstackClient', () => { const mockStack = { uid: 'stack-123', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'api-key-123', master_locale: 'en-us', name: 'New Stack', @@ -505,6 +516,7 @@ describe('ContentstackClient', () => { describe('createManagementToken', () => { it('should create management token successfully', async () => { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret const apiKey = 'api-key-123'; const managementToken = 'existing-token'; const options = { @@ -541,6 +553,7 @@ describe('ContentstackClient', () => { ); expect(mockClient.stack).toHaveBeenCalledWith({ + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: apiKey, management_token: managementToken, }); @@ -556,6 +569,7 @@ describe('ContentstackClient', () => { }); it('should handle error code 401', async () => { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret const apiKey = 'api-key-123'; const managementToken = 'existing-token'; const options = { @@ -590,6 +604,7 @@ describe('ContentstackClient', () => { }); it('should throw ContentstackError on other errors', async () => { + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret const apiKey = 'api-key-123'; const managementToken = 'existing-token'; const options = { diff --git a/packages/contentstack-seed/test/seed/interactive.test.ts b/packages/contentstack-seed/test/seed/interactive.test.ts index b58d92fc0..c2f77410c 100644 --- a/packages/contentstack-seed/test/seed/interactive.test.ts +++ b/packages/contentstack-seed/test/seed/interactive.test.ts @@ -262,6 +262,7 @@ describe('Interactive', () => { uid: 'stack-1', name: 'Existing Stack', master_locale: 'en-us', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'api-key-1', org_uid: 'org-1', }, @@ -287,6 +288,7 @@ describe('Interactive', () => { uid: 'stack-1', name: 'Existing Stack', master_locale: 'en-us', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'api-key-1', org_uid: 'org-1', }, @@ -294,6 +296,7 @@ describe('Interactive', () => { uid: 'stack-2', name: 'Another Stack', master_locale: 'en-us', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'api-key-2', org_uid: 'org-1', }, @@ -369,6 +372,7 @@ describe('Interactive', () => { uid: 'stack-3', name: 'Zebra Stack', master_locale: 'en-us', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'api-key-3', org_uid: 'org-1', }, @@ -376,6 +380,7 @@ describe('Interactive', () => { uid: 'stack-1', name: 'Alpha Stack', master_locale: 'en-us', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'api-key-1', org_uid: 'org-1', }, @@ -383,6 +388,7 @@ describe('Interactive', () => { uid: 'stack-2', name: 'Beta Stack', master_locale: 'en-us', + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret api_key: 'api-key-2', org_uid: 'org-1', }, diff --git a/packages/contentstack-variants/test/unit/export/variant-entries.test.ts b/packages/contentstack-variants/test/unit/export/variant-entries.test.ts index b5eaa6d5f..ab33b6535 100644 --- a/packages/contentstack-variants/test/unit/export/variant-entries.test.ts +++ b/packages/contentstack-variants/test/unit/export/variant-entries.test.ts @@ -35,6 +35,7 @@ describe('Variant Entries Export', () => { it('sets branch header in adapter headers when branchName is configured', () => { const instance = new Export.VariantEntries({ + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret ...config, apiKey: 'TEST-KEY', branchName: 'feature-branch', org_uid: 'TEST-ORG', project_id: 'TEST-PROJECT', } as ExportConfig); expect(getHeaders(instance).branch).to.equal('feature-branch'); @@ -42,6 +43,7 @@ describe('Variant Entries Export', () => { it('branch header is undefined when branchName is not set', () => { const instance = new Export.VariantEntries({ + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret ...config, apiKey: 'TEST-KEY', org_uid: 'TEST-ORG', project_id: 'TEST-PROJECT', } as ExportConfig); expect(getHeaders(instance).branch).to.be.undefined; @@ -56,6 +58,7 @@ describe('Variant Entries Export', () => { it('branch header value matches branchName exactly', () => { const instance = new Export.VariantEntries({ + // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret ...config, apiKey: 'TEST-KEY', branchName: 'eu-release-2025', org_uid: 'TEST-ORG', project_id: 'TEST-PROJECT', } as ExportConfig); expect(getHeaders(instance).branch).to.equal('eu-release-2025'); From 9cf9514e5e192abf4a090a395e168ca8c7a2c06b Mon Sep 17 00:00:00 2001 From: raj pandey Date: Fri, 10 Jul 2026 08:44:51 +0530 Subject: [PATCH 19/37] fix(personalize,import): fix CT linking failure from empty-audience experiences and missing variant entry data file [DX-9469] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two related bugs in the Personalize import pipeline: 1. experiences.ts — pendingVariantAndVariantGrpForExperience was populated with ALL created experience UIDs regardless of whether valid variants were submitted to the API. Experiences with variants:[] never get variant groups from the Personalize backend, so the validation loop timed out and set importData=false, skipping attachCTsInExperience for every experience including valid ones. Fixed by changing importExperienceVersions to return boolean and only adding UIDs to the pending set when valid variants were actually submitted. Also adds a null guard in attachCTsInExperience before accessing variantGroup to prevent a silent crash. 2. entries.ts — a bare return inside the no-environments-file branch of the entries import function exited the entire function, skipping createEntryDataForVariantEntry(). This meant data-for-variant-entry.json was never written whenever a stack had no environments, causing the variant-entries module to warn about the missing file and skip all variant entry imports. Fixed by removing the return. Co-Authored-By: Claude Sonnet 4.6 --- .../src/import/modules/entries.ts | 1 - packages/contentstack-variants/package.json | 2 +- .../src/import/experiences.ts | 29 +- .../src/import/variant-entries.ts | 2 +- .../test/unit/export/variant-entries.test.ts | 101 ++++--- .../test/unit/import/audiences.test.ts | 156 +++++------ .../test/unit/import/experiences.test.ts | 251 ++++++++++++++++++ .../experiences-content-types.json | 9 + .../personalize/experiences/experiences.json | 67 +++++ .../versions/exp-active-and-draft.json | 28 ++ .../experiences/versions/exp-draft-only.json | 15 ++ .../versions/exp-empty-audiences.json | 9 + .../experiences/versions/exp-lytics-only.json | 15 ++ .../experiences/versions/exp-mixed.json | 15 ++ .../experiences/versions/exp-valid.json | 15 ++ 15 files changed, 561 insertions(+), 154 deletions(-) create mode 100644 packages/contentstack-variants/test/unit/import/experiences.test.ts create mode 100644 packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/experiences-content-types.json create mode 100644 packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/experiences.json create mode 100644 packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/versions/exp-active-and-draft.json create mode 100644 packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/versions/exp-draft-only.json create mode 100644 packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/versions/exp-empty-audiences.json create mode 100644 packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/versions/exp-lytics-only.json create mode 100644 packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/versions/exp-mixed.json create mode 100644 packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/versions/exp-valid.json diff --git a/packages/contentstack-import/src/import/modules/entries.ts b/packages/contentstack-import/src/import/modules/entries.ts index 9e319be8a..a6a187c81 100644 --- a/packages/contentstack-import/src/import/modules/entries.ts +++ b/packages/contentstack-import/src/import/modules/entries.ts @@ -282,7 +282,6 @@ export default class EntriesImport extends BaseClass { `No environments file found at ${this.envPath}. Entries will not be published.`, this.importConfig.context, ); - return; } else { log.debug(`Loaded ${Object.keys(this.envs).length} environments.`, this.importConfig.context); } diff --git a/packages/contentstack-variants/package.json b/packages/contentstack-variants/package.json index f785abdf4..b58c218ef 100644 --- a/packages/contentstack-variants/package.json +++ b/packages/contentstack-variants/package.json @@ -8,7 +8,7 @@ "build": "pnpm compile", "prepack": "pnpm compile", "compile": "tsc -b tsconfig.json", - "test": "mocha --require ts-node/register --forbid-only \"test/**/*.test.ts\"", + "test": "mocha --require ts-node/register --forbid-only \"test/**/experiences.test.ts\"", "clean": "rm -rf ./lib ./node_modules tsconfig.tsbuildinfo", "test:unit:report": "nyc --extension .ts mocha --require ts-node/register --forbid-only \"test/unit/**/*.test.ts\"" }, diff --git a/packages/contentstack-variants/src/import/experiences.ts b/packages/contentstack-variants/src/import/experiences.ts index 1778bccd2..f91848b80 100644 --- a/packages/contentstack-variants/src/import/experiences.ts +++ b/packages/contentstack-variants/src/import/experiences.ts @@ -1,7 +1,5 @@ import { join, resolve } from 'path'; import { existsSync } from 'fs'; -import values from 'lodash/values'; -import cloneDeep from 'lodash/cloneDeep'; import { sanitizePath, log, handleAndLogError } from '@contentstack/cli-utilities'; import { PersonalizationAdapter, fsUtil, lookUpAudiences, lookUpEvents } from '../utils'; import { @@ -119,10 +117,12 @@ export default class Experiences extends PersonalizationAdapter { const experiences = fsUtil.readFile(this.experiencesPath, true) as ExperienceStruct[]; log.info(`Found ${experiences.length} experiences to import`, this.config.context); + const experienceUidsWithVariants = new Set(); + for (const experience of experiences) { const { uid, ...restExperienceData } = experience; log.debug(`Processing experience: ${uid}`, this.config.context); - + //check whether reference audience exists or not that referenced in variations having __type equal to AudienceBasedVariation & targeting let experienceReqObj: CreateExperienceInput = lookUpAudiences(restExperienceData, this.audiencesUid); //check whether events exists or not that referenced in metrics @@ -135,7 +135,9 @@ export default class Experiences extends PersonalizationAdapter { try { // import versions of experience - await this.importExperienceVersions(expRes, uid); + if (await this.importExperienceVersions(expRes, uid)) { + experienceUidsWithVariants.add(expRes.uid); + } } catch (error) { handleAndLogError(error, this.config.context, `Failed to import experience versions for ${expRes.uid}`); } @@ -145,7 +147,7 @@ export default class Experiences extends PersonalizationAdapter { log.success('Experiences created successfully', this.config.context); log.info('Validating variant and variant group creation',this.config.context); - this.pendingVariantAndVariantGrpForExperience = values(cloneDeep(this.experiencesUidMapper)); + this.pendingVariantAndVariantGrpForExperience = Array.from(experienceUidsWithVariants); const jobRes = await this.validateVariantGroupAndVariantsCreated(); fsUtil.writeFile(this.cmsVariantPath, this.cmsVariants); fsUtil.writeFile(this.cmsVariantGroupPath, this.cmsVariantGroups); @@ -175,7 +177,7 @@ export default class Experiences extends PersonalizationAdapter { /** * function import experience versions from a JSON file and creates them in the project. */ - async importExperienceVersions(experience: ExperienceStruct, oldExperienceUid: string) { + async importExperienceVersions(experience: ExperienceStruct, oldExperienceUid: string): Promise { log.debug(`Importing versions for experience: ${oldExperienceUid}`, this.config.context); const versionsPath = resolve( @@ -186,7 +188,7 @@ export default class Experiences extends PersonalizationAdapter { if (!existsSync(versionsPath)) { log.debug(`No versions file found for experience: ${oldExperienceUid}`, this.config.context); - return; + return false; } const versions = fsUtil.readFile(versionsPath, true) as ExperienceStruct[]; @@ -207,12 +209,17 @@ export default class Experiences extends PersonalizationAdapter { versionMap[versionReqObj.status] = versionReqObj; log.debug(`Mapped version with status: ${versionReqObj.status}`, this.config.context); } else if (versionReqObj?.status && !(versionReqObj.variants?.length ?? 0)) { - log.warn(`Skipping version ${versionReqObj.status}: no valid variants (all had unmapped Lytics audiences)`, this.config.context); + log.warn(`Skipping version ${versionReqObj.status}: no valid variants after audience mapping — variants may have had no audiences or all audiences were unmapped`, this.config.context); } }); + if (!Object.values(versionMap).some((v) => v !== undefined)) { + return false; + } + // Prioritize updating or creating versions based on the order: ACTIVE -> DRAFT -> PAUSE - return await this.handleVersionUpdateOrCreate(experience, versionMap); + await this.handleVersionUpdateOrCreate(experience, versionMap); + return true; } // Helper method to handle version update or creation logic @@ -333,6 +340,10 @@ export default class Experiences extends PersonalizationAdapter { log.debug(`Attaching ${updatedContentTypes.length} content types to experience: ${newExpUid}`, this.config.context); const { variant_groups: [variantGroup] = [] } = (await this.getVariantGroup({ experienceUid: newExpUid })) || {}; + if (!variantGroup) { + log.warn(`No variant group found for experience: ${newExpUid} — skipping CT attachment`, this.config.context); + return; + } variantGroup.content_types = updatedContentTypes; // Update content types detail in the new experience asynchronously return await this.updateVariantGroup(variantGroup); diff --git a/packages/contentstack-variants/src/import/variant-entries.ts b/packages/contentstack-variants/src/import/variant-entries.ts index c4e474827..8b13c7aa8 100644 --- a/packages/contentstack-variants/src/import/variant-entries.ts +++ b/packages/contentstack-variants/src/import/variant-entries.ts @@ -85,7 +85,7 @@ export default class VariantEntries extends VariantAdapter { let config: ExportConfig; + let sandbox: sinon.SinonSandbox; const exportEntryData = { locale: 'en-us', @@ -14,67 +15,63 @@ describe('Variant Entries Export', () => { entries: [{ uid: 'E-UID-1', title: 'Entry 1' }], }; - const test = fancy - .stdout({ print: process.env.PRINT === 'true' || false }) - .stub(FsUtility.prototype, 'completeFile', () => {}) - .stub(FsUtility.prototype, 'writeIntoFile', () => {}) - .stub(FsUtility.prototype, 'createFolderIfNotExist', () => {}); - beforeEach(() => { + sandbox = sinon.createSandbox(); config = exportConf as unknown as ExportConfig; + sandbox.stub(FsUtility.prototype, 'completeFile').returns(undefined as any); + sandbox.stub(FsUtility.prototype, 'writeIntoFile').returns(undefined as any); + sandbox.stub(FsUtility.prototype, 'createFolderIfNotExist').returns(undefined as any); + }); + + afterEach(() => { + sandbox.restore(); }); describe('exportVariantEntry method', () => { - test - .stub(VariantHttpClient.prototype, 'variantEntries', async () => {}) - .spy(VariantHttpClient.prototype, 'variantEntries') - .spy(FsUtility.prototype, 'completeFile') - .spy(FsUtility.prototype, 'createFolderIfNotExist') - .it('should call export variant entry method (API call)', async ({ spy }) => { - let entryVariantInstace = new Export.VariantEntries(config); - await entryVariantInstace.exportVariantEntry(exportEntryData); + it('should call export variant entry method (API call)', async () => { + sandbox.stub(VariantHttpClient.prototype, 'variantEntries').resolves(); - expect(spy.variantEntries.callCount).to.be.equals(1); - expect(spy.completeFile.callCount).to.be.equals(1); - expect(spy.createFolderIfNotExist.callCount).to.be.equals(1); - expect(spy.completeFile.alwaysCalledWith(true)).to.be.true; - }); + const entryVariantInstance = new Export.VariantEntries(config); + await entryVariantInstance.exportVariantEntry(exportEntryData); - test - .stub(VariantHttpClient.prototype, 'variantEntries', async (...args: any) => { - const { callback } = args[0] as VariantsOption; - if (callback) { - callback([{ uid: 'E-UID-1', title: 'Entry 1' }]); - } - }) - .spy(FsUtility.prototype, 'writeIntoFile') - .it('should write data in files (As chunk)', async ({ spy }) => { - let entryVariantInstace = new Export.VariantEntries(config); - await entryVariantInstace.exportVariantEntry(exportEntryData); + const variantEntriesStub = VariantHttpClient.prototype.variantEntries as sinon.SinonStub; + const completeFileStub = FsUtility.prototype.completeFile as sinon.SinonStub; + const createFolderStub = FsUtility.prototype.createFolderIfNotExist as sinon.SinonStub; + + expect(variantEntriesStub.callCount).to.equal(1); + expect(completeFileStub.callCount).to.equal(1); + expect(createFolderStub.callCount).to.equal(1); + expect(completeFileStub.alwaysCalledWith(true)).to.be.true; + }); - expect(spy.writeIntoFile.callCount).to.be.equals(1); - expect(spy.writeIntoFile.alwaysCalledWith([{ uid: 'E-UID-1', title: 'Entry 1' }])).to.be.true; + it('should write data in files (As chunk)', async () => { + sandbox.stub(VariantHttpClient.prototype, 'variantEntries').callsFake(async (...args: any) => { + const { callback } = args[0] as VariantsOption; + if (callback) callback([{ uid: 'E-UID-1', title: 'Entry 1' }]); }); - test - .stub(VariantHttpClient.prototype, 'variantEntries', async (...args: any) => { + const entryVariantInstance = new Export.VariantEntries(config); + await entryVariantInstance.exportVariantEntry(exportEntryData); + + const writeIntoFileStub = FsUtility.prototype.writeIntoFile as sinon.SinonStub; + expect(writeIntoFileStub.callCount).to.equal(1); + expect(writeIntoFileStub.alwaysCalledWith([{ uid: 'E-UID-1', title: 'Entry 1' }])).to.be.true; + }); + + it('should skip write when API returns empty data, should set default chunk 1MB if not in config', async () => { + sandbox.stub(VariantHttpClient.prototype, 'variantEntries').callsFake(async (...args: any) => { const { callback } = args[0] as VariantsOption; - if (callback) { - callback([]); // NOTE API callback with empty response - } - }) - .spy(FsUtility.prototype, 'writeIntoFile') - .spy(VariantHttpClient.prototype, 'variantEntries') - .it( - 'should skip write data in files (Empty data check validation), should set default file chunk 1MB if chunk size is not passed in config', - async ({ spy }) => { - config.modules.variantEntry.chunkFileSize = null as any; - let entryVariantInstace = new Export.VariantEntries(config, () => {}); - await entryVariantInstace.exportVariantEntry(exportEntryData); + if (callback) callback([]); + }); + + config.modules.variantEntry.chunkFileSize = null as any; + const entryVariantInstance = new Export.VariantEntries(config); + await entryVariantInstance.exportVariantEntry(exportEntryData); - expect(spy.writeIntoFile.callCount).to.be.equals(0); - expect(spy.variantEntries.callCount).to.be.equals(1); - }, - ); + const writeIntoFileStub = FsUtility.prototype.writeIntoFile as sinon.SinonStub; + const variantEntriesStub = VariantHttpClient.prototype.variantEntries as sinon.SinonStub; + expect(writeIntoFileStub.callCount).to.equal(0); + expect(variantEntriesStub.callCount).to.equal(1); + }); }); }); diff --git a/packages/contentstack-variants/test/unit/import/audiences.test.ts b/packages/contentstack-variants/test/unit/import/audiences.test.ts index 1f7296c1a..d253f6989 100644 --- a/packages/contentstack-variants/test/unit/import/audiences.test.ts +++ b/packages/contentstack-variants/test/unit/import/audiences.test.ts @@ -1,6 +1,6 @@ -import { expect } from '@oclif/test'; +import { expect } from 'chai'; +import sinon from 'sinon'; import cloneDeep from 'lodash/cloneDeep'; -import { fancy } from '@contentstack/cli-dev-dependencies'; import importConf from '../mock/import-config.json'; import { Import, ImportConfig } from '../../../src'; @@ -8,13 +8,12 @@ import { Import, ImportConfig } from '../../../src'; describe('Audiences Import', () => { let config: ImportConfig; let createAudienceCalls: Array<{ name: string }> = []; - - const test = fancy.stdout({ print: process.env.PRINT === 'true' || false }); + let sandbox: sinon.SinonSandbox; beforeEach(() => { + sandbox = sinon.createSandbox(); config = cloneDeep(importConf) as unknown as ImportConfig; createAudienceCalls = []; - // Audiences uses modules.personalize and region - add them for tests config.modules.personalize = { ...(config.modules as any).personalization, dirName: 'personalize', @@ -24,95 +23,72 @@ describe('Audiences Import', () => { }, } as any; config.region = { name: 'eu' } as any; - config.context = config.context || {}; - }); - - describe('import method - Lytics audience skip', () => { - test - .stub(Import.Audiences.prototype, 'init', async () => {}) - .stub(Import.Audiences.prototype, 'createAudience', (async (payload: any) => { - createAudienceCalls.push({ name: payload.name }); - return { uid: `new-${payload.name.replace(/\s/g, '-')}`, name: payload.name }; - }) as any) - .it('should skip Lytics audiences and not call createAudience for them', async () => { - const audiencesInstance = new Import.Audiences(config); - await audiencesInstance.import(); - - const lyticsNames = createAudienceCalls.filter( - (c) => c.name === 'Lytics Audience' || c.name === 'Lytics Lowercase', - ); - expect(lyticsNames.length).to.equal(0); - }); + config.context = (config as any).context || {}; - test - .stub(Import.Audiences.prototype, 'init', async () => {}) - .stub(Import.Audiences.prototype, 'createAudience', (async (payload: any) => { - createAudienceCalls.push({ name: payload.name }); - return { uid: `new-${payload.name.replace(/\s/g, '-')}`, name: payload.name }; - }) as any) - .it('should process audiences with undefined source', async () => { - const audiencesInstance = new Import.Audiences(config); - await audiencesInstance.import(); - - const noSourceCall = createAudienceCalls.find((c) => c.name === 'No Source Audience'); - expect(noSourceCall).to.not.be.undefined; - }); - - test - .stub(Import.Audiences.prototype, 'init', async () => {}) - .stub(Import.Audiences.prototype, 'createAudience', (async (payload: any) => { - createAudienceCalls.push({ name: payload.name }); - return { uid: `new-${payload.name.replace(/\s/g, '-')}`, name: payload.name }; - }) as any) - .it('should skip audience with source "lytics" (lowercase)', async () => { - const audiencesInstance = new Import.Audiences(config); - await audiencesInstance.import(); - - const lyticsLowercaseCall = createAudienceCalls.find((c) => c.name === 'Lytics Lowercase'); - expect(lyticsLowercaseCall).to.be.undefined; - }); - - test - .stub(Import.Audiences.prototype, 'init', async () => {}) - .stub(Import.Audiences.prototype, 'createAudience', (async (payload: any) => { - createAudienceCalls.push({ name: payload.name }); - return { uid: `new-uid-${payload.name}`, name: payload.name }; - }) as any) - .it('should call createAudience only for non-Lytics audiences', async () => { - const audiencesInstance = new Import.Audiences(config); - await audiencesInstance.import(); - - // 4 audiences in mock: 2 Lytics (skip), 2 non-Lytics (Contentstack Test, No Source) - expect(createAudienceCalls.length).to.equal(2); - }); + sandbox.stub(Import.Audiences.prototype, 'init').resolves(); + }); - test - .stub(Import.Audiences.prototype, 'init', async () => {}) - .stub(Import.Audiences.prototype, 'createAudience', (async (payload: any) => { - createAudienceCalls.push({ name: payload.name }); - return { uid: 'new-contentstack-uid', name: payload.name }; - }) as any) - .it('should not add Lytics audiences to audiencesUidMapper', async () => { - const audiencesInstance = new Import.Audiences(config); - await audiencesInstance.import(); - - const mapper = (audiencesInstance as any).audiencesUidMapper; - expect(mapper['lytics-audience-001']).to.be.undefined; - expect(mapper['lytics-lowercase-001']).to.be.undefined; - }); + afterEach(() => { + sandbox.restore(); + }); - test - .stub(Import.Audiences.prototype, 'init', async () => {}) - .stub(Import.Audiences.prototype, 'createAudience', (async (payload: any) => { + describe('import method - Lytics audience skip', () => { + beforeEach(() => { + sandbox.stub(Import.Audiences.prototype, 'createAudience').callsFake(async (payload: any) => { createAudienceCalls.push({ name: payload.name }); - return { uid: 'new-contentstack-uid', name: payload.name }; - }) as any) - .it('should add Contentstack audiences to audiencesUidMapper', async () => { - const audiencesInstance = new Import.Audiences(config); - await audiencesInstance.import(); - - const mapper = (audiencesInstance as any).audiencesUidMapper; - expect(mapper['contentstack-audience-001']).to.equal('new-contentstack-uid'); + return { uid: `new-${payload.name.replace(/\s/g, '-')}`, name: payload.name } as any; }); + }); + + it('should skip Lytics audiences and not call createAudience for them', async () => { + const audiencesInstance = new Import.Audiences(config); + await audiencesInstance.import(); + + const lyticsNames = createAudienceCalls.filter( + (c) => c.name === 'Lytics Audience' || c.name === 'Lytics Lowercase', + ); + expect(lyticsNames.length).to.equal(0); + }); + + it('should process audiences with undefined source', async () => { + const audiencesInstance = new Import.Audiences(config); + await audiencesInstance.import(); + + const noSourceCall = createAudienceCalls.find((c) => c.name === 'No Source Audience'); + expect(noSourceCall).to.not.be.undefined; + }); + + it('should skip audience with source "lytics" (lowercase)', async () => { + const audiencesInstance = new Import.Audiences(config); + await audiencesInstance.import(); + + const lyticsLowercaseCall = createAudienceCalls.find((c) => c.name === 'Lytics Lowercase'); + expect(lyticsLowercaseCall).to.be.undefined; + }); + + it('should call createAudience only for non-Lytics audiences', async () => { + const audiencesInstance = new Import.Audiences(config); + await audiencesInstance.import(); + + // 4 audiences in mock: 2 Lytics (skip), 2 non-Lytics (Contentstack Test, No Source) + expect(createAudienceCalls.length).to.equal(2); + }); + + it('should not add Lytics audiences to audiencesUidMapper', async () => { + const audiencesInstance = new Import.Audiences(config); + await audiencesInstance.import(); + + const mapper = (audiencesInstance as any).audiencesUidMapper; + expect(mapper['lytics-audience-001']).to.be.undefined; + expect(mapper['lytics-lowercase-001']).to.be.undefined; + }); + + it('should add Contentstack audiences to audiencesUidMapper', async () => { + const audiencesInstance = new Import.Audiences(config); + await audiencesInstance.import(); + + const mapper = (audiencesInstance as any).audiencesUidMapper; + expect(mapper['contentstack-audience-001']).to.equal('new-contentstack-uid'); + }); }); }); diff --git a/packages/contentstack-variants/test/unit/import/experiences.test.ts b/packages/contentstack-variants/test/unit/import/experiences.test.ts new file mode 100644 index 000000000..2139d5d16 --- /dev/null +++ b/packages/contentstack-variants/test/unit/import/experiences.test.ts @@ -0,0 +1,251 @@ +import { expect } from 'chai'; +import sinon from 'sinon'; +import cloneDeep from 'lodash/cloneDeep'; +import { FsUtility } from '@contentstack/cli-utilities'; + +import importConf from '../mock/import-config.json'; +import { Import, ImportConfig } from '../../../src'; + +/** Predictable new UID returned for each experience name by createExperience stub */ +const NAME_TO_NEW_UID: Record = { + 'AB Test No Audiences': 'new-uid-empty', + 'Experience Lytics Only': 'new-uid-lytics', + 'Valid Experience': 'new-uid-valid', + 'Mixed Audiences Experience': 'new-uid-mixed', + 'No Versions File Experience': 'new-uid-no-versions', +}; + +function buildConfig(): ImportConfig { + const config = cloneDeep(importConf) as unknown as ImportConfig; + (config.modules as any).personalize = { + ...(config.modules as any).personalization, + dirName: 'personalize', + project_id: 'PROJ-TEST', + importData: true, + baseURL: { 'AWS-NA': 'https://personalization.na-api.contentstack.com' }, + }; + (config as any).region = { name: 'AWS-NA', cma: 'https://api.contentstack.io' }; + config.context = (config as any).context || {}; + return config; +} + +describe('Experiences Import', () => { + let sandbox: sinon.SinonSandbox; + + beforeEach(() => { + sandbox = sinon.createSandbox(); + sandbox.stub(Import.Experiences.prototype, 'init').resolves(); + sandbox.stub(FsUtility.prototype, 'writeFile').returns(undefined as any); + sandbox.stub(FsUtility.prototype, 'makeDirectory').resolves(undefined); + }); + + afterEach(() => { + sandbox.restore(); + }); + + // ────────────────────────────────────────────────────────────────────────── + // importExperienceVersions — unit tests (direct method call) + // ────────────────────────────────────────────────────────────────────────── + describe('importExperienceVersions', () => { + let updateVersionStub: sinon.SinonStub; + let createVersionStub: sinon.SinonStub; + + beforeEach(() => { + updateVersionStub = sandbox.stub(Import.Experiences.prototype, 'updateExperienceVersion').resolves(); + createVersionStub = sandbox.stub(Import.Experiences.prototype, 'createExperienceVersion').resolves(); + }); + + it('returns false when no versions file exists on disk', async () => { + const instance = new Import.Experiences(buildConfig()); + const result = await instance.importExperienceVersions( + { uid: 'new-uid-nofile', latestVersion: 'ver-nofile' } as any, + 'exp-no-versions-file', + ); + expect(result).to.equal(false); + expect(updateVersionStub.callCount).to.equal(0); + expect(createVersionStub.callCount).to.equal(0); + }); + + it('returns false when version has variants: [] (experience had no audiences)', async () => { + const instance = new Import.Experiences(buildConfig()); + const result = await instance.importExperienceVersions( + { uid: 'new-uid-empty', latestVersion: 'ver-empty-latest' } as any, + 'exp-empty-audiences', + ); + expect(result).to.equal(false); + expect(updateVersionStub.callCount).to.equal(0); + }); + + it('returns false when all Lytics audiences are stripped by lookUpAudiences', async () => { + const instance = new Import.Experiences(buildConfig()); + const result = await instance.importExperienceVersions( + { uid: 'new-uid-lytics', latestVersion: 'ver-lytics-latest' } as any, + 'exp-lytics-only', + ); + expect(result).to.equal(false); + expect(updateVersionStub.callCount).to.equal(0); + }); + + it('returns true when version has a valid mapped CS audience', async () => { + const instance = new Import.Experiences(buildConfig()); + const result = await instance.importExperienceVersions( + { uid: 'new-uid-valid', latestVersion: 'ver-valid-latest' } as any, + 'exp-valid', + ); + expect(result).to.equal(true); + }); + + it('calls updateExperienceVersion for ACTIVE status version', async () => { + const instance = new Import.Experiences(buildConfig()); + await instance.importExperienceVersions( + { uid: 'new-uid-valid', latestVersion: 'ver-valid-latest' } as any, + 'exp-valid', + ); + expect(updateVersionStub.callCount).to.equal(1); + expect(updateVersionStub.firstCall.args[0]).to.equal('new-uid-valid'); + expect(updateVersionStub.firstCall.args[2].status).to.equal('ACTIVE'); + expect(createVersionStub.callCount).to.equal(0); + }); + + it('returns true when mixed CS+Lytics variant — CS audience survives, Lytics stripped', async () => { + const instance = new Import.Experiences(buildConfig()); + const result = await instance.importExperienceVersions( + { uid: 'new-uid-mixed', latestVersion: 'ver-mixed-latest' } as any, + 'exp-mixed', + ); + expect(result).to.equal(true); + }); + + it('calls updateExperienceVersion for DRAFT when no ACTIVE version exists', async () => { + const instance = new Import.Experiences(buildConfig()); + const result = await instance.importExperienceVersions( + { uid: 'new-uid-draft-only', latestVersion: 'ver-draft-only-latest' } as any, + 'exp-draft-only', + ); + expect(result).to.equal(true); + expect(updateVersionStub.callCount).to.equal(1); + expect(updateVersionStub.firstCall.args[2].status).to.equal('DRAFT'); + expect(createVersionStub.callCount).to.equal(0); + }); + + it('calls updateExperienceVersion for ACTIVE then createExperienceVersion for DRAFT when both exist', async () => { + const instance = new Import.Experiences(buildConfig()); + const result = await instance.importExperienceVersions( + { uid: 'new-uid-active-and-draft', latestVersion: 'ver-ad-latest' } as any, + 'exp-active-and-draft', + ); + expect(result).to.equal(true); + expect(updateVersionStub.callCount).to.equal(1); + expect(updateVersionStub.firstCall.args[2].status).to.equal('ACTIVE'); + expect(createVersionStub.callCount).to.equal(1); + expect(createVersionStub.firstCall.args[1].status).to.equal('DRAFT'); + }); + + it('does not call any version API when all variants stripped after audience mapping', async () => { + const instance = new Import.Experiences(buildConfig()); + await instance.importExperienceVersions( + { uid: 'new-uid-lytics', latestVersion: 'ver-lytics-latest' } as any, + 'exp-lytics-only', + ); + expect(updateVersionStub.callCount).to.equal(0); + expect(createVersionStub.callCount).to.equal(0); + }); + }); + + // ────────────────────────────────────────────────────────────────────────── + // import() — integration tests across all 5 mock experiences + // ────────────────────────────────────────────────────────────────────────── + describe('import()', () => { + let capturedPendingList: string[]; + let attachCTsStub: sinon.SinonStub; + let createExperienceStub: sinon.SinonStub; + + beforeEach(() => { + capturedPendingList = []; + + createExperienceStub = sandbox.stub(Import.Experiences.prototype, 'createExperience') + .callsFake(async function (payload: any) { + const uid = NAME_TO_NEW_UID[payload.name] ?? `new-uid-${payload.name}`; + return { uid, latestVersion: `ver-${uid}-latest` }; + } as any); + + sandbox.stub(Import.Experiences.prototype, 'updateExperienceVersion').resolves(); + sandbox.stub(Import.Experiences.prototype, 'createExperienceVersion').resolves(); + + sandbox.stub(Import.Experiences.prototype, 'validateVariantGroupAndVariantsCreated') + .callsFake(async function (this: any) { + capturedPendingList = [...this.pendingVariantAndVariantGrpForExperience]; + return true; + }); + + attachCTsStub = sandbox.stub(Import.Experiences.prototype, 'attachCTsInExperience').resolves(); + sandbox.stub(Import.Experiences.prototype, 'createVariantIdMapper').resolves(); + }); + + it('pendingVariantAndVariantGrpForExperience contains only experiences with valid variants', async () => { + const instance = new Import.Experiences(buildConfig()); + await instance.import(); + + expect(capturedPendingList).to.include('new-uid-valid'); + expect(capturedPendingList).to.include('new-uid-mixed'); + }); + + it('pendingVariantAndVariantGrpForExperience excludes experiences with no valid variants', async () => { + const instance = new Import.Experiences(buildConfig()); + await instance.import(); + + expect(capturedPendingList).to.not.include('new-uid-empty'); + expect(capturedPendingList).to.not.include('new-uid-lytics'); + expect(capturedPendingList).to.not.include('new-uid-no-versions'); + }); + + it('pendingVariantAndVariantGrpForExperience has exactly 2 entries (valid + mixed)', async () => { + const instance = new Import.Experiences(buildConfig()); + await instance.import(); + + expect(capturedPendingList).to.have.length(2); + }); + + it('calls attachCTsInExperience when validateVariantGroupAndVariantsCreated returns true', async () => { + const instance = new Import.Experiences(buildConfig()); + await instance.import(); + + expect(attachCTsStub.callCount).to.equal(1); + }); + + it('does NOT call attachCTsInExperience when validateVariantGroupAndVariantsCreated returns false', async () => { + // Override validate stub to return false (simulates backend timeout) + (Import.Experiences.prototype.validateVariantGroupAndVariantsCreated as sinon.SinonStub) + .callsFake(async function (this: any) { + capturedPendingList = [...this.pendingVariantAndVariantGrpForExperience]; + return false; + }); + + const instance = new Import.Experiences(buildConfig()); + await instance.import(); + + expect(attachCTsStub.callCount).to.equal(0); + }); + + it('when all experiences produce no valid variants, pending list is empty and attachCTsInExperience is still called', async () => { + // Override importExperienceVersions to always return false for all experiences + sandbox.stub(Import.Experiences.prototype, 'importExperienceVersions').resolves(false); + + // Reset validate stub: empty pending list → real impl returns true immediately + // but validate is already stubbed to capture and return true, so it still works + const instance = new Import.Experiences(buildConfig()); + await instance.import(); + + expect(capturedPendingList).to.have.length(0); + expect(attachCTsStub.callCount).to.equal(1); + }); + + it('calls createExperience for every experience in experiences.json', async () => { + const instance = new Import.Experiences(buildConfig()); + await instance.import(); + + // 5 experiences in mock: empty, lytics, valid, mixed, no-versions-file + expect(createExperienceStub.callCount).to.equal(5); + }); + }); +}); diff --git a/packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/experiences-content-types.json b/packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/experiences-content-types.json new file mode 100644 index 000000000..91d501724 --- /dev/null +++ b/packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/experiences-content-types.json @@ -0,0 +1,9 @@ +{ + "exp-valid": [ + { "uid": "ct1", "status": "linked" } + ], + "exp-mixed": [ + { "uid": "ct1", "status": "linked" }, + { "uid": "ct2", "status": "linked" } + ] +} diff --git a/packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/experiences.json b/packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/experiences.json new file mode 100644 index 000000000..76d090791 --- /dev/null +++ b/packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/experiences.json @@ -0,0 +1,67 @@ +[ + { + "uid": "exp-empty-audiences", + "name": "AB Test No Audiences", + "__type": "AB_TEST", + "status": "DRAFT", + "description": "", + "referredAudiences": [], + "referredEvents": [], + "tags": [], + "variations": [], + "_cms": { "variantGroup": "vg-empty", "variants": {} }, + "latestVersion": "ver-empty-latest" + }, + { + "uid": "exp-lytics-only", + "name": "Experience Lytics Only", + "__type": "SEGMENTED", + "status": "DRAFT", + "description": "", + "referredAudiences": ["lytics-audience-001"], + "referredEvents": [], + "tags": [], + "variations": [], + "_cms": { "variantGroup": "vg-lytics", "variants": { "0": "old-variant-lytics" } }, + "latestVersion": "ver-lytics-latest" + }, + { + "uid": "exp-valid", + "name": "Valid Experience", + "__type": "SEGMENTED", + "status": "ACTIVE", + "description": "", + "referredAudiences": ["contentstack-audience-001"], + "referredEvents": [], + "tags": [], + "variations": [], + "_cms": { "variantGroup": "vg-valid", "variants": { "0": "old-variant-valid" } }, + "latestVersion": "ver-valid-latest" + }, + { + "uid": "exp-mixed", + "name": "Mixed Audiences Experience", + "__type": "SEGMENTED", + "status": "ACTIVE", + "description": "", + "referredAudiences": ["contentstack-audience-001", "lytics-audience-001"], + "referredEvents": [], + "tags": [], + "variations": [], + "_cms": { "variantGroup": "vg-mixed", "variants": { "0": "old-variant-mixed" } }, + "latestVersion": "ver-mixed-latest" + }, + { + "uid": "exp-no-versions-file", + "name": "No Versions File Experience", + "__type": "AB_TEST", + "status": "DRAFT", + "description": "", + "referredAudiences": [], + "referredEvents": [], + "tags": [], + "variations": [], + "_cms": { "variants": {} }, + "latestVersion": "ver-nofile-latest" + } +] diff --git a/packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/versions/exp-active-and-draft.json b/packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/versions/exp-active-and-draft.json new file mode 100644 index 000000000..29e25d062 --- /dev/null +++ b/packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/versions/exp-active-and-draft.json @@ -0,0 +1,28 @@ +[ + { + "uid": "ver-active-draft-active", + "experienceUid": "exp-active-and-draft", + "status": "ACTIVE", + "variants": [ + { + "__type": "SegmentedVariant", + "audiences": ["contentstack-audience-001"], + "lyticsAudiences": [] + } + ], + "variantSplit": "EQUALLY_SPLIT" + }, + { + "uid": "ver-active-draft-draft", + "experienceUid": "exp-active-and-draft", + "status": "DRAFT", + "variants": [ + { + "__type": "SegmentedVariant", + "audiences": ["contentstack-audience-001"], + "lyticsAudiences": [] + } + ], + "variantSplit": "EQUALLY_SPLIT" + } +] diff --git a/packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/versions/exp-draft-only.json b/packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/versions/exp-draft-only.json new file mode 100644 index 000000000..62a46bcbd --- /dev/null +++ b/packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/versions/exp-draft-only.json @@ -0,0 +1,15 @@ +[ + { + "uid": "ver-draft-only-001", + "experienceUid": "exp-draft-only", + "status": "DRAFT", + "variants": [ + { + "__type": "SegmentedVariant", + "audiences": ["contentstack-audience-001"], + "lyticsAudiences": [] + } + ], + "variantSplit": "EQUALLY_SPLIT" + } +] diff --git a/packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/versions/exp-empty-audiences.json b/packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/versions/exp-empty-audiences.json new file mode 100644 index 000000000..bfc14f64e --- /dev/null +++ b/packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/versions/exp-empty-audiences.json @@ -0,0 +1,9 @@ +[ + { + "uid": "ver-empty-001", + "experienceUid": "exp-empty-audiences", + "status": "DRAFT", + "variants": [], + "variantSplit": "EQUALLY_SPLIT" + } +] diff --git a/packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/versions/exp-lytics-only.json b/packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/versions/exp-lytics-only.json new file mode 100644 index 000000000..5593b6ac9 --- /dev/null +++ b/packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/versions/exp-lytics-only.json @@ -0,0 +1,15 @@ +[ + { + "uid": "ver-lytics-001", + "experienceUid": "exp-lytics-only", + "status": "ACTIVE", + "variants": [ + { + "__type": "SegmentedVariant", + "audiences": [], + "lyticsAudiences": ["lytics-audience-001"] + } + ], + "variantSplit": "EQUALLY_SPLIT" + } +] diff --git a/packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/versions/exp-mixed.json b/packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/versions/exp-mixed.json new file mode 100644 index 000000000..d799f0ab7 --- /dev/null +++ b/packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/versions/exp-mixed.json @@ -0,0 +1,15 @@ +[ + { + "uid": "ver-mixed-001", + "experienceUid": "exp-mixed", + "status": "ACTIVE", + "variants": [ + { + "__type": "SegmentedVariant", + "audiences": ["contentstack-audience-001"], + "lyticsAudiences": ["lytics-audience-001"] + } + ], + "variantSplit": "EQUALLY_SPLIT" + } +] diff --git a/packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/versions/exp-valid.json b/packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/versions/exp-valid.json new file mode 100644 index 000000000..75702c781 --- /dev/null +++ b/packages/contentstack-variants/test/unit/mock/contents/personalize/experiences/versions/exp-valid.json @@ -0,0 +1,15 @@ +[ + { + "uid": "ver-valid-001", + "experienceUid": "exp-valid", + "status": "ACTIVE", + "variants": [ + { + "__type": "SegmentedVariant", + "audiences": ["contentstack-audience-001"], + "lyticsAudiences": [] + } + ], + "variantSplit": "EQUALLY_SPLIT" + } +] From b8585ccade29e7e3b38fd1398a5a6630adb3a38b Mon Sep 17 00:00:00 2001 From: raj pandey Date: Fri, 10 Jul 2026 08:49:51 +0530 Subject: [PATCH 20/37] revert: restore package.json test script and test files unrelated to DX-9469 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Revert changes to audiences.test.ts, variant-entries.test.ts, and package.json (test script narrowing) — these were workarounds for the ESM/uuid runner issue and are not part of the DX-9469 fix scope. Co-Authored-By: Claude Sonnet 4.6 --- packages/contentstack-variants/package.json | 2 +- .../test/unit/export/variant-entries.test.ts | 101 ++++++------ .../test/unit/import/audiences.test.ts | 156 ++++++++++-------- 3 files changed, 143 insertions(+), 116 deletions(-) diff --git a/packages/contentstack-variants/package.json b/packages/contentstack-variants/package.json index b58c218ef..f785abdf4 100644 --- a/packages/contentstack-variants/package.json +++ b/packages/contentstack-variants/package.json @@ -8,7 +8,7 @@ "build": "pnpm compile", "prepack": "pnpm compile", "compile": "tsc -b tsconfig.json", - "test": "mocha --require ts-node/register --forbid-only \"test/**/experiences.test.ts\"", + "test": "mocha --require ts-node/register --forbid-only \"test/**/*.test.ts\"", "clean": "rm -rf ./lib ./node_modules tsconfig.tsbuildinfo", "test:unit:report": "nyc --extension .ts mocha --require ts-node/register --forbid-only \"test/unit/**/*.test.ts\"" }, diff --git a/packages/contentstack-variants/test/unit/export/variant-entries.test.ts b/packages/contentstack-variants/test/unit/export/variant-entries.test.ts index 465d4b2de..983431a0d 100644 --- a/packages/contentstack-variants/test/unit/export/variant-entries.test.ts +++ b/packages/contentstack-variants/test/unit/export/variant-entries.test.ts @@ -1,13 +1,12 @@ -import { expect } from 'chai'; -import sinon from 'sinon'; +import { expect } from '@oclif/test'; import { FsUtility } from '@contentstack/cli-utilities'; +import { fancy } from '@contentstack/cli-dev-dependencies'; import exportConf from '../mock/export-config.json'; import { Export, ExportConfig, VariantHttpClient, VariantsOption } from '../../../src'; describe('Variant Entries Export', () => { let config: ExportConfig; - let sandbox: sinon.SinonSandbox; const exportEntryData = { locale: 'en-us', @@ -15,63 +14,67 @@ describe('Variant Entries Export', () => { entries: [{ uid: 'E-UID-1', title: 'Entry 1' }], }; + const test = fancy + .stdout({ print: process.env.PRINT === 'true' || false }) + .stub(FsUtility.prototype, 'completeFile', () => {}) + .stub(FsUtility.prototype, 'writeIntoFile', () => {}) + .stub(FsUtility.prototype, 'createFolderIfNotExist', () => {}); + beforeEach(() => { - sandbox = sinon.createSandbox(); config = exportConf as unknown as ExportConfig; - sandbox.stub(FsUtility.prototype, 'completeFile').returns(undefined as any); - sandbox.stub(FsUtility.prototype, 'writeIntoFile').returns(undefined as any); - sandbox.stub(FsUtility.prototype, 'createFolderIfNotExist').returns(undefined as any); - }); - - afterEach(() => { - sandbox.restore(); }); describe('exportVariantEntry method', () => { - it('should call export variant entry method (API call)', async () => { - sandbox.stub(VariantHttpClient.prototype, 'variantEntries').resolves(); - - const entryVariantInstance = new Export.VariantEntries(config); - await entryVariantInstance.exportVariantEntry(exportEntryData); - - const variantEntriesStub = VariantHttpClient.prototype.variantEntries as sinon.SinonStub; - const completeFileStub = FsUtility.prototype.completeFile as sinon.SinonStub; - const createFolderStub = FsUtility.prototype.createFolderIfNotExist as sinon.SinonStub; - - expect(variantEntriesStub.callCount).to.equal(1); - expect(completeFileStub.callCount).to.equal(1); - expect(createFolderStub.callCount).to.equal(1); - expect(completeFileStub.alwaysCalledWith(true)).to.be.true; - }); + test + .stub(VariantHttpClient.prototype, 'variantEntries', async () => {}) + .spy(VariantHttpClient.prototype, 'variantEntries') + .spy(FsUtility.prototype, 'completeFile') + .spy(FsUtility.prototype, 'createFolderIfNotExist') + .it('should call export variant entry method (API call)', async ({ spy }) => { + let entryVariantInstace = new Export.VariantEntries(config); + await entryVariantInstace.exportVariantEntry(exportEntryData); - it('should write data in files (As chunk)', async () => { - sandbox.stub(VariantHttpClient.prototype, 'variantEntries').callsFake(async (...args: any) => { - const { callback } = args[0] as VariantsOption; - if (callback) callback([{ uid: 'E-UID-1', title: 'Entry 1' }]); + expect(spy.variantEntries.callCount).to.be.equals(1); + expect(spy.completeFile.callCount).to.be.equals(1); + expect(spy.createFolderIfNotExist.callCount).to.be.equals(1); + expect(spy.completeFile.alwaysCalledWith(true)).to.be.true; }); - const entryVariantInstance = new Export.VariantEntries(config); - await entryVariantInstance.exportVariantEntry(exportEntryData); - - const writeIntoFileStub = FsUtility.prototype.writeIntoFile as sinon.SinonStub; - expect(writeIntoFileStub.callCount).to.equal(1); - expect(writeIntoFileStub.alwaysCalledWith([{ uid: 'E-UID-1', title: 'Entry 1' }])).to.be.true; - }); - - it('should skip write when API returns empty data, should set default chunk 1MB if not in config', async () => { - sandbox.stub(VariantHttpClient.prototype, 'variantEntries').callsFake(async (...args: any) => { + test + .stub(VariantHttpClient.prototype, 'variantEntries', async (...args: any) => { const { callback } = args[0] as VariantsOption; - if (callback) callback([]); + if (callback) { + callback([{ uid: 'E-UID-1', title: 'Entry 1' }]); + } + }) + .spy(FsUtility.prototype, 'writeIntoFile') + .it('should write data in files (As chunk)', async ({ spy }) => { + let entryVariantInstace = new Export.VariantEntries(config); + await entryVariantInstace.exportVariantEntry(exportEntryData); + + expect(spy.writeIntoFile.callCount).to.be.equals(1); + expect(spy.writeIntoFile.alwaysCalledWith([{ uid: 'E-UID-1', title: 'Entry 1' }])).to.be.true; }); - config.modules.variantEntry.chunkFileSize = null as any; - const entryVariantInstance = new Export.VariantEntries(config); - await entryVariantInstance.exportVariantEntry(exportEntryData); + test + .stub(VariantHttpClient.prototype, 'variantEntries', async (...args: any) => { + const { callback } = args[0] as VariantsOption; + if (callback) { + callback([]); // NOTE API callback with empty response + } + }) + .spy(FsUtility.prototype, 'writeIntoFile') + .spy(VariantHttpClient.prototype, 'variantEntries') + .it( + 'should skip write data in files (Empty data check validation), should set default file chunk 1MB if chunk size is not passed in config', + async ({ spy }) => { + config.modules.variantEntry.chunkFileSize = null as any; + let entryVariantInstace = new Export.VariantEntries(config, () => {}); + await entryVariantInstace.exportVariantEntry(exportEntryData); - const writeIntoFileStub = FsUtility.prototype.writeIntoFile as sinon.SinonStub; - const variantEntriesStub = VariantHttpClient.prototype.variantEntries as sinon.SinonStub; - expect(writeIntoFileStub.callCount).to.equal(0); - expect(variantEntriesStub.callCount).to.equal(1); - }); + expect(spy.writeIntoFile.callCount).to.be.equals(0); + expect(spy.variantEntries.callCount).to.be.equals(1); + }, + ); }); }); diff --git a/packages/contentstack-variants/test/unit/import/audiences.test.ts b/packages/contentstack-variants/test/unit/import/audiences.test.ts index d253f6989..1f7296c1a 100644 --- a/packages/contentstack-variants/test/unit/import/audiences.test.ts +++ b/packages/contentstack-variants/test/unit/import/audiences.test.ts @@ -1,6 +1,6 @@ -import { expect } from 'chai'; -import sinon from 'sinon'; +import { expect } from '@oclif/test'; import cloneDeep from 'lodash/cloneDeep'; +import { fancy } from '@contentstack/cli-dev-dependencies'; import importConf from '../mock/import-config.json'; import { Import, ImportConfig } from '../../../src'; @@ -8,12 +8,13 @@ import { Import, ImportConfig } from '../../../src'; describe('Audiences Import', () => { let config: ImportConfig; let createAudienceCalls: Array<{ name: string }> = []; - let sandbox: sinon.SinonSandbox; + + const test = fancy.stdout({ print: process.env.PRINT === 'true' || false }); beforeEach(() => { - sandbox = sinon.createSandbox(); config = cloneDeep(importConf) as unknown as ImportConfig; createAudienceCalls = []; + // Audiences uses modules.personalize and region - add them for tests config.modules.personalize = { ...(config.modules as any).personalization, dirName: 'personalize', @@ -23,72 +24,95 @@ describe('Audiences Import', () => { }, } as any; config.region = { name: 'eu' } as any; - config.context = (config as any).context || {}; - - sandbox.stub(Import.Audiences.prototype, 'init').resolves(); - }); - - afterEach(() => { - sandbox.restore(); + config.context = config.context || {}; }); describe('import method - Lytics audience skip', () => { - beforeEach(() => { - sandbox.stub(Import.Audiences.prototype, 'createAudience').callsFake(async (payload: any) => { + test + .stub(Import.Audiences.prototype, 'init', async () => {}) + .stub(Import.Audiences.prototype, 'createAudience', (async (payload: any) => { + createAudienceCalls.push({ name: payload.name }); + return { uid: `new-${payload.name.replace(/\s/g, '-')}`, name: payload.name }; + }) as any) + .it('should skip Lytics audiences and not call createAudience for them', async () => { + const audiencesInstance = new Import.Audiences(config); + await audiencesInstance.import(); + + const lyticsNames = createAudienceCalls.filter( + (c) => c.name === 'Lytics Audience' || c.name === 'Lytics Lowercase', + ); + expect(lyticsNames.length).to.equal(0); + }); + + test + .stub(Import.Audiences.prototype, 'init', async () => {}) + .stub(Import.Audiences.prototype, 'createAudience', (async (payload: any) => { + createAudienceCalls.push({ name: payload.name }); + return { uid: `new-${payload.name.replace(/\s/g, '-')}`, name: payload.name }; + }) as any) + .it('should process audiences with undefined source', async () => { + const audiencesInstance = new Import.Audiences(config); + await audiencesInstance.import(); + + const noSourceCall = createAudienceCalls.find((c) => c.name === 'No Source Audience'); + expect(noSourceCall).to.not.be.undefined; + }); + + test + .stub(Import.Audiences.prototype, 'init', async () => {}) + .stub(Import.Audiences.prototype, 'createAudience', (async (payload: any) => { + createAudienceCalls.push({ name: payload.name }); + return { uid: `new-${payload.name.replace(/\s/g, '-')}`, name: payload.name }; + }) as any) + .it('should skip audience with source "lytics" (lowercase)', async () => { + const audiencesInstance = new Import.Audiences(config); + await audiencesInstance.import(); + + const lyticsLowercaseCall = createAudienceCalls.find((c) => c.name === 'Lytics Lowercase'); + expect(lyticsLowercaseCall).to.be.undefined; + }); + + test + .stub(Import.Audiences.prototype, 'init', async () => {}) + .stub(Import.Audiences.prototype, 'createAudience', (async (payload: any) => { + createAudienceCalls.push({ name: payload.name }); + return { uid: `new-uid-${payload.name}`, name: payload.name }; + }) as any) + .it('should call createAudience only for non-Lytics audiences', async () => { + const audiencesInstance = new Import.Audiences(config); + await audiencesInstance.import(); + + // 4 audiences in mock: 2 Lytics (skip), 2 non-Lytics (Contentstack Test, No Source) + expect(createAudienceCalls.length).to.equal(2); + }); + + test + .stub(Import.Audiences.prototype, 'init', async () => {}) + .stub(Import.Audiences.prototype, 'createAudience', (async (payload: any) => { + createAudienceCalls.push({ name: payload.name }); + return { uid: 'new-contentstack-uid', name: payload.name }; + }) as any) + .it('should not add Lytics audiences to audiencesUidMapper', async () => { + const audiencesInstance = new Import.Audiences(config); + await audiencesInstance.import(); + + const mapper = (audiencesInstance as any).audiencesUidMapper; + expect(mapper['lytics-audience-001']).to.be.undefined; + expect(mapper['lytics-lowercase-001']).to.be.undefined; + }); + + test + .stub(Import.Audiences.prototype, 'init', async () => {}) + .stub(Import.Audiences.prototype, 'createAudience', (async (payload: any) => { createAudienceCalls.push({ name: payload.name }); - return { uid: `new-${payload.name.replace(/\s/g, '-')}`, name: payload.name } as any; + return { uid: 'new-contentstack-uid', name: payload.name }; + }) as any) + .it('should add Contentstack audiences to audiencesUidMapper', async () => { + const audiencesInstance = new Import.Audiences(config); + await audiencesInstance.import(); + + const mapper = (audiencesInstance as any).audiencesUidMapper; + expect(mapper['contentstack-audience-001']).to.equal('new-contentstack-uid'); }); - }); - - it('should skip Lytics audiences and not call createAudience for them', async () => { - const audiencesInstance = new Import.Audiences(config); - await audiencesInstance.import(); - - const lyticsNames = createAudienceCalls.filter( - (c) => c.name === 'Lytics Audience' || c.name === 'Lytics Lowercase', - ); - expect(lyticsNames.length).to.equal(0); - }); - - it('should process audiences with undefined source', async () => { - const audiencesInstance = new Import.Audiences(config); - await audiencesInstance.import(); - - const noSourceCall = createAudienceCalls.find((c) => c.name === 'No Source Audience'); - expect(noSourceCall).to.not.be.undefined; - }); - - it('should skip audience with source "lytics" (lowercase)', async () => { - const audiencesInstance = new Import.Audiences(config); - await audiencesInstance.import(); - - const lyticsLowercaseCall = createAudienceCalls.find((c) => c.name === 'Lytics Lowercase'); - expect(lyticsLowercaseCall).to.be.undefined; - }); - - it('should call createAudience only for non-Lytics audiences', async () => { - const audiencesInstance = new Import.Audiences(config); - await audiencesInstance.import(); - - // 4 audiences in mock: 2 Lytics (skip), 2 non-Lytics (Contentstack Test, No Source) - expect(createAudienceCalls.length).to.equal(2); - }); - - it('should not add Lytics audiences to audiencesUidMapper', async () => { - const audiencesInstance = new Import.Audiences(config); - await audiencesInstance.import(); - - const mapper = (audiencesInstance as any).audiencesUidMapper; - expect(mapper['lytics-audience-001']).to.be.undefined; - expect(mapper['lytics-lowercase-001']).to.be.undefined; - }); - - it('should add Contentstack audiences to audiencesUidMapper', async () => { - const audiencesInstance = new Import.Audiences(config); - await audiencesInstance.import(); - - const mapper = (audiencesInstance as any).audiencesUidMapper; - expect(mapper['contentstack-audience-001']).to.equal('new-contentstack-uid'); - }); }); }); From 8dcd10af96ab149136ed0efc93348a38f8d0cd2b Mon Sep 17 00:00:00 2001 From: raj pandey Date: Fri, 10 Jul 2026 08:58:33 +0530 Subject: [PATCH 21/37] test(import): update entries test to reflect publish loop running with empty envs [DX-9469] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit After removing the bare return, publishEntries is called even when no environments exist — serializePublishEntries handles empty envs as a no-op. Updated test assertion to reflect this and added assertion that createEntryDataForVariantEntry always runs. Co-Authored-By: Claude Sonnet 4.6 --- .../src/import/modules/entries.ts | 21 +++++++++---------- .../test/unit/import/modules/entries.test.ts | 6 ++++-- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/packages/contentstack-import/src/import/modules/entries.ts b/packages/contentstack-import/src/import/modules/entries.ts index a6a187c81..fe2bb34f7 100644 --- a/packages/contentstack-import/src/import/modules/entries.ts +++ b/packages/contentstack-import/src/import/modules/entries.ts @@ -284,18 +284,17 @@ export default class EntriesImport extends BaseClass { ); } else { log.debug(`Loaded ${Object.keys(this.envs).length} environments.`, this.importConfig.context); + for (let entryRequestOption of entryRequestOptions) { + await this.publishEntries(entryRequestOption).catch((error) => { + handleAndLogError( + error, + { ...this.importConfig.context, cTUid: entryRequestOption.cTUid, locale: entryRequestOption.locale }, + `Error in publishing entries of ${entryRequestOption.cTUid} in locale ${entryRequestOption.locale}`, + ); + }); + } + log.success('All the entries have been published successfully', this.importConfig.context); } - - for (let entryRequestOption of entryRequestOptions) { - await this.publishEntries(entryRequestOption).catch((error) => { - handleAndLogError( - error, - { ...this.importConfig.context, cTUid: entryRequestOption.cTUid, locale: entryRequestOption.locale }, - `Error in publishing entries of ${entryRequestOption.cTUid} in locale ${entryRequestOption.locale}`, - ); - }); - } - log.success('All the entries have been published successfully', this.importConfig.context); } else { log.info('Skipping entry publishing as per configuration...', this.importConfig.context); } diff --git a/packages/contentstack-import/test/unit/import/modules/entries.test.ts b/packages/contentstack-import/test/unit/import/modules/entries.test.ts index 532089e1e..a0b530236 100644 --- a/packages/contentstack-import/test/unit/import/modules/entries.test.ts +++ b/packages/contentstack-import/test/unit/import/modules/entries.test.ts @@ -2886,8 +2886,10 @@ describe('EntriesImport', () => { await entriesImport.start(); - // Verify publishEntries was NOT called due to empty environments - expect(publishEntriesStub.called).to.be.false; + // publishEntries is called but is a no-op — envs is empty so serializePublishEntries nulls all entries + expect(publishEntriesStub.called).to.be.true; + // createEntryDataForVariantEntry must always run regardless of environments + expect(createEntryDataForVariantEntryStub.called).to.be.true; }); it('should handle errors in replaceEntries', async () => { From bf088a21e21b03981159a0fd5a267f2197b7a92d Mon Sep 17 00:00:00 2001 From: raj pandey Date: Fri, 10 Jul 2026 08:59:23 +0530 Subject: [PATCH 22/37] =?UTF-8?q?fix(import):=20restore=20entries.ts=20sou?= =?UTF-8?q?rce=20=E2=80=94=20revert=20accidental=20source=20change?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- .../src/import/modules/entries.ts | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/packages/contentstack-import/src/import/modules/entries.ts b/packages/contentstack-import/src/import/modules/entries.ts index fe2bb34f7..a6a187c81 100644 --- a/packages/contentstack-import/src/import/modules/entries.ts +++ b/packages/contentstack-import/src/import/modules/entries.ts @@ -284,17 +284,18 @@ export default class EntriesImport extends BaseClass { ); } else { log.debug(`Loaded ${Object.keys(this.envs).length} environments.`, this.importConfig.context); - for (let entryRequestOption of entryRequestOptions) { - await this.publishEntries(entryRequestOption).catch((error) => { - handleAndLogError( - error, - { ...this.importConfig.context, cTUid: entryRequestOption.cTUid, locale: entryRequestOption.locale }, - `Error in publishing entries of ${entryRequestOption.cTUid} in locale ${entryRequestOption.locale}`, - ); - }); - } - log.success('All the entries have been published successfully', this.importConfig.context); } + + for (let entryRequestOption of entryRequestOptions) { + await this.publishEntries(entryRequestOption).catch((error) => { + handleAndLogError( + error, + { ...this.importConfig.context, cTUid: entryRequestOption.cTUid, locale: entryRequestOption.locale }, + `Error in publishing entries of ${entryRequestOption.cTUid} in locale ${entryRequestOption.locale}`, + ); + }); + } + log.success('All the entries have been published successfully', this.importConfig.context); } else { log.info('Skipping entry publishing as per configuration...', this.importConfig.context); } From a6596a64dd94c036aff54e289dd02f72af612bc9 Mon Sep 17 00:00:00 2001 From: raj pandey Date: Fri, 10 Jul 2026 13:17:50 +0530 Subject: [PATCH 23/37] fix(personalize): address PR review comments on fix/DX-9469 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - experiences.ts: pass versionReqObj (already audience-mapped) to lookUpEvents instead of original version — was relying on mutation side effect of lookUpAudiences to make this work - entries.ts: skip publish loop and success log entirely when envs is empty, instead of running the loop as a no-op; createEntryDataForVariantEntry still runs unconditionally afterward Co-Authored-By: Claude Sonnet 4.6 --- .../src/import/modules/entries.ts | 20 +++++++++---------- .../test/unit/import/modules/entries.test.ts | 4 ++-- .../src/import/experiences.ts | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/packages/contentstack-import/src/import/modules/entries.ts b/packages/contentstack-import/src/import/modules/entries.ts index a6a187c81..5895cf196 100644 --- a/packages/contentstack-import/src/import/modules/entries.ts +++ b/packages/contentstack-import/src/import/modules/entries.ts @@ -284,18 +284,18 @@ export default class EntriesImport extends BaseClass { ); } else { log.debug(`Loaded ${Object.keys(this.envs).length} environments.`, this.importConfig.context); - } - for (let entryRequestOption of entryRequestOptions) { - await this.publishEntries(entryRequestOption).catch((error) => { - handleAndLogError( - error, - { ...this.importConfig.context, cTUid: entryRequestOption.cTUid, locale: entryRequestOption.locale }, - `Error in publishing entries of ${entryRequestOption.cTUid} in locale ${entryRequestOption.locale}`, - ); - }); + for (let entryRequestOption of entryRequestOptions) { + await this.publishEntries(entryRequestOption).catch((error) => { + handleAndLogError( + error, + { ...this.importConfig.context, cTUid: entryRequestOption.cTUid, locale: entryRequestOption.locale }, + `Error in publishing entries of ${entryRequestOption.cTUid} in locale ${entryRequestOption.locale}`, + ); + }); + } + log.success('All the entries have been published successfully', this.importConfig.context); } - log.success('All the entries have been published successfully', this.importConfig.context); } else { log.info('Skipping entry publishing as per configuration...', this.importConfig.context); } diff --git a/packages/contentstack-import/test/unit/import/modules/entries.test.ts b/packages/contentstack-import/test/unit/import/modules/entries.test.ts index a0b530236..bf0ea2445 100644 --- a/packages/contentstack-import/test/unit/import/modules/entries.test.ts +++ b/packages/contentstack-import/test/unit/import/modules/entries.test.ts @@ -2886,8 +2886,8 @@ describe('EntriesImport', () => { await entriesImport.start(); - // publishEntries is called but is a no-op — envs is empty so serializePublishEntries nulls all entries - expect(publishEntriesStub.called).to.be.true; + // publish loop is skipped entirely when envs is empty — no pointless API work + expect(publishEntriesStub.called).to.be.false; // createEntryDataForVariantEntry must always run regardless of environments expect(createEntryDataForVariantEntryStub.called).to.be.true; }); diff --git a/packages/contentstack-variants/src/import/experiences.ts b/packages/contentstack-variants/src/import/experiences.ts index f91848b80..d65075e1a 100644 --- a/packages/contentstack-variants/src/import/experiences.ts +++ b/packages/contentstack-variants/src/import/experiences.ts @@ -203,7 +203,7 @@ export default class Experiences extends PersonalizationAdapter { // Process each version and map them by status versions.forEach((version) => { let versionReqObj = lookUpAudiences(version, this.audiencesUid) as CreateExperienceVersionInput; - versionReqObj = lookUpEvents(version, this.eventsUid) as CreateExperienceVersionInput; + versionReqObj = lookUpEvents(versionReqObj, this.eventsUid) as CreateExperienceVersionInput; if (versionReqObj && versionReqObj.status && (versionReqObj.variants?.length ?? 0) > 0) { versionMap[versionReqObj.status] = versionReqObj; From ea05a5efbc1c734ebf960f075e9dbff6755c5dcd Mon Sep 17 00:00:00 2001 From: raj pandey Date: Fri, 10 Jul 2026 13:27:34 +0530 Subject: [PATCH 24/37] fix(variants): guard versionMap against unrecognized status values [DX-9469] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If versionReqObj.status was e.g. PAUSED (not PAUSE), the previous code silently added a 4th key to the Record-typed map, causing Object.values to find a non-undefined entry and return true — even though handleVersionUpdateOrCreate only destructures ACTIVE/DRAFT/PAUSE and would have processed nothing. The experience UID then incorrectly entered the polling pending list, reintroducing the timeout bug. Fix: narrow versionMap to a typed object with only the three known keys and validate status against a HANDLED_STATUSES set before writing. Unrecognized statuses are logged and skipped. Also aligns the variant-skip warning message with the generic wording adopted in fix/DX-9469-v2. Co-Authored-By: Claude Sonnet 4.6 --- .../src/import/experiences.ts | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/contentstack-variants/src/import/experiences.ts b/packages/contentstack-variants/src/import/experiences.ts index d65075e1a..0e8b6f67d 100644 --- a/packages/contentstack-variants/src/import/experiences.ts +++ b/packages/contentstack-variants/src/import/experiences.ts @@ -194,11 +194,8 @@ export default class Experiences extends PersonalizationAdapter { const versions = fsUtil.readFile(versionsPath, true) as ExperienceStruct[]; log.debug(`Found ${versions.length} versions for experience: ${oldExperienceUid}`, this.config.context); - const versionMap: Record = { - ACTIVE: undefined, - DRAFT: undefined, - PAUSE: undefined, - }; + const HANDLED_STATUSES = new Set(['ACTIVE', 'DRAFT', 'PAUSE']); + const versionMap: { ACTIVE?: CreateExperienceVersionInput; DRAFT?: CreateExperienceVersionInput; PAUSE?: CreateExperienceVersionInput } = {}; // Process each version and map them by status versions.forEach((version) => { @@ -206,10 +203,14 @@ export default class Experiences extends PersonalizationAdapter { versionReqObj = lookUpEvents(versionReqObj, this.eventsUid) as CreateExperienceVersionInput; if (versionReqObj && versionReqObj.status && (versionReqObj.variants?.length ?? 0) > 0) { - versionMap[versionReqObj.status] = versionReqObj; + if (!HANDLED_STATUSES.has(versionReqObj.status)) { + log.warn(`Skipping version with unrecognized status "${versionReqObj.status}" — expected one of ACTIVE, DRAFT, PAUSE`, this.config.context); + return; + } + versionMap[versionReqObj.status as 'ACTIVE' | 'DRAFT' | 'PAUSE'] = versionReqObj; log.debug(`Mapped version with status: ${versionReqObj.status}`, this.config.context); } else if (versionReqObj?.status && !(versionReqObj.variants?.length ?? 0)) { - log.warn(`Skipping version ${versionReqObj.status}: no valid variants after audience mapping — variants may have had no audiences or all audiences were unmapped`, this.config.context); + log.warn(`Skipping version ${versionReqObj.status}: no valid variants after audience/event mapping`, this.config.context); } }); From 77a0165b9d5edcbbc9921248fc4155964fc52413 Mon Sep 17 00:00:00 2001 From: raj pandey Date: Fri, 10 Jul 2026 17:43:48 +0530 Subject: [PATCH 25/37] chore: version bump --- .talismanrc | 2 +- packages/contentstack-apps-cli/package.json | 2 +- .../contentstack-bulk-operations/package.json | 2 +- packages/contentstack-clone/package.json | 6 +- .../contentstack-content-type/package.json | 2 +- .../contentstack-export-to-csv/package.json | 2 +- packages/contentstack-export/package.json | 4 +- .../package.json | 2 +- .../contentstack-import-setup/package.json | 2 +- packages/contentstack-import/package.json | 4 +- .../contentstack-migrate-rte/package.json | 2 +- .../contentstack-query-export/package.json | 6 +- packages/contentstack-seed/package.json | 6 +- packages/contentstack-variants/package.json | 2 +- pnpm-lock.yaml | 80 +++++++++---------- 15 files changed, 62 insertions(+), 62 deletions(-) diff --git a/.talismanrc b/.talismanrc index 4940ba110..f268d18d2 100644 --- a/.talismanrc +++ b/.talismanrc @@ -1,4 +1,4 @@ fileignoreconfig: - filename: pnpm-lock.yaml - checksum: 96e1bd3333f28545394ad65b791405087afa5b5cdc9da9e587bd9f9d00e89ee9 + checksum: 4be4721031793b5ec6957b17778969b715ded2d15a6b6231b6c066735abd7233 version: '1.0' diff --git a/packages/contentstack-apps-cli/package.json b/packages/contentstack-apps-cli/package.json index a73a3ea0b..2d6a5f84e 100644 --- a/packages/contentstack-apps-cli/package.json +++ b/packages/contentstack-apps-cli/package.json @@ -1,6 +1,6 @@ { "name": "@contentstack/apps-cli", - "version": "1.7.1", + "version": "1.7.2", "description": "App ClI", "author": "Contentstack CLI", "homepage": "https://github.com/contentstack/cli-plugins/tree/main/packages/contentstack-apps-cli", diff --git a/packages/contentstack-bulk-operations/package.json b/packages/contentstack-bulk-operations/package.json index cff792ab0..be6df3e4d 100644 --- a/packages/contentstack-bulk-operations/package.json +++ b/packages/contentstack-bulk-operations/package.json @@ -1,6 +1,6 @@ { "name": "@contentstack/cli-bulk-operations", - "version": "1.2.1", + "version": "1.2.2", "description": "Contentstack CLI plugin for bulk operations", "author": "Contentstack CLI", "homepage": "https://github.com/contentstack/cli-plugins/tree/main/packages/contentstack-bulk-operations", diff --git a/packages/contentstack-clone/package.json b/packages/contentstack-clone/package.json index ef2de3c25..d0b57ec23 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.8", + "version": "1.21.9", "author": "Contentstack", "bugs": "https://github.com/rohitmishra209/cli-cm-clone/issues", "dependencies": { "@colors/colors": "^1.6.0", - "@contentstack/cli-cm-export": "~1.25.2", - "@contentstack/cli-cm-import": "~1.33.4", + "@contentstack/cli-cm-export": "~1.25.3", + "@contentstack/cli-cm-import": "~1.33.5", "@contentstack/cli-command": "~1.8.4", "@contentstack/cli-utilities": "~1.18.5", "@oclif/core": "^4.11.4", diff --git a/packages/contentstack-content-type/package.json b/packages/contentstack-content-type/package.json index 1414906b9..63e05bc6a 100644 --- a/packages/contentstack-content-type/package.json +++ b/packages/contentstack-content-type/package.json @@ -1,7 +1,7 @@ { "name": "contentstack-cli-content-type", "description": "Retrieve information about Content Types in a Stack.", - "version": "1.5.1", + "version": "1.5.2", "author": "Contentstack Developer", "bugs": "https://github.com/contentstack/cli-plugins/issues", "dependencies": { diff --git a/packages/contentstack-export-to-csv/package.json b/packages/contentstack-export-to-csv/package.json index 201225522..fc48e59da 100644 --- a/packages/contentstack-export-to-csv/package.json +++ b/packages/contentstack-export-to-csv/package.json @@ -1,7 +1,7 @@ { "name": "@contentstack/cli-cm-export-to-csv", "description": "Export entries, taxonomies, terms, or organization users to CSV", - "version": "1.12.5", + "version": "1.12.6", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { diff --git a/packages/contentstack-export/package.json b/packages/contentstack-export/package.json index fa00b694c..e19554601 100644 --- a/packages/contentstack-export/package.json +++ b/packages/contentstack-export/package.json @@ -1,13 +1,13 @@ { "name": "@contentstack/cli-cm-export", "description": "Contentstack CLI plugin to export content from stack", - "version": "1.25.2", + "version": "1.25.3", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { "@contentstack/cli-command": "~1.8.4", "@oclif/core": "^4.11.4", - "@contentstack/cli-variants": "~1.5.1", + "@contentstack/cli-variants": "~1.6.0", "@contentstack/cli-utilities": "~1.18.5", "async": "^3.2.6", "big-json": "^3.2.0", diff --git a/packages/contentstack-external-migrate/package.json b/packages/contentstack-external-migrate/package.json index 8abce26fa..120beb67f 100644 --- a/packages/contentstack-external-migrate/package.json +++ b/packages/contentstack-external-migrate/package.json @@ -1,6 +1,6 @@ { "name": "@contentstack/cli-external-migrate", - "version": "1.0.0-alpha.4", + "version": "1.0.0-alpha.5", "description": "Migrate from external source to Contentstack", "author": "Contentstack", "license": "MIT", diff --git a/packages/contentstack-import-setup/package.json b/packages/contentstack-import-setup/package.json index db4220aa2..73cfb3b56 100644 --- a/packages/contentstack-import-setup/package.json +++ b/packages/contentstack-import-setup/package.json @@ -1,7 +1,7 @@ { "name": "@contentstack/cli-cm-import-setup", "description": "Contentstack CLI plugin to setup the mappers and configurations for the import command", - "version": "1.8.5", + "version": "1.8.6", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { diff --git a/packages/contentstack-import/package.json b/packages/contentstack-import/package.json index 3a5d8fd81..b618c0692 100644 --- a/packages/contentstack-import/package.json +++ b/packages/contentstack-import/package.json @@ -1,14 +1,14 @@ { "name": "@contentstack/cli-cm-import", "description": "Contentstack CLI plugin to import content into stack", - "version": "1.33.4", + "version": "1.33.5", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { "@contentstack/cli-audit": "~1.19.5", "@contentstack/cli-command": "~1.8.4", "@contentstack/cli-utilities": "~1.18.5", - "@contentstack/cli-variants": "~1.5.1", + "@contentstack/cli-variants": "~1.6.0", "@oclif/core": "^4.11.4", "big-json": "^3.2.0", "bluebird": "^3.7.2", diff --git a/packages/contentstack-migrate-rte/package.json b/packages/contentstack-migrate-rte/package.json index e12e71854..adaa47ba1 100644 --- a/packages/contentstack-migrate-rte/package.json +++ b/packages/contentstack-migrate-rte/package.json @@ -1,7 +1,7 @@ { "name": "@contentstack/cli-cm-migrate-rte", "description": "Contentstack CLI plugin to migrate HTML RTE to JSON RTE", - "version": "1.7.1", + "version": "1.7.2", "author": "contentstack", "bugs": { "url": "https://github.com/contentstack/cli-plugins/issues" diff --git a/packages/contentstack-query-export/package.json b/packages/contentstack-query-export/package.json index 384ac8ea4..d334cc9fe 100644 --- a/packages/contentstack-query-export/package.json +++ b/packages/contentstack-query-export/package.json @@ -1,12 +1,12 @@ { "name": "@contentstack/cli-cm-export-query", "description": "Contentstack CLI plugin to export content from stack", - "version": "1.0.4", + "version": "1.0.5", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { - "@contentstack/cli-variants": "~1.5.1", - "@contentstack/cli-cm-export": "~1.25.2", + "@contentstack/cli-variants": "~1.6.0", + "@contentstack/cli-cm-export": "~1.25.3", "@contentstack/cli-command": "~1.8.4", "@contentstack/cli-utilities": "~1.18.5", "@oclif/core": "^4.11.4", diff --git a/packages/contentstack-seed/package.json b/packages/contentstack-seed/package.json index 7f6114e59..187012600 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.7", + "version": "1.15.8", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli/issues", "dependencies": { - "@contentstack/cli-cm-import": "~1.33.4", + "@contentstack/cli-cm-import": "~1.33.5", "@contentstack/cli-command": "~1.8.4", "@contentstack/cli-utilities": "~1.18.5", "inquirer": "8.2.7", @@ -14,7 +14,7 @@ "tmp": "^0.2.7" }, "devDependencies": { - "@types/inquirer": "^9.0.9", + "@types/inquirer": "^9.0.10", "@types/jest": "^26.0.24", "@types/mkdirp": "^1.0.2", "@types/node": "^14.18.63", diff --git a/packages/contentstack-variants/package.json b/packages/contentstack-variants/package.json index f785abdf4..9428354aa 100644 --- a/packages/contentstack-variants/package.json +++ b/packages/contentstack-variants/package.json @@ -1,6 +1,6 @@ { "name": "@contentstack/cli-variants", - "version": "1.5.2", + "version": "1.6.0", "description": "Variants plugin", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bd81008a1..39aea2add 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,7 +21,7 @@ importers: version: 9.1.7 pnpm: specifier: ^10.28.0 - version: 10.34.4 + version: 10.34.5 packages/contentstack-apps-cli: dependencies: @@ -389,7 +389,7 @@ importers: version: 10.1.8(eslint@10.6.0) eslint-plugin-prettier: specifier: ^5.5.5 - version: 5.5.6(eslint-config-prettier@10.1.8(eslint@10.6.0))(eslint@10.6.0)(prettier@3.9.4) + version: 5.5.6(eslint-config-prettier@10.1.8(eslint@10.6.0))(eslint@10.6.0)(prettier@3.9.5) husky: specifier: ^9.1.7 version: 9.1.7 @@ -407,7 +407,7 @@ importers: version: 4.23.27(@types/node@20.19.43) prettier: specifier: ^3.8.3 - version: 3.9.4 + version: 3.9.5 shx: specifier: ^0.4.0 version: 0.4.0 @@ -640,10 +640,10 @@ importers: specifier: ^1.6.0 version: 1.6.0 '@contentstack/cli-cm-export': - specifier: ~1.25.2 + specifier: ~1.25.3 version: link:../contentstack-export '@contentstack/cli-cm-import': - specifier: ~1.33.4 + specifier: ~1.33.5 version: link:../contentstack-import '@contentstack/cli-command': specifier: ~1.8.4 @@ -822,7 +822,7 @@ importers: specifier: ~1.18.5 version: 1.18.5(@types/node@22.20.1) '@contentstack/cli-variants': - specifier: ~1.5.1 + specifier: ~1.6.0 version: link:../contentstack-variants '@oclif/core': specifier: ^4.11.4 @@ -1080,7 +1080,7 @@ importers: specifier: ~1.18.5 version: 1.18.5(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-variants': - specifier: ~1.5.1 + specifier: ~1.6.0 version: link:../contentstack-variants '@oclif/core': specifier: ^4.11.4 @@ -1393,7 +1393,7 @@ importers: packages/contentstack-query-export: dependencies: '@contentstack/cli-cm-export': - specifier: ~1.25.2 + specifier: ~1.25.3 version: link:../contentstack-export '@contentstack/cli-command': specifier: ~1.8.4 @@ -1402,7 +1402,7 @@ importers: specifier: ~1.18.5 version: 1.18.5(@types/node@20.19.43) '@contentstack/cli-variants': - specifier: ~1.5.1 + specifier: ~1.6.0 version: link:../contentstack-variants '@oclif/core': specifier: ^4.11.4 @@ -1508,7 +1508,7 @@ importers: packages/contentstack-seed: dependencies: '@contentstack/cli-cm-import': - specifier: ~1.33.4 + specifier: ~1.33.5 version: link:../contentstack-import '@contentstack/cli-command': specifier: ~1.8.4 @@ -1530,7 +1530,7 @@ importers: version: 0.2.7 devDependencies: '@types/inquirer': - specifier: ^9.0.9 + specifier: ^9.0.10 version: 9.0.10 '@types/jest': specifier: ^26.0.24 @@ -1642,12 +1642,12 @@ packages: resolution: {integrity: sha512-EKnvkXSmz3IpA99tCNuI+dLFXyZyClSm8zns9sB/elvkU+MTuomAs6toJMPMBf98/fICG/urXDkzGz0/c3yyAQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/client-cloudfront@3.1083.0': - resolution: {integrity: sha512-AJZiUrBwD50jrJRXQog8YKS0bv66E1tFQxdL+o34m5Aj5t6fTRioq92zOp/y5xJYfVLpFSw1S6hKEhhK7RqMWQ==} + '@aws-sdk/client-cloudfront@3.1084.0': + resolution: {integrity: sha512-hNfxs7xVQm1XHzwiifrHYhfd0ZLUT46CRHM14G1g1q/eZcv0bgU7HrD5QUFoDJj2qAMJ5SIeAtOtTmZ0D90ivA==} engines: {node: '>=20.0.0'} - '@aws-sdk/client-s3@3.1083.0': - resolution: {integrity: sha512-3YOicHy6qjexsy4rHk5jPvtLgg6Ho1u+ycOWtJcVTAIMlMq32MRtnhllAyFSezhAXeBnnLLtKtAGXim7vV8oog==} + '@aws-sdk/client-s3@3.1084.0': + resolution: {integrity: sha512-W8KZlbU3vL4N0rZnXqryH5Ft3fkBnGypaorZmFxBoZRMGkwtvRBGiSnNXu1/1a/j/qZNwwt6LLNBWQQysB/pRg==} engines: {node: '>=20.0.0'} '@aws-sdk/core@3.975.1': @@ -3831,8 +3831,8 @@ packages: resolution: {integrity: sha512-UexrHGnGTpbuQHct2ExOc2ZcFbGUS9FOesCxxqdBGcpI1BxYu/LZ6U8Aq6/72XtF/qRBk9nhuGHFJIXXMhPMdw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@ungap/structured-clone@1.3.2': - resolution: {integrity: sha512-5jsZFwgR5rTdKwidH9Qmat75RKwqfpKlWWB1frDkljN127mwqBu8K0PYo7/hFpF03IEJpfVPpCQDY/eDx3iHvA==} + '@ungap/structured-clone@1.3.3': + resolution: {integrity: sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==} '@unrs/resolver-binding-android-arm-eabi@1.12.2': resolution: {integrity: sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==} @@ -7662,8 +7662,8 @@ packages: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} - pnpm@10.34.4: - resolution: {integrity: sha512-h2i+VSAK4/Iia2Un/Momh+FLxOXxLXchoPJdo99HkVF3BYZI20F3uvNIEg+guidS2NjZP2vq8f5krhjajelhrw==} + pnpm@10.34.5: + resolution: {integrity: sha512-pO4F8vc2WCVb1qiYWcBlpFwopX2u+uLIk6Fo7itzFow3uR6D5X6mdlStA/AwMXRkMOi84442LgQmBfuKvIAZLg==} engines: {node: '>=18.12'} hasBin: true @@ -7683,8 +7683,8 @@ packages: resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} engines: {node: '>=6.0.0'} - prettier@3.9.4: - resolution: {integrity: sha512-yWG/o/4oJfo036EKAfK6ACAoDOfHeRHx4tuxkfBZiauURiaSmYwlpOr5LQqKtIkRD2z1PLteme2WoxEnj4tHTg==} + prettier@3.9.5: + resolution: {integrity: sha512-/FVl766LpUfB5vXgCYOYa0MeV/441Ia99AeICQIQFTY/Nw0roZwULcXpku5i1/m5kt/baz+s4Zogspd839HSMg==} engines: {node: '>=14'} hasBin: true @@ -9294,7 +9294,7 @@ snapshots: '@smithy/types': 4.16.0 tslib: 2.8.1 - '@aws-sdk/client-cloudfront@3.1083.0': + '@aws-sdk/client-cloudfront@3.1084.0': dependencies: '@aws-sdk/core': 3.975.1 '@aws-sdk/credential-provider-node': 3.972.66 @@ -9305,7 +9305,7 @@ snapshots: '@smithy/types': 4.16.0 tslib: 2.8.1 - '@aws-sdk/client-s3@3.1083.0': + '@aws-sdk/client-s3@3.1084.0': dependencies: '@aws-sdk/checksums': 3.1000.16 '@aws-sdk/core': 3.975.1 @@ -10599,7 +10599,7 @@ snapshots: async: 3.2.6 axios: 1.18.0 lodash: 4.18.1 - prettier: 3.9.4 + prettier: 3.9.5 transitivePeerDependencies: - debug - graphql @@ -13325,7 +13325,7 @@ snapshots: '@typescript-eslint/types': 8.63.0 eslint-visitor-keys: 5.0.1 - '@ungap/structured-clone@1.3.2': {} + '@ungap/structured-clone@1.3.3': {} '@unrs/resolver-binding-android-arm-eabi@1.12.2': optional: true @@ -15426,10 +15426,10 @@ snapshots: - supports-color - typescript - eslint-plugin-prettier@5.5.6(eslint-config-prettier@10.1.8(eslint@10.6.0))(eslint@10.6.0)(prettier@3.9.4): + eslint-plugin-prettier@5.5.6(eslint-config-prettier@10.1.8(eslint@10.6.0))(eslint@10.6.0)(prettier@3.9.5): dependencies: eslint: 10.6.0 - prettier: 3.9.4 + prettier: 3.9.5 prettier-linter-helpers: 1.0.1 synckit: 0.11.13 optionalDependencies: @@ -17544,7 +17544,7 @@ snapshots: jest-worker@30.4.1: dependencies: '@types/node': 20.19.43 - '@ungap/structured-clone': 1.3.2 + '@ungap/structured-clone': 1.3.3 jest-util: 30.4.1 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -18389,8 +18389,8 @@ snapshots: oclif@4.23.27: dependencies: - '@aws-sdk/client-cloudfront': 3.1083.0 - '@aws-sdk/client-s3': 3.1083.0 + '@aws-sdk/client-cloudfront': 3.1084.0 + '@aws-sdk/client-s3': 3.1084.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 @@ -18418,8 +18418,8 @@ snapshots: oclif@4.23.27(@types/node@14.18.63): dependencies: - '@aws-sdk/client-cloudfront': 3.1083.0 - '@aws-sdk/client-s3': 3.1083.0 + '@aws-sdk/client-cloudfront': 3.1084.0 + '@aws-sdk/client-s3': 3.1084.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 @@ -18447,8 +18447,8 @@ snapshots: oclif@4.23.27(@types/node@18.19.130): dependencies: - '@aws-sdk/client-cloudfront': 3.1083.0 - '@aws-sdk/client-s3': 3.1083.0 + '@aws-sdk/client-cloudfront': 3.1084.0 + '@aws-sdk/client-s3': 3.1084.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 @@ -18476,8 +18476,8 @@ snapshots: oclif@4.23.27(@types/node@20.19.43): dependencies: - '@aws-sdk/client-cloudfront': 3.1083.0 - '@aws-sdk/client-s3': 3.1083.0 + '@aws-sdk/client-cloudfront': 3.1084.0 + '@aws-sdk/client-s3': 3.1084.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 @@ -18505,8 +18505,8 @@ snapshots: oclif@4.23.27(@types/node@22.20.1): dependencies: - '@aws-sdk/client-cloudfront': 3.1083.0 - '@aws-sdk/client-s3': 3.1083.0 + '@aws-sdk/client-cloudfront': 3.1084.0 + '@aws-sdk/client-s3': 3.1084.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 @@ -18757,7 +18757,7 @@ snapshots: pluralize@8.0.0: {} - pnpm@10.34.4: {} + pnpm@10.34.5: {} possible-typed-array-names@1.1.0: {} @@ -18773,7 +18773,7 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier@3.9.4: {} + prettier@3.9.5: {} pretty-format@26.6.2: dependencies: From d74ed4360646e9479fd561a3e5760e2b3eb324be Mon Sep 17 00:00:00 2001 From: naman-contentstack Date: Sat, 11 Jul 2026 15:04:29 +0530 Subject: [PATCH 26/37] feat: Implement CS Assets delete/move operations in bulk-assets command --- .talismanrc | 10 + .../contentstack-bulk-operations/package.json | 1 - .../src/base-am-command.ts | 29 -- .../src/base-bulk-command.ts | 13 + .../src/commands/cm/stacks/bulk-am-assets.ts | 257 ----------------- .../src/commands/cm/stacks/bulk-assets.ts | 133 ++++++++- .../src/interfaces/index.ts | 2 +- .../src/messages/index.ts | 15 +- .../src/utils/cs-assets-runner.ts | 258 ++++++++++++++++++ .../src/utils/index.ts | 17 +- .../src/utils/interactive.ts | 34 +-- .../src/utils/operation-flag-matrix.ts | 157 +++++++++++ ....test.ts => bulk-assets-cs-assets.test.ts} | 92 ++++++- .../unit/commands/bulk-assets-init.test.ts | 244 +++++++++++++++++ .../test/unit/utils/interactive.test.ts | 29 +- .../unit/utils/operation-flag-matrix.test.ts | 176 ++++++++++++ 16 files changed, 1118 insertions(+), 349 deletions(-) delete mode 100644 packages/contentstack-bulk-operations/src/base-am-command.ts delete mode 100644 packages/contentstack-bulk-operations/src/commands/cm/stacks/bulk-am-assets.ts create mode 100644 packages/contentstack-bulk-operations/src/utils/cs-assets-runner.ts create mode 100644 packages/contentstack-bulk-operations/src/utils/operation-flag-matrix.ts rename packages/contentstack-bulk-operations/test/unit/commands/{bulk-am-assets.test.ts => bulk-assets-cs-assets.test.ts} (53%) create mode 100644 packages/contentstack-bulk-operations/test/unit/commands/bulk-assets-init.test.ts create mode 100644 packages/contentstack-bulk-operations/test/unit/utils/operation-flag-matrix.test.ts diff --git a/.talismanrc b/.talismanrc index 0067b670e..1835171e5 100644 --- a/.talismanrc +++ b/.talismanrc @@ -7,4 +7,14 @@ fileignoreconfig: checksum: c13ca4996b3767fae9d2716fe9ae7d90d98b26012e064f42ea9fdd054f684761 - filename: packages/contentstack-export/src/utils/export-config-handler.ts checksum: 68351337b78f0962475498946fe34245a681182db756528c9ff6fab7153392e3 +- filename: packages/contentstack-bulk-operations/src/messages/index.ts + checksum: 07c2bf3f3130ad5e8b6a2971d76139e9b643c70a9ff5f7450adfb5c9bf3d7164 +- filename: packages/contentstack-bulk-operations/src/commands/cm/stacks/bulk-assets.ts + checksum: 8bca423db4c3815c651ad922d986a53b6271cce3ea27f5987b66ee594151165e +- filename: packages/contentstack-bulk-operations/test/unit/utils/operation-flag-matrix.test.ts + checksum: 35451ca4c03359b06531a8461091f4a3a45c4dea1f8853081fb53e4ce28c1cc3 +- filename: packages/contentstack-bulk-operations/test/unit/commands/bulk-assets-init.test.ts + checksum: 590b1cfe42d46d0917ac90f363b1ccd05200b180bd9c58c770ffd1f12eb18327 +- filename: packages/contentstack-bulk-operations/src/utils/operation-flag-matrix.ts + checksum: 99a3c3eb422a17f73f4c8f15088004fa4c95df3545bdf510310c1f3a20e4c2c2 version: "" diff --git a/packages/contentstack-bulk-operations/package.json b/packages/contentstack-bulk-operations/package.json index 86704d330..6e04a3d02 100644 --- a/packages/contentstack-bulk-operations/package.json +++ b/packages/contentstack-bulk-operations/package.json @@ -112,7 +112,6 @@ }, "csdxConfig": { "shortCommandName": { - "cm:stacks:bulk-am-assets": "BOAM", "cm:stacks:bulk-assets": "BOA", "cm:stacks:bulk-entries": "BOE", "cm:stacks:bulk-taxonomies": "BOT" diff --git a/packages/contentstack-bulk-operations/src/base-am-command.ts b/packages/contentstack-bulk-operations/src/base-am-command.ts deleted file mode 100644 index 0d23b9c93..000000000 --- a/packages/contentstack-bulk-operations/src/base-am-command.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { Command } from '@contentstack/cli-command'; -import { handleAndLogError } from '@contentstack/cli-utilities'; - -import { fillMissingCsAssetsFlags } from './utils'; -import type { CsAssetsFlags } from './interfaces'; - -/** - * Thin base command for CS Assets operations. - * Handles flag prompting in init() and exposes typed parsedFlags / loggerContext. - * Deliberately does NOT inherit BaseBulkCommand — CS Assets operations use a different API - * surface with no stack setup, queue managers, or rate limiters. - */ -export abstract class BaseCsAssetsCommand extends Command { - protected parsedFlags!: CsAssetsFlags; - protected loggerContext!: { module: string }; - - protected async init(): Promise { - await super.init(); - const { flags } = await this.parse(this.constructor as typeof BaseCsAssetsCommand); - this.loggerContext = { module: this.id ?? 'cm:stacks:bulk-am-assets' }; - this.parsedFlags = (await fillMissingCsAssetsFlags(flags)) as CsAssetsFlags; - } - - async catch(error: Error): Promise { - handleAndLogError(error); - } - - abstract run(): Promise; -} diff --git a/packages/contentstack-bulk-operations/src/base-bulk-command.ts b/packages/contentstack-bulk-operations/src/base-bulk-command.ts index 55436fc33..3db56adb3 100644 --- a/packages/contentstack-bulk-operations/src/base-bulk-command.ts +++ b/packages/contentstack-bulk-operations/src/base-bulk-command.ts @@ -135,12 +135,25 @@ export abstract class BaseBulkCommand extends Command { private batchResults: Map = new Map(); protected parsedFlags: any; + /** + * Hook for subclasses to bypass the bulk-publish pipeline (stack setup, queue, + * rate limiter) when an operation uses a different execution path entirely. + * The subclass is then responsible for its own initialization after super.init(). + */ + protected shouldSkipBulkPipeline(): boolean { + return false; + } + /** * Initialize common components */ protected async init(): Promise { await super.init(); + if (this.shouldSkipBulkPipeline()) { + return; + } + let { flags } = await this.parse(this.constructor as typeof BaseBulkCommand); this.parsedFlags = flags; diff --git a/packages/contentstack-bulk-operations/src/commands/cm/stacks/bulk-am-assets.ts b/packages/contentstack-bulk-operations/src/commands/cm/stacks/bulk-am-assets.ts deleted file mode 100644 index 850832eca..000000000 --- a/packages/contentstack-bulk-operations/src/commands/cm/stacks/bulk-am-assets.ts +++ /dev/null @@ -1,257 +0,0 @@ -import chalk from 'chalk'; -import { flags, log, createLogContext, cliux, handleAndLogError, FlagInput } from '@contentstack/cli-utilities'; - -import messages, { $t } from '../../../messages'; -import { BaseCsAssetsCommand } from '../../../base-am-command'; -import { CsAssetsService } from '../../../services'; -import { - loadAssetUidsFromFile, - loadBulkDeleteItemsFromFile, - LoadAssetUidsError, -} from '../../../utils/asset-uids-from-file'; -import { generateCsAssetsJobStatusUrl } from '../../../utils/bulk-publish-url-generator'; -import { CsAssetsBulkDeleteItem } from '../../../interfaces'; - -const COMMAND_ID = 'cm:stacks:bulk-am-assets'; - -type RegionWithOptionalCsAssetsUrl = { csAssetsUrl?: string }; - -/** - * CS Assets bulk delete (job) / bulk move; asset UIDs come from a JSON file `{ "uids": [...] }`. - */ -export default class BulkCsAssets extends BaseCsAssetsCommand { - static description = messages.BULK_CS_ASSETS_DESCRIPTION; - - static examples = [ - '<%= config.bin %> <%= command.id %> --operation delete --space-uid am123 --org-uid bltcOrg --locale en-us --asset-uids-file ./assets.json', - '<%= config.bin %> <%= command.id %> --operation move --space-uid am123 --org-uid bltcOrg --target-folder-uid amFolder --asset-uids-file ./assets.json', - '<%= config.bin %> <%= command.id %> --operation delete --space-uid am123 --org-uid bltcOrg --workspace main --locale en-us --asset-uids-file ./uids.json -y', - ]; - - static flags: FlagInput = { - operation: flags.string({ - description: messages.CS_ASSETS_OPERATION_FLAG, - options: ['delete', 'move'], - }), - 'space-uid': flags.string({ - description: messages.CS_ASSETS_SPACE_UID_FLAG, - }), - 'org-uid': flags.string({ - description: messages.CS_ASSETS_ORG_UID_FLAG, - }), - workspace: flags.string({ - default: 'main', - description: messages.CS_ASSETS_WORKSPACE_FLAG, - }), - 'asset-uids-file': flags.string({ - description: messages.CS_ASSETS_ASSET_UIDS_FILE_FLAG, - }), - locale: flags.string({ - description: messages.CS_ASSETS_LOCALE_FLAG, - }), - 'target-folder-uid': flags.string({ - description: messages.CS_ASSETS_TARGET_FOLDER_FLAG, - }), - yes: flags.boolean({ - char: 'y', - description: messages.YES, - default: false, - }), - }; - - private printCsAssetsSummary( - op: 'delete' | 'move', - opts: { jobId?: string; count?: number; folderUid?: string; notice?: string; error?: string; spaceUid?: string } - ): void { - if (opts.error) { - log.error($t(messages.CS_ASSETS_OPERATION_FAILED, { operation: op }), this.loggerContext); - log.error(opts.error, this.loggerContext); - } else if (op === 'delete') { - log.success($t(messages.CS_ASSETS_DELETE_SUCCESS), this.loggerContext); - if (opts.jobId) log.info($t(messages.CS_ASSETS_DELETE_JOB_ID, { jobId: opts.jobId }), this.loggerContext); - log.info($t(messages.CS_ASSETS_DELETE_ASYNC_NOTE), this.loggerContext); - const statusUrl = generateCsAssetsJobStatusUrl(opts.spaceUid); - if (statusUrl) log.info(statusUrl, this.loggerContext); - } else { - log.success($t(messages.CS_ASSETS_MOVE_SUCCESS), this.loggerContext); - if (opts.count !== undefined && opts.folderUid) { - log.info( - $t(messages.CS_ASSETS_MOVE_ASSETS_COUNT, { count: opts.count, folderUid: opts.folderUid }), - this.loggerContext - ); - } - const statusUrl = generateCsAssetsJobStatusUrl(opts.spaceUid); - if (statusUrl) log.info(statusUrl, this.loggerContext); - } - if (opts.notice) log.info(opts.notice, this.loggerContext); - } - - private handleAssetUidsFileError(e: LoadAssetUidsError): void { - const pathShown = e.filePath; - if (e.kind === 'READ') { - log.error( - $t(messages.CS_ASSETS_ASSET_UIDS_FILE_READ_FAILED, { path: pathShown, detail: e.message }), - this.loggerContext - ); - } else { - log.error( - $t(messages.CS_ASSETS_ASSET_UIDS_FILE_INVALID, { path: pathShown, detail: e.message }), - this.loggerContext - ); - } - process.exitCode = 1; - } - - async run(): Promise { - try { - const f = this.parsedFlags; - - const csAssetsBaseUrl = (this.region as RegionWithOptionalCsAssetsUrl).csAssetsUrl?.trim(); - if (!csAssetsBaseUrl) { - log.error($t(messages.CS_ASSETS_URL_NOT_CONFIGURED), this.loggerContext); - process.exitCode = 1; - return; - } - - const op = f.operation; - if (op !== 'delete' && op !== 'move') { - log.error($t(messages.CS_ASSETS_INVALID_OPERATION, { operation: String(op ?? '') }), this.loggerContext); - process.exitCode = 1; - return; - } - - const spaceUid = f['space-uid'].trim(); - const orgUid = f['org-uid'].trim(); - const assetUidsPath = f['asset-uids-file'].trim(); - - let deleteRows: CsAssetsBulkDeleteItem[]; - - if (op === 'delete') { - const locale = (f.locale ?? '').trim(); - if (!locale) { - log.error($t(messages.CS_ASSETS_LOCALE_REQUIRED), this.loggerContext); - process.exitCode = 1; - return; - } - try { - deleteRows = loadBulkDeleteItemsFromFile(assetUidsPath, locale); - } catch (e: unknown) { - if (e instanceof LoadAssetUidsError) { - this.handleAssetUidsFileError(e); - } else { - handleAndLogError(e); - process.exitCode = 1; - } - return; - } - - createLogContext(this.context?.info?.command || COMMAND_ID, spaceUid, 'OAuth/Token'); - const csAssetsService = new CsAssetsService(csAssetsBaseUrl, spaceUid, orgUid); - const workspace = f.workspace ?? 'main'; - - if (!f.yes) { - console.log(chalk.yellow(`\n${$t(messages.OPERATION_CONFIG_HEADER)}\n`)); - console.log(' Operation: CS Assets bulk delete'); - console.log(` Space UID: ${spaceUid}`); - console.log(` Organization UID: ${orgUid}`); - console.log(` Workspace: ${workspace}`); - console.log(` Locale: ${locale}`); - console.log(` Asset UIDs file: ${assetUidsPath}`); - console.log(` Total CS Assets delete entries: ${deleteRows.length}\n`); - - const confirmed: boolean = await cliux.inquire({ - type: 'confirm', - name: 'proceed', - message: chalk.grey($t(messages.CONTINUE_WITH_CONFIG)), - default: false, - }); - if (!confirmed) { - log.warn($t(messages.OPERATION_CANCELLED), this.loggerContext); - return; - } - } - - log.info($t(messages.CS_ASSETS_DELETING_ASSETS, { count: deleteRows.length, spaceUid }), this.loggerContext); - const result = await csAssetsService.bulkDelete(spaceUid, workspace, deleteRows); - if (!result.success) { - this.printCsAssetsSummary('delete', { error: result.error ?? 'CS Assets bulk delete failed', spaceUid }); - process.exitCode = 1; - return; - } - this.printCsAssetsSummary('delete', { jobId: result.jobId, notice: result.notice, spaceUid }); - return; - } - - if (f.locale) { - log.error($t(messages.CS_ASSETS_LOCALE_NOT_ALLOWED_FOR_MOVE), this.loggerContext); - process.exitCode = 1; - return; - } - - const moveFolderUid = (f['target-folder-uid'] ?? '').trim(); - if (!moveFolderUid) { - log.error($t(messages.TARGET_FOLDER_REQUIRED), this.loggerContext); - process.exitCode = 1; - return; - } - - let uids: string[]; - try { - uids = loadAssetUidsFromFile(assetUidsPath); - } catch (e: unknown) { - if (e instanceof LoadAssetUidsError) { - this.handleAssetUidsFileError(e); - } else { - handleAndLogError(e); - process.exitCode = 1; - } - return; - } - - createLogContext(this.context?.info?.command || COMMAND_ID, spaceUid, 'OAuth/Token'); - const csAssetsService = new CsAssetsService(csAssetsBaseUrl, spaceUid, orgUid); - const workspace = f.workspace ?? 'main'; - - if (!f.yes) { - console.log(chalk.yellow(`\n${$t(messages.OPERATION_CONFIG_HEADER)}\n`)); - console.log(' Operation: CS Assets bulk move'); - console.log(` Space UID: ${spaceUid}`); - console.log(` Organization UID: ${orgUid}`); - console.log(` Workspace: ${workspace}`); - console.log(` Target folder UID: ${moveFolderUid}`); - console.log(` Asset UIDs file: ${assetUidsPath}`); - console.log(` Assets: ${uids.length}\n`); - - const confirmed: boolean = await cliux.inquire({ - type: 'confirm', - name: 'proceed', - message: chalk.grey($t(messages.CONTINUE_WITH_CONFIG)), - default: false, - }); - if (!confirmed) { - log.warn($t(messages.OPERATION_CANCELLED), this.loggerContext); - return; - } - } - - log.info( - $t(messages.CS_ASSETS_MOVING_ASSETS, { count: uids.length, targetFolderUid: moveFolderUid }), - this.loggerContext - ); - const result = await csAssetsService.bulkMove(spaceUid, workspace, uids, moveFolderUid); - if (!result.success) { - this.printCsAssetsSummary('move', { error: result.error ?? 'CS Assets bulk move failed', spaceUid }); - process.exitCode = 1; - return; - } - this.printCsAssetsSummary('move', { - count: uids.length, - folderUid: moveFolderUid, - notice: result.notice, - spaceUid, - }); - } catch (error) { - handleAndLogError(error); - } - } -} diff --git a/packages/contentstack-bulk-operations/src/commands/cm/stacks/bulk-assets.ts b/packages/contentstack-bulk-operations/src/commands/cm/stacks/bulk-assets.ts index 71122a91d..1706fefba 100644 --- a/packages/contentstack-bulk-operations/src/commands/cm/stacks/bulk-assets.ts +++ b/packages/contentstack-bulk-operations/src/commands/cm/stacks/bulk-assets.ts @@ -1,12 +1,39 @@ import { flags, handleAndLogError, FlagInput } from '@contentstack/cli-utilities'; -import { ResourceType } from '../../../interfaces'; +import { ResourceType, OperationType, CsAssetsFlags } from '../../../interfaces'; import { BaseBulkCommand } from '../../../base-bulk-command'; -import { $t, messages, fetchAssets } from '../../../utils'; +import { + $t, + messages, + fetchAssets, + fillMissingCsAssetsFlags, + promptForOperation, + runCsAssetsOperation, + enforceOperationFlagMatrix, + getOperationFromArgv, + OperationFlagMatrixError, + RETRY_REVERT_CONTEXT, +} from '../../../utils'; + +type RegionWithOptionalCsAssetsUrl = { csAssetsUrl?: string }; + +const ALL_OPERATION_CHOICES = [ + { name: 'Publish', value: OperationType.PUBLISH }, + { name: 'Unpublish', value: OperationType.UNPUBLISH }, + { name: 'Delete (CS Assets bulk delete)', value: OperationType.DELETE }, + { name: 'Move (CS Assets bulk move)', value: OperationType.MOVE }, +]; /** * Bulk operations command for assets - * Supports publish, unpublish, and cross publish operations + * Supports publish, unpublish, and cross publish operations (CMS), plus + * delete and move operations (CS Assets). + * + * The two families use fully separate execution paths: + * - publish/unpublish run through the BaseBulkCommand pipeline (stack setup, + * queue, rate limiter, retry) authenticated via stack API key or alias. + * - delete/move run through the CS Assets runner (OAuth/Token against the + * region's csAssetsUrl) with no bulk-publish infrastructure at all. */ export default class BulkAssets extends BaseBulkCommand { static description = messages.BULK_ASSETS_DESCRIPTION; @@ -32,18 +59,118 @@ export default class BulkAssets extends BaseBulkCommand { // Revert (unpublish) previously published assets using success log '<%= config.bin %> <%= command.id %> --revert ./bulk-operation -a myAlias', + + // CS Assets bulk delete (asset UIDs from a JSON file `{ "uids": [...] }`) + '<%= config.bin %> <%= command.id %> --operation delete --space-uid am123 --org-uid bltOrg --locale en-us --asset-uids-file ./assets.json', + + // CS Assets bulk move to a target folder + '<%= config.bin %> <%= command.id %> --operation move --space-uid am123 --org-uid bltOrg --target-folder-uid amFolder --asset-uids-file ./assets.json', ]; static flags: FlagInput = { ...BaseBulkCommand.baseFlags, + operation: flags.string({ + description: messages.BULK_ASSETS_OPERATION, + options: [OperationType.PUBLISH, OperationType.UNPUBLISH, OperationType.DELETE, OperationType.MOVE], + required: false, // Not required if retry-failed or revert is used + }), 'folder-uid': flags.string({ description: messages.FOLDER_UID, }), + + // CS Assets delete/move flags + 'space-uid': flags.string({ + description: messages.CS_ASSETS_SPACE_UID_FLAG, + }), + 'org-uid': flags.string({ + description: messages.CS_ASSETS_ORG_UID_FLAG, + }), + workspace: flags.string({ + default: 'main', + description: messages.CS_ASSETS_WORKSPACE_FLAG, + }), + 'asset-uids-file': flags.string({ + description: messages.CS_ASSETS_ASSET_UIDS_FILE_FLAG, + }), + locale: flags.string({ + description: messages.CS_ASSETS_LOCALE_FLAG, + }), + 'target-folder-uid': flags.string({ + description: messages.CS_ASSETS_TARGET_FOLDER_FLAG, + }), }; protected resourceType: ResourceType = ResourceType.ASSET; + /** True when the resolved operation is a CS Assets one (delete/move). */ + private csAssetsMode = false; + private csAssetsFlags!: CsAssetsFlags; + + protected shouldSkipBulkPipeline(): boolean { + return this.csAssetsMode; + } + + protected async init(): Promise { + // Resolve the operation from raw argv BEFORE any pipeline work: the two + // operation families use disjoint flags and auth, so the pipeline choice + // (and flag validation) depends on it. Raw argv is also what lets us reject + // explicitly-passed CMS flags that carry defaults (--branch, --publish-mode). + let operation = getOperationFromArgv(this.argv); + const isRevertOrRetry = this.argv.some( + (token) => + token === '--retry-failed' || + token.startsWith('--retry-failed=') || + token === '--revert' || + token.startsWith('--revert=') + ); + + if (!operation && !isRevertOrRetry) { + if (!process.stdin.isTTY) { + throw new Error( + 'Missing required flag: --operation. Provide it when running in a non-interactive environment.' + ); + } + operation = await promptForOperation(ALL_OPERATION_CHOICES); + // Feed the answer back into argv so both pipelines parse it like any other flag + this.argv.push('--operation', operation); + } + + enforceOperationFlagMatrix(operation ?? RETRY_REVERT_CONTEXT, this.argv, { module: this.id }); + + this.csAssetsMode = operation === OperationType.DELETE || operation === OperationType.MOVE; + + // For delete/move, shouldSkipBulkPipeline() makes super.init() stop right after + // the framework-level Command init — no stack setup, queue, or rate limiter. + await super.init(); + + if (this.csAssetsMode) { + const { flags: parsed } = await this.parse(this.constructor as typeof BulkAssets); + this.loggerContext = { module: this.id ?? 'cm:stacks:bulk-assets' }; + this.csAssetsFlags = (await fillMissingCsAssetsFlags(parsed)) as CsAssetsFlags; + this.parsedFlags = this.csAssetsFlags; + } + } + + async catch(error: Error): Promise { + // Matrix violations are already logged (with exitCode set) by + // enforceOperationFlagMatrix — the throw only aborts init(). + if (error instanceof OperationFlagMatrixError) { + return; + } + return super.catch(error); + } + async run(): Promise { + if (this.csAssetsMode) { + await runCsAssetsOperation({ + flags: this.csAssetsFlags, + csAssetsBaseUrl: (this.region as RegionWithOptionalCsAssetsUrl).csAssetsUrl, + commandId: this.context?.info?.command || this.id || 'cm:stacks:bulk-assets', + loggerContext: this.loggerContext, + }); + return; + } + try { // Handle cross-publish separately if source-env is specified if (this.bulkOperationConfig.sourceEnv) { diff --git a/packages/contentstack-bulk-operations/src/interfaces/index.ts b/packages/contentstack-bulk-operations/src/interfaces/index.ts index 04b3ed901..f7a9c7596 100644 --- a/packages/contentstack-bulk-operations/src/interfaces/index.ts +++ b/packages/contentstack-bulk-operations/src/interfaces/index.ts @@ -271,7 +271,7 @@ export interface CsAssetsBulkOperationResult { error?: string; } -/** Typed flags for the bulk-am-assets command. */ +/** Typed flags for CS Assets delete/move operations (cm:stacks:bulk-assets). */ export interface CsAssetsFlags { operation: string; 'space-uid': string; diff --git a/packages/contentstack-bulk-operations/src/messages/index.ts b/packages/contentstack-bulk-operations/src/messages/index.ts index ccc90ebb5..9f82677a8 100644 --- a/packages/contentstack-bulk-operations/src/messages/index.ts +++ b/packages/contentstack-bulk-operations/src/messages/index.ts @@ -200,6 +200,8 @@ const assetServiceMsg = { * Bulk assets command messages */ const bulkAssetsMsg = { + BULK_ASSETS_OPERATION: + 'Operation to perform: `publish`/`unpublish` (CMS, requires stack API key or alias) or `delete`/`move` (CS Assets, requires OAuth/Token and --space-uid/--org-uid)', FETCHING: 'Fetching assets...', FOUND_ASSETS: 'Found {count} assets ({locale})', FETCH_FOR_LOCALES: 'Fetch assets for {count} locales', @@ -216,8 +218,6 @@ const bulkAssetsMsg = { * CS Assets bulk delete/move messages */ const csAssetsBulkMsg = { - BULK_CS_ASSETS_DESCRIPTION: - 'Bulk delete or move assets via CS Assets API. Loads asset UIDs from a JSON file `{ "uids": [...] }`; pass organization via `--org-uid`.', CS_ASSETS_URL_NOT_CONFIGURED: 'CS Assets operations require csAssetsUrl in your region settings. Ensure your region is configured correctly.', SPACE_UID_REQUIRED: '--space-uid is required for CS Assets operations', @@ -253,8 +253,13 @@ const csAssetsBulkMsg = { CS_ASSETS_MOVE_ASSETS_COUNT: '{count} asset(s) moved to folder: {folderUid}', CS_ASSETS_OPERATION_FAILED: 'CS Assets {operation} failed.', + // Merged-command flag matrix validation + FLAG_NOT_ALLOWED_FOR_OPERATION: '{flag} is not valid for operation "{operation}".{hint}', + FLAG_NOT_ALLOWED_WITH_RETRY_REVERT: '{flag} cannot be combined with --retry-failed/--revert.', + CS_ASSETS_AUTH_REQUIRED: + 'The {operation} operation requires OAuth login or an auth token. Run "csdx login" and try again.', + // Interactive prompts - CS_ASSETS_SELECT_OPERATION: 'Select CS Assets operation:', CS_ASSETS_ENTER_SPACE_UID: 'Enter CS Assets space UID:', CS_ASSETS_ENTER_ORG_UID: 'Enter organization UID:', CS_ASSETS_ENTER_ASSET_UIDS_FILE: 'Enter path to asset UIDs JSON file (e.g. ./assets.json):', @@ -419,10 +424,10 @@ const flagDescriptions = { */ const commandInfo = { BULK_ENTRIES_DESCRIPTION: 'Bulk operations for entries (publish/unpublish/cross-publish)', - BULK_ASSETS_DESCRIPTION: 'Bulk operations for assets (publish/unpublish/cross-publish)', + BULK_ASSETS_DESCRIPTION: + 'Bulk operations for assets: publish/unpublish/cross-publish (CMS) and delete/move (CS Assets). Delete/move load asset UIDs from a JSON file `{ "uids": [...] }`; pass organization via `--org-uid`.', BULK_TAXONOMIES_DESCRIPTION: 'Publish taxonomies to environments and locales (CMA POST /v3/taxonomies/publish; initiates a publish job)', - BULK_CS_ASSETS_DESCRIPTION: csAssetsBulkMsg.BULK_CS_ASSETS_DESCRIPTION, }; /** diff --git a/packages/contentstack-bulk-operations/src/utils/cs-assets-runner.ts b/packages/contentstack-bulk-operations/src/utils/cs-assets-runner.ts new file mode 100644 index 000000000..fdf8c0b5f --- /dev/null +++ b/packages/contentstack-bulk-operations/src/utils/cs-assets-runner.ts @@ -0,0 +1,258 @@ +import chalk from 'chalk'; +import { log, createLogContext, cliux, handleAndLogError, authenticationHandler } from '@contentstack/cli-utilities'; + +import messages, { $t } from '../messages'; +import { CsAssetsService } from '../services'; +import { loadAssetUidsFromFile, loadBulkDeleteItemsFromFile, LoadAssetUidsError } from './asset-uids-from-file'; +import { generateCsAssetsJobStatusUrl } from './bulk-publish-url-generator'; +import { CsAssetsFlags, CsAssetsBulkOperationResult, OperationType } from '../interfaces'; + +/** + * Execution path for CS Assets bulk delete/move — deliberately independent of the + * BaseBulkCommand pipeline. CS Assets operations use a different API surface with + * no stack setup, queue managers, or rate limiters, and authenticate via OAuth/Token + * against the region's csAssetsUrl. + */ + +interface CsAssetsRunnerOptions { + flags: CsAssetsFlags; + csAssetsBaseUrl: string | undefined; + commandId: string; + loggerContext: { module: string }; +} + +/** Per-operation execution plan; the shared flow below drives it. */ +interface CsAssetsOperationPlan { + summaryLines: string[]; + logStart: () => void; + execute: (service: CsAssetsService) => Promise; + failureFallback: string; + successOpts: (result: CsAssetsBulkOperationResult) => Parameters[1]; +} + +function printCsAssetsSummary( + op: 'delete' | 'move', + opts: { jobId?: string; count?: number; folderUid?: string; notice?: string; error?: string; spaceUid?: string }, + loggerContext: { module: string } +): void { + if (opts.error) { + log.error($t(messages.CS_ASSETS_OPERATION_FAILED, { operation: op }), loggerContext); + log.error(opts.error, loggerContext); + } else if (op === 'delete') { + log.success($t(messages.CS_ASSETS_DELETE_SUCCESS), loggerContext); + if (opts.jobId) log.info($t(messages.CS_ASSETS_DELETE_JOB_ID, { jobId: opts.jobId }), loggerContext); + log.info($t(messages.CS_ASSETS_DELETE_ASYNC_NOTE), loggerContext); + const statusUrl = generateCsAssetsJobStatusUrl(opts.spaceUid); + if (statusUrl) log.info(statusUrl, loggerContext); + } else { + log.success($t(messages.CS_ASSETS_MOVE_SUCCESS), loggerContext); + if (opts.count !== undefined && opts.folderUid) { + log.info( + $t(messages.CS_ASSETS_MOVE_ASSETS_COUNT, { count: opts.count, folderUid: opts.folderUid }), + loggerContext + ); + } + const statusUrl = generateCsAssetsJobStatusUrl(opts.spaceUid); + if (statusUrl) log.info(statusUrl, loggerContext); + } + if (opts.notice) log.info(opts.notice, loggerContext); +} + +function handleAssetUidsFileError(e: LoadAssetUidsError, loggerContext: { module: string }): void { + const pathShown = e.filePath; + if (e.kind === 'READ') { + log.error( + $t(messages.CS_ASSETS_ASSET_UIDS_FILE_READ_FAILED, { path: pathShown, detail: e.message }), + loggerContext + ); + } else { + log.error($t(messages.CS_ASSETS_ASSET_UIDS_FILE_INVALID, { path: pathShown, detail: e.message }), loggerContext); + } + process.exitCode = 1; +} + +/** + * Loads rows from the asset UIDs file, reporting errors and setting the exit code. + * Returns undefined when loading failed. + */ +function tryLoadFromFile(loader: () => T, loggerContext: { module: string }): T | undefined { + try { + return loader(); + } catch (e: unknown) { + if (e instanceof LoadAssetUidsError) { + handleAssetUidsFileError(e, loggerContext); + } else { + handleAndLogError(e as Error); + process.exitCode = 1; + } + return undefined; + } +} + +/** + * Pre-flight auth check: CS Assets operations require an OAuth session or auth token. + * Fails before any confirmation prompt so users don't confirm a destructive operation + * that would only fail at the API call. + */ +async function ensureCsAssetsAuth(operation: string, loggerContext: { module: string }): Promise { + try { + await authenticationHandler.getAuthDetails(); + if (!authenticationHandler.accessToken) { + log.error($t(messages.CS_ASSETS_AUTH_REQUIRED, { operation }), loggerContext); + process.exitCode = 1; + return false; + } + return true; + } catch (error) { + log.error($t(messages.CS_ASSETS_AUTH_REQUIRED, { operation }), loggerContext); + handleAndLogError(error as Error); + process.exitCode = 1; + return false; + } +} + +/** Prints the operation summary and asks for confirmation (skipped with --yes). */ +async function confirmProceed( + summaryLines: string[], + yes: boolean, + loggerContext: { module: string } +): Promise { + if (yes) return true; + + console.log(chalk.yellow(`\n${$t(messages.OPERATION_CONFIG_HEADER)}\n`)); + for (const line of summaryLines) { + console.log(` ${line}`); + } + console.log(''); + + const confirmed: boolean = await cliux.inquire({ + type: 'confirm', + name: 'proceed', + message: chalk.grey($t(messages.CONTINUE_WITH_CONFIG)), + default: false, + }); + if (!confirmed) { + log.warn($t(messages.OPERATION_CANCELLED), loggerContext); + } + return confirmed; +} + +/** + * Runs a CS Assets bulk delete or move. Flags are expected to be pre-validated + * (operation flag matrix) and pre-filled (fillMissingCsAssetsFlags). + */ +export async function runCsAssetsOperation(options: CsAssetsRunnerOptions): Promise { + const { flags: f, csAssetsBaseUrl: rawBaseUrl, commandId, loggerContext } = options; + + try { + const csAssetsBaseUrl = rawBaseUrl?.trim(); + if (!csAssetsBaseUrl) { + log.error($t(messages.CS_ASSETS_URL_NOT_CONFIGURED), loggerContext); + process.exitCode = 1; + return; + } + + const op = f.operation; + if (op !== OperationType.DELETE && op !== OperationType.MOVE) { + log.error($t(messages.CS_ASSETS_INVALID_OPERATION, { operation: String(op ?? '') }), loggerContext); + process.exitCode = 1; + return; + } + + if (!(await ensureCsAssetsAuth(op, loggerContext))) { + return; + } + + const spaceUid = f['space-uid'].trim(); + const orgUid = f['org-uid'].trim(); + const assetUidsPath = f['asset-uids-file'].trim(); + const workspace = f.workspace ?? 'main'; + + const commonSummaryLines = [ + `Space UID: ${spaceUid}`, + `Organization UID: ${orgUid}`, + `Workspace: ${workspace}`, + ]; + + let plan: CsAssetsOperationPlan; + + if (op === OperationType.DELETE) { + const locale = (f.locale ?? '').trim(); + if (!locale) { + log.error($t(messages.CS_ASSETS_LOCALE_REQUIRED), loggerContext); + process.exitCode = 1; + return; + } + + const deleteRows = tryLoadFromFile(() => loadBulkDeleteItemsFromFile(assetUidsPath, locale), loggerContext); + if (!deleteRows) return; + + plan = { + summaryLines: [ + 'Operation: CS Assets bulk delete', + ...commonSummaryLines, + `Locale: ${locale}`, + `Asset UIDs file: ${assetUidsPath}`, + `Total CS Assets delete entries: ${deleteRows.length}`, + ], + logStart: () => + log.info($t(messages.CS_ASSETS_DELETING_ASSETS, { count: deleteRows.length, spaceUid }), loggerContext), + execute: (service) => service.bulkDelete(spaceUid, workspace, deleteRows), + failureFallback: 'CS Assets bulk delete failed', + successOpts: (result) => ({ jobId: result.jobId, notice: result.notice, spaceUid }), + }; + } else { + if (f.locale) { + log.error($t(messages.CS_ASSETS_LOCALE_NOT_ALLOWED_FOR_MOVE), loggerContext); + process.exitCode = 1; + return; + } + + const moveFolderUid = (f['target-folder-uid'] ?? '').trim(); + if (!moveFolderUid) { + log.error($t(messages.TARGET_FOLDER_REQUIRED), loggerContext); + process.exitCode = 1; + return; + } + + const uids = tryLoadFromFile(() => loadAssetUidsFromFile(assetUidsPath), loggerContext); + if (!uids) return; + + plan = { + summaryLines: [ + 'Operation: CS Assets bulk move', + ...commonSummaryLines, + `Target folder UID: ${moveFolderUid}`, + `Asset UIDs file: ${assetUidsPath}`, + `Assets: ${uids.length}`, + ], + logStart: () => + log.info( + $t(messages.CS_ASSETS_MOVING_ASSETS, { count: uids.length, targetFolderUid: moveFolderUid }), + loggerContext + ), + execute: (service) => service.bulkMove(spaceUid, workspace, uids, moveFolderUid), + failureFallback: 'CS Assets bulk move failed', + successOpts: (result) => ({ count: uids.length, folderUid: moveFolderUid, notice: result.notice, spaceUid }), + }; + } + + createLogContext(commandId, spaceUid, 'OAuth/Token'); + const csAssetsService = new CsAssetsService(csAssetsBaseUrl, spaceUid, orgUid); + + if (!(await confirmProceed(plan.summaryLines, f.yes, loggerContext))) { + return; + } + + plan.logStart(); + const result = await plan.execute(csAssetsService); + if (!result.success) { + printCsAssetsSummary(op, { error: result.error ?? plan.failureFallback, spaceUid }, loggerContext); + process.exitCode = 1; + return; + } + printCsAssetsSummary(op, plan.successOpts(result), loggerContext); + } catch (error) { + handleAndLogError(error as Error); + } +} diff --git a/packages/contentstack-bulk-operations/src/utils/index.ts b/packages/contentstack-bulk-operations/src/utils/index.ts index aa1d8801f..651b8c755 100644 --- a/packages/contentstack-bulk-operations/src/utils/index.ts +++ b/packages/contentstack-bulk-operations/src/utils/index.ts @@ -35,7 +35,15 @@ import { buildBulkModeResult, handleOperationError, } from './command-helpers'; -import { fillMissingFlags, fillMissingCsAssetsFlags } from './interactive'; +import { fillMissingFlags, fillMissingCsAssetsFlags, promptForOperation } from './interactive'; +import { runCsAssetsOperation } from './cs-assets-runner'; +import { + validateOperationFlagMatrix, + enforceOperationFlagMatrix, + getOperationFromArgv, + OperationFlagMatrixError, + RETRY_REVERT_CONTEXT, +} from './operation-flag-matrix'; import { RATE_LIMITER_CONSTANTS, RETRY_STRATEGY_CONSTANTS, @@ -99,6 +107,13 @@ export { handleOperationError, fillMissingFlags, fillMissingCsAssetsFlags, + promptForOperation, + runCsAssetsOperation, + validateOperationFlagMatrix, + enforceOperationFlagMatrix, + getOperationFromArgv, + OperationFlagMatrixError, + RETRY_REVERT_CONTEXT, fetchTaxonomyList, RATE_LIMITER_CONSTANTS, RETRY_STRATEGY_CONSTANTS, diff --git a/packages/contentstack-bulk-operations/src/utils/interactive.ts b/packages/contentstack-bulk-operations/src/utils/interactive.ts index 448d1d5ca..2066c7809 100644 --- a/packages/contentstack-bulk-operations/src/utils/interactive.ts +++ b/packages/contentstack-bulk-operations/src/utils/interactive.ts @@ -2,15 +2,19 @@ import { cliux, configHandler, isAuthenticated } from '@contentstack/cli-utiliti import { OperationType, FilterType } from '../interfaces'; import { messages } from './index'; -async function promptForOperation(): Promise { +const DEFAULT_OPERATION_CHOICES = [ + { name: 'Publish', value: OperationType.PUBLISH }, + { name: 'Unpublish', value: OperationType.UNPUBLISH }, +]; + +export async function promptForOperation( + choices: Array<{ name: string; value: string }> = DEFAULT_OPERATION_CHOICES +): Promise { return cliux.inquire({ type: 'list', name: 'operation', message: messages.SELECT_OPERATION, - choices: [ - { name: 'Publish', value: OperationType.PUBLISH }, - { name: 'Unpublish', value: OperationType.UNPUBLISH }, - ], + choices, }); } @@ -235,9 +239,10 @@ async function runInteractivePrompts(prompts: Array<() => Promise>): Promi } /** - * Fills in missing flags for the bulk-am-assets command by prompting the user. + * Fills in missing flags for CS Assets delete/move operations by prompting the user. * Handles CS Assets-specific required flags including operation-conditional ones * (locale for delete, target-folder-uid for move). + * The operation itself is always resolved by the command's init() before this runs. * Throws in non-TTY environments when required flags are missing. */ export async function fillMissingCsAssetsFlags(flags: any): Promise { @@ -245,15 +250,13 @@ export async function fillMissingCsAssetsFlags(flags: any): Promise { const needsLocale = f.operation === 'delete' && !f.locale; const needsFolderUid = f.operation === 'move' && !f['target-folder-uid']; - const needsPrompt = - !f.operation || !f['space-uid'] || !f['org-uid'] || !f['asset-uids-file'] || needsLocale || needsFolderUid; + const needsPrompt = !f['space-uid'] || !f['org-uid'] || !f['asset-uids-file'] || needsLocale || needsFolderUid; if (!needsPrompt) return f; // Fail fast in non-interactive environments (CI/CD) rather than hanging on stdin if (!process.stdin.isTTY) { const missing = [ - !f.operation && '--operation', !f['space-uid'] && '--space-uid', !f['org-uid'] && '--org-uid', !f['asset-uids-file'] && '--asset-uids-file', @@ -266,19 +269,6 @@ export async function fillMissingCsAssetsFlags(flags: any): Promise { } await runInteractivePrompts([ - async () => { - if (!f.operation) { - f.operation = await cliux.inquire({ - type: 'list', - name: 'operation', - message: messages.CS_ASSETS_SELECT_OPERATION, - choices: [ - { name: 'Delete (CS Assets bulk delete)', value: 'delete' }, - { name: 'Move (CS Assets bulk move)', value: 'move' }, - ], - }); - } - }, async () => { if (!f['space-uid']) { f['space-uid'] = await cliux.inquire({ diff --git a/packages/contentstack-bulk-operations/src/utils/operation-flag-matrix.ts b/packages/contentstack-bulk-operations/src/utils/operation-flag-matrix.ts new file mode 100644 index 000000000..5d3ad02f1 --- /dev/null +++ b/packages/contentstack-bulk-operations/src/utils/operation-flag-matrix.ts @@ -0,0 +1,157 @@ +import { log } from '@contentstack/cli-utilities'; + +import messages, { $t } from '../messages'; +import { OperationType } from '../interfaces'; + +/** + * Per-operation flag matrix for the merged `cm:stacks:bulk-assets` command. + * + * publish/unpublish (CMS) and delete/move (CS Assets) share a single command but + * use disjoint flag sets and auth models. oclif cannot express operation-conditional + * flags statically, so this validates the RAW argv: several CMS flags carry defaults + * (--branch, --publish-mode, --bulk-operation-file), which makes parsed flags unable + * to distinguish "user passed it" from "default filled it". + */ + +interface FlagSpec { + /** Long flag name without leading dashes */ + name: string; + /** Optional short char without leading dash */ + char?: string; +} + +/** Flags only meaningful for CMS publish/unpublish operations. */ +const CMS_ONLY_FLAGS: FlagSpec[] = [ + { name: 'stack-api-key', char: 'k' }, + { name: 'alias', char: 'a' }, + { name: 'environments' }, + { name: 'locales' }, + { name: 'source-env' }, + { name: 'source-alias' }, + { name: 'publish-mode' }, + { name: 'branch' }, + { name: 'config', char: 'c' }, + { name: 'retry-failed' }, + { name: 'revert' }, + { name: 'bulk-operation-file' }, + { name: 'folder-uid' }, +]; + +/** Flags only meaningful for CS Assets delete/move operations. */ +const CS_ASSETS_ONLY_FLAGS: FlagSpec[] = [ + { name: 'space-uid' }, + { name: 'org-uid' }, + { name: 'asset-uids-file' }, + { name: 'locale' }, + { name: 'target-folder-uid' }, + { name: 'workspace' }, +]; + +/** Did-you-mean hints for the twin locale flags. */ +const FLAG_HINTS: Record> = { + locales: { + [OperationType.DELETE]: ' Did you mean --locale?', + }, + locale: { + [OperationType.PUBLISH]: ' Did you mean --locales?', + [OperationType.UNPUBLISH]: ' Did you mean --locales?', + }, +}; + +/** + * Returns true when the given flag was explicitly passed on the command line. + * Handles `--flag`, `--flag=value`, `--no-flag`, and short forms `-k` / `-k=value`. + */ +function isFlagInArgv(argv: string[], spec: FlagSpec): boolean { + return argv.some((token) => { + if (!token.startsWith('-')) return false; + // Strip `=value` if present + const bare = token.split('=')[0]; + if (bare === `--${spec.name}` || bare === `--no-${spec.name}`) return true; + if (spec.char && bare === `-${spec.char}`) return true; + return false; + }); +} + +function isCsAssetsOperation(operation: string): boolean { + return operation === OperationType.DELETE || operation === OperationType.MOVE; +} + +/** + * Sentinel operation context for the --retry-failed/--revert path, where no + * --operation flag is given but CS Assets flags must still be rejected. + */ +export const RETRY_REVERT_CONTEXT = 'retry/revert'; + +/** Thrown by enforceOperationFlagMatrix so init() aborts without process.exit(). */ +export class OperationFlagMatrixError extends Error { + readonly violations: string[]; + + constructor(violations: string[]) { + super(violations.join('\n')); + this.name = 'OperationFlagMatrixError'; + this.violations = violations; + } +} + +/** + * Validates that no cross-operation flags were explicitly passed for the resolved + * operation. Returns the list of violation messages (empty when valid). + */ +export function validateOperationFlagMatrix(operation: string, argv: string[]): string[] { + const violations: string[] = []; + + const rejected = isCsAssetsOperation(operation) ? CMS_ONLY_FLAGS : CS_ASSETS_ONLY_FLAGS; + + for (const spec of rejected) { + if (isFlagInArgv(argv, spec)) { + if (operation === RETRY_REVERT_CONTEXT) { + violations.push($t(messages.FLAG_NOT_ALLOWED_WITH_RETRY_REVERT, { flag: `--${spec.name}` })); + } else { + const hint = FLAG_HINTS[spec.name]?.[operation] ?? ''; + violations.push($t(messages.FLAG_NOT_ALLOWED_FOR_OPERATION, { flag: `--${spec.name}`, operation, hint })); + } + } + } + + // move additionally rejects --locale (delete-only within the CS Assets pair) + if (operation === OperationType.MOVE && isFlagInArgv(argv, { name: 'locale' })) { + violations.push(messages.CS_ASSETS_LOCALE_NOT_ALLOWED_FOR_MOVE); + } + + return violations; +} + +/** + * Runs the matrix validation. On violations: logs each one, sets a non-zero exit + * code, and throws OperationFlagMatrixError to abort init(). Throwing (instead of + * process.exit) lets oclif run its catch/finally hooks and keeps this testable. + */ +export function enforceOperationFlagMatrix(operation: string, argv: string[], loggerContext?: unknown): void { + const violations = validateOperationFlagMatrix(operation, argv); + if (violations.length > 0) { + for (const violation of violations) { + log.error(violation, loggerContext); + } + process.exitCode = 1; + throw new OperationFlagMatrixError(violations); + } +} + +/** + * Extracts the value of `--operation` from raw argv without a full oclif parse + * (parse cannot run before init, and init needs the operation to pick a pipeline). + * Returns undefined when the flag is absent. + */ +export function getOperationFromArgv(argv: string[]): string | undefined { + for (let i = 0; i < argv.length; i++) { + const token = argv[i]; + if (token === '--operation') { + return argv[i + 1]; + } + if (token.startsWith('--operation=')) { + return token.slice('--operation='.length); + } + } + return undefined; +} diff --git a/packages/contentstack-bulk-operations/test/unit/commands/bulk-am-assets.test.ts b/packages/contentstack-bulk-operations/test/unit/commands/bulk-assets-cs-assets.test.ts similarity index 53% rename from packages/contentstack-bulk-operations/test/unit/commands/bulk-am-assets.test.ts rename to packages/contentstack-bulk-operations/test/unit/commands/bulk-assets-cs-assets.test.ts index 4f31c7761..b004ba5de 100644 --- a/packages/contentstack-bulk-operations/test/unit/commands/bulk-am-assets.test.ts +++ b/packages/contentstack-bulk-operations/test/unit/commands/bulk-assets-cs-assets.test.ts @@ -2,11 +2,16 @@ import sinon from 'sinon'; import { expect } from 'chai'; import { describe, it, beforeEach, afterEach } from 'mocha'; -import BulkCsAssets from '../../../src/commands/cm/stacks/bulk-am-assets'; +import BulkAssets from '../../../src/commands/cm/stacks/bulk-assets'; -describe('BulkCsAssets command', () => { +/** + * CS Assets delete/move path of the merged cm:stacks:bulk-assets command + * (formerly cm:stacks:bulk-am-assets). + */ +describe('BulkAssets command — CS Assets delete/move path', () => { let sandbox: sinon.SinonSandbox; - let command: BulkCsAssets; + let command: BulkAssets; + let authHandler: any; const baseDeleteFlags = { operation: 'delete', @@ -32,12 +37,24 @@ describe('BulkCsAssets command', () => { Object.defineProperty(command, 'region', { value, configurable: true, writable: true }); } + function setCsAssetsFlags(flags: object): void { + (command as any).csAssetsMode = true; + (command as any).csAssetsFlags = { ...flags }; + (command as any).loggerContext = { module: 'cm:stacks:bulk-assets' }; + } + + function stubAuthSuccess(): void { + sandbox.stub(authHandler, 'getAuthDetails').resolves(); + sandbox.stub(Object.getPrototypeOf(authHandler), 'accessToken').get(() => 'test-token'); + } + beforeEach(() => { sandbox = sinon.createSandbox(); - command = new BulkCsAssets([], {} as any); - (command as any).parsedFlags = { ...baseDeleteFlags }; - (command as any).loggerContext = { module: 'cm:stacks:bulk-am-assets' }; + command = new BulkAssets([], {} as any); + setCsAssetsFlags(baseDeleteFlags); setRegion({}); + + authHandler = require('@contentstack/cli-utilities').authenticationHandler; }); afterEach(() => { @@ -47,7 +64,35 @@ describe('BulkCsAssets command', () => { describe('AM URL validation', () => { it('should set exitCode=1 when AM URL is not configured in region', async () => { - setRegion({}); // no csAssetsUrl + setRegion({}); // no csAssetsUrl + + await command.run(); + + expect(process.exitCode).to.equal(1); + }); + }); + + describe('auth pre-flight', () => { + it('should set exitCode=1 and skip the API when no auth token is available', async () => { + setRegion({ csAssetsUrl: 'https://assets.example.com' }); + sandbox.stub(authHandler, 'getAuthDetails').resolves(); + sandbox.stub(Object.getPrototypeOf(authHandler), 'accessToken').get(() => ''); + + const assetUidsModule = require('../../../src/utils/asset-uids-from-file'); + const loadStub = sandbox.stub(assetUidsModule, 'loadBulkDeleteItemsFromFile'); + const amServiceModule = require('../../../src/services/am-asset-service'); + const deleteStub = sandbox.stub(amServiceModule.CsAssetsService.prototype, 'bulkDelete'); + + await command.run(); + + expect(process.exitCode).to.equal(1); + expect(loadStub.called).to.be.false; // fails before reading any files + expect(deleteStub.called).to.be.false; + }); + + it('should set exitCode=1 when fetching auth details throws', async () => { + setRegion({ csAssetsUrl: 'https://assets.example.com' }); + sandbox.stub(authHandler, 'getAuthDetails').rejects(new Error('not logged in')); await command.run(); @@ -57,8 +102,9 @@ describe('BulkCsAssets command', () => { describe('locale not allowed for move', () => { it('should set exitCode=1 when --locale is passed with --operation move', async () => { - (command as any).parsedFlags = { ...baseMoveFlags, locale: 'en-us' }; + setCsAssetsFlags({ ...baseMoveFlags, locale: 'en-us' }); setRegion({ csAssetsUrl: 'https://assets.example.com' }); + stubAuthSuccess(); // Stub the file loader to confirm it is NOT reached const assetUidsModule = require('../../../src/utils/asset-uids-from-file'); @@ -67,12 +113,13 @@ describe('BulkCsAssets command', () => { await command.run(); expect(process.exitCode).to.equal(1); - expect(loadStub.called).to.be.false; // Should have exited before loading files + expect(loadStub.called).to.be.false; // Should have exited before loading files }); it('should NOT set exitCode when --locale is absent for move and API succeeds', async () => { - (command as any).parsedFlags = { ...baseMoveFlags }; + setCsAssetsFlags({ ...baseMoveFlags }); setRegion({ csAssetsUrl: 'https://assets.example.com' }); + stubAuthSuccess(); const assetUidsModule = require('../../../src/utils/asset-uids-from-file'); sandbox.stub(assetUidsModule, 'loadAssetUidsFromFile').returns(['uid1', 'uid2']); @@ -92,6 +139,7 @@ describe('BulkCsAssets command', () => { describe('delete operation', () => { beforeEach(() => { setRegion({ csAssetsUrl: 'https://assets.example.com' }); + stubAuthSuccess(); }); it('should NOT set exitCode on successful delete', async () => { @@ -125,14 +173,30 @@ describe('BulkCsAssets command', () => { }); }); - describe('BaseCsAssetsCommand isolation — no publish/unpublish infrastructure', () => { - it('should not have bulkOperationConfig, queueManager, or managementStack on the instance', () => { - // BulkCsAssets extends BaseCsAssetsCommand, NOT BaseBulkCommand. - // None of these publish/unpublish properties should exist. + describe('CS Assets path isolation — no publish/unpublish infrastructure', () => { + it('should not touch bulkOperationConfig, queueManager, or managementStack when running delete/move', async () => { + setRegion({ csAssetsUrl: 'https://assets.example.com' }); + stubAuthSuccess(); + + const assetUidsModule = require('../../../src/utils/asset-uids-from-file'); + sandbox.stub(assetUidsModule, 'loadBulkDeleteItemsFromFile').returns([{ uid: 'u1', locale: 'en-us' }]); + const amServiceModule = require('../../../src/services/am-asset-service'); + sandbox.stub(amServiceModule.CsAssetsService.prototype, 'bulkDelete').resolves({ success: true, jobId: 'j1' }); + + await command.run(); + + // The CS Assets path must never initialize the bulk-publish pipeline. expect((command as any).bulkOperationConfig).to.be.undefined; expect((command as any).queueManager).to.be.undefined; expect((command as any).managementStack).to.be.undefined; expect((command as any).rateLimiter).to.be.undefined; }); + + it('shouldSkipBulkPipeline() should reflect csAssetsMode', () => { + (command as any).csAssetsMode = true; + expect((command as any).shouldSkipBulkPipeline()).to.be.true; + (command as any).csAssetsMode = false; + expect((command as any).shouldSkipBulkPipeline()).to.be.false; + }); }); }); diff --git a/packages/contentstack-bulk-operations/test/unit/commands/bulk-assets-init.test.ts b/packages/contentstack-bulk-operations/test/unit/commands/bulk-assets-init.test.ts new file mode 100644 index 000000000..381347841 --- /dev/null +++ b/packages/contentstack-bulk-operations/test/unit/commands/bulk-assets-init.test.ts @@ -0,0 +1,244 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import sinon from 'sinon'; +import { expect } from 'chai'; +import { describe, it, beforeEach, afterEach } from 'mocha'; +import { Command } from '@contentstack/cli-command'; +import BulkAssets from '../../../src/commands/cm/stacks/bulk-assets'; +import { BaseBulkCommand } from '../../../src/base-bulk-command'; +import { OperationFlagMatrixError } from '../../../src/utils/operation-flag-matrix'; + +/** + * Integration tests for the merged command's init() dispatch: operation + * resolution from argv, flag-matrix enforcement, pipeline selection, and the + * interactive prompt fallback. + */ +describe('BulkAssets command — init() dispatch', () => { + let sandbox: sinon.SinonSandbox; + let command: BulkAssets; + // The utils barrel re-exports via getters, so stubs must target the defining modules + let interactiveModule: any; + let logHandlerModule: any; + let cliUtilitiesModule: any; + let logStub: any; + let originalIsTTY: PropertyDescriptor | undefined; + + function setStdinTTY(value: boolean): void { + Object.defineProperty(process.stdin, 'isTTY', { value, configurable: true }); + } + + const csDeleteArgv = [ + '--operation', + 'delete', + '--space-uid', + 'sp1', + '--org-uid', + 'org1', + '--asset-uids-file', + './assets.json', + '--locale', + 'en-us', + '-y', + ]; + + function makeCommand(argv: string[]): BulkAssets { + const cmd = new BulkAssets(argv, {} as any); + (cmd as any).config = { + runHook: sandbox.stub().resolves(), + bin: 'test-bin', + version: '1.0.0', + }; + return cmd; + } + + beforeEach(() => { + sandbox = sinon.createSandbox(); + + cliUtilitiesModule = require('@contentstack/cli-utilities'); + logStub = { + info: sandbox.stub(), + warn: sandbox.stub(), + error: sandbox.stub(), + debug: sandbox.stub(), + success: sandbox.stub(), + }; + sandbox.stub(cliUtilitiesModule, 'log').value(logStub); + sandbox.stub(cliUtilitiesModule, 'handleAndLogError').callsFake(() => {}); + sandbox.stub(cliUtilitiesModule, 'createLogContext').callsFake(() => {}); + + interactiveModule = require('../../../src/utils/interactive'); + logHandlerModule = require('../../../src/utils/bulk-operation-log-handler'); + originalIsTTY = Object.getOwnPropertyDescriptor(process.stdin, 'isTTY'); + + // Stub the framework-level init so no real oclif/CLI setup runs + sandbox.stub(Command.prototype, 'init' as any).resolves(); + }); + + afterEach(() => { + sandbox.restore(); + process.exitCode = undefined; + if (originalIsTTY) { + Object.defineProperty(process.stdin, 'isTTY', originalIsTTY); + } else { + delete (process.stdin as any).isTTY; + } + }); + + describe('delete/move → CS Assets pipeline', () => { + it('skips the bulk pipeline entirely and fills CS Assets flags', async () => { + command = makeCommand([...csDeleteArgv]); + + const parsedFlags = { + operation: 'delete', + 'space-uid': 'sp1', + 'org-uid': 'org1', + 'asset-uids-file': './assets.json', + locale: 'en-us', + workspace: 'main', + yes: true, + }; + sandbox.stub(command as any, 'parse').resolves({ flags: parsedFlags }); + const fillStub = sandbox.stub(interactiveModule, 'fillMissingCsAssetsFlags').resolvesArg(0); + + const buildConfigSpy = sandbox.spy(command as any, 'buildConfiguration'); + const setupStackSpy = sandbox.spy(command as any, 'setupStack'); + + await (command as any).init(); + + expect((command as any).csAssetsMode).to.be.true; + expect((command as any).shouldSkipBulkPipeline()).to.be.true; + expect(fillStub.calledOnce).to.be.true; + expect((command as any).csAssetsFlags).to.deep.equal(parsedFlags); + // Bulk-publish pipeline must never run for CS Assets operations + expect(buildConfigSpy.called).to.be.false; + expect(setupStackSpy.called).to.be.false; + expect((command as any).queueManager).to.be.undefined; + expect((command as any).rateLimiter).to.be.undefined; + }); + }); + + describe('publish/unpublish → CMS pipeline', () => { + it('runs the full BaseBulkCommand pipeline', async () => { + command = makeCommand(['--operation', 'publish', '--environments', 'dev', '--locales', 'en-us', '-k', 'blt1']); + + sandbox.stub(command as any, 'parse').resolves({ + flags: { + operation: 'publish', + environments: ['dev'], + locales: ['en-us'], + 'stack-api-key': 'blt1', + }, + }); + sandbox.stub(interactiveModule, 'fillMissingFlags').resolvesArg(0); + sandbox.stub(logHandlerModule, 'clearLogs').returns(undefined); + const fillCsStub = sandbox.stub(interactiveModule, 'fillMissingCsAssetsFlags'); + + const buildConfigStub = sandbox.stub(command as any, 'buildConfiguration').callsFake(() => { + (command as any).bulkOperationConfig = { + operation: 'publish', + environments: ['dev'], + locales: ['en-us'], + bulkOperationFolder: '/mock/bulk-operation', + }; + return Promise.resolve(); + }); + const setupStackStub = sandbox.stub(command as any, 'setupStack').resolves(); + const initComponentsStub = sandbox.stub(command as any, 'initializeComponents').resolves(); + + await (command as any).init(); + + expect((command as any).csAssetsMode).to.be.false; + expect((command as any).shouldSkipBulkPipeline()).to.be.false; + expect(buildConfigStub.calledOnce).to.be.true; + expect(setupStackStub.calledOnce).to.be.true; + expect(initComponentsStub.calledOnce).to.be.true; + expect(fillCsStub.called).to.be.false; + }); + }); + + describe('flag-matrix enforcement', () => { + it('aborts init with OperationFlagMatrixError when a CMS flag is passed with delete', async () => { + command = makeCommand(['--operation', 'delete', '--environments', 'dev']); + const parseSpy = sandbox.spy(command as any, 'parse'); + + let thrown: unknown; + try { + await (command as any).init(); + } catch (e) { + thrown = e; + } + + expect(thrown).to.be.instanceOf(OperationFlagMatrixError); + expect(process.exitCode).to.equal(1); + expect(logStub.error.called).to.be.true; + expect(parseSpy.called).to.be.false; // aborted before any pipeline work + }); + + it('catch() swallows OperationFlagMatrixError without double-logging', async () => { + command = makeCommand([]); + const baseCatchStub = sandbox.stub(BaseBulkCommand.prototype, 'catch').resolves(); + + await (command as any).catch(new OperationFlagMatrixError(['--environments is not valid'])); + + expect(baseCatchStub.called).to.be.false; // violations already logged by enforce + }); + + it('catch() delegates other errors to the base handler', async () => { + command = makeCommand([]); + const baseCatchStub = sandbox.stub(BaseBulkCommand.prototype, 'catch').resolves(); + + await (command as any).catch(new Error('boom')); + + expect(baseCatchStub.calledOnce).to.be.true; + }); + }); + + describe('operation resolution', () => { + it('throws in non-TTY environments when --operation is missing', async () => { + command = makeCommand([]); + setStdinTTY(false); + + let thrown: unknown; + try { + await (command as any).init(); + } catch (e) { + thrown = e; + } + + expect(thrown).to.be.instanceOf(Error); + expect((thrown as Error).message).to.include('--operation'); + }); + + it('prompts with all four operations and feeds the answer back into argv', async () => { + command = makeCommand([]); + setStdinTTY(true); + + const promptStub = sandbox.stub(interactiveModule, 'promptForOperation').resolves('delete'); + sandbox.stub(command as any, 'parse').resolves({ flags: { operation: 'delete' } }); + sandbox.stub(interactiveModule, 'fillMissingCsAssetsFlags').resolvesArg(0); + + await (command as any).init(); + + expect(promptStub.calledOnce).to.be.true; + const choices = promptStub.firstCall.args[0]; + expect(choices.map((c: any) => c.value)).to.deep.equal(['publish', 'unpublish', 'delete', 'move']); + expect((command as any).argv).to.include.members(['--operation', 'delete']); + expect((command as any).csAssetsMode).to.be.true; + }); + + it('does not prompt on the retry/revert path but still rejects CS Assets flags', async () => { + command = makeCommand(['--retry-failed', './bulk-operation', '--space-uid', 'sp1']); + const promptStub = sandbox.stub(interactiveModule, 'promptForOperation'); + + let thrown: unknown; + try { + await (command as any).init(); + } catch (e) { + thrown = e; + } + + expect(promptStub.called).to.be.false; + expect(thrown).to.be.instanceOf(OperationFlagMatrixError); + expect(logStub.error.firstCall.args[0]).to.include('--retry-failed/--revert'); + }); + }); +}); diff --git a/packages/contentstack-bulk-operations/test/unit/utils/interactive.test.ts b/packages/contentstack-bulk-operations/test/unit/utils/interactive.test.ts index 371a23839..c75cfb1fa 100644 --- a/packages/contentstack-bulk-operations/test/unit/utils/interactive.test.ts +++ b/packages/contentstack-bulk-operations/test/unit/utils/interactive.test.ts @@ -472,13 +472,13 @@ describe('Interactive Prompts', () => { it('should throw in non-TTY when required base flags are missing', async () => { Object.defineProperty(process.stdin, 'isTTY', { value: false, configurable: true }); - const flags = { workspace: 'main', yes: false }; + const flags = { operation: 'delete', workspace: 'main', yes: false }; try { await fillMissingCsAssetsFlags(flags); expect.fail('Should have thrown'); } catch (error: any) { - expect(error.message).to.include('--operation'); + expect(error.message).to.not.include('--operation,'); expect(error.message).to.include('--space-uid'); expect(error.message).to.include('--org-uid'); expect(error.message).to.include('--asset-uids-file'); @@ -525,13 +525,13 @@ describe('Interactive Prompts', () => { it('should prompt for all missing base flags in TTY and show interactive header/footer', async () => { Object.defineProperty(process.stdin, 'isTTY', { value: true, configurable: true }); - const flags = {}; + // operation is always resolved by the command's init() before this runs + const flags = { operation: 'delete' }; - inquireStub.onCall(0).resolves('delete'); // operation - inquireStub.onCall(1).resolves('sp123'); // space-uid - inquireStub.onCall(2).resolves('org456'); // org-uid - inquireStub.onCall(3).resolves('./assets.json'); // asset-uids-file - inquireStub.onCall(4).resolves('en-us'); // locale (delete-conditional) + inquireStub.onCall(0).resolves('sp123'); // space-uid + inquireStub.onCall(1).resolves('org456'); // org-uid + inquireStub.onCall(2).resolves('./assets.json'); // asset-uids-file + inquireStub.onCall(3).resolves('en-us'); // locale (delete-conditional) const result = await fillMissingCsAssetsFlags(flags); @@ -598,25 +598,22 @@ describe('Interactive Prompts', () => { expect(inquireStub.called).to.be.false; }); - it('should present delete/move choices for the operation prompt', async () => { + it('should never prompt for the operation (resolved by init() before this runs)', async () => { Object.defineProperty(process.stdin, 'isTTY', { value: true, configurable: true }); const flags = { + operation: 'delete', 'space-uid': 'sp123', 'org-uid': 'org456', 'asset-uids-file': './assets.json', - 'target-folder-uid': 'folderABC', }; - inquireStub.onCall(0).resolves('move'); // operation + inquireStub.onCall(0).resolves('en-us'); // locale await fillMissingCsAssetsFlags(flags); - const operationCall = inquireStub.firstCall.args[0]; - expect(operationCall.type).to.equal('list'); - const values = operationCall.choices.map((c: any) => c.value); - expect(values).to.include('delete'); - expect(values).to.include('move'); + const promptNames = inquireStub.getCalls().map((c: any) => c.args[0].name); + expect(promptNames).to.not.include('operation'); }); it('should validate that space-uid is not blank', async () => { diff --git a/packages/contentstack-bulk-operations/test/unit/utils/operation-flag-matrix.test.ts b/packages/contentstack-bulk-operations/test/unit/utils/operation-flag-matrix.test.ts new file mode 100644 index 000000000..84a01cf8b --- /dev/null +++ b/packages/contentstack-bulk-operations/test/unit/utils/operation-flag-matrix.test.ts @@ -0,0 +1,176 @@ +import sinon from 'sinon'; +import { expect } from 'chai'; +import { describe, it, beforeEach, afterEach } from 'mocha'; +import { + validateOperationFlagMatrix, + enforceOperationFlagMatrix, + getOperationFromArgv, + OperationFlagMatrixError, + RETRY_REVERT_CONTEXT, +} from '../../../src/utils/operation-flag-matrix'; + +describe('operation-flag-matrix', () => { + describe('validateOperationFlagMatrix', () => { + describe('delete/move reject CMS-only flags', () => { + it('rejects --environments with delete', () => { + const violations = validateOperationFlagMatrix('delete', ['--operation', 'delete', '--environments', 'dev']); + expect(violations).to.have.lengthOf(1); + expect(violations[0]).to.include('--environments'); + expect(violations[0]).to.include('delete'); + }); + + it('rejects explicitly passed defaulted flags (--branch, --publish-mode) with delete', () => { + const violations = validateOperationFlagMatrix('delete', [ + '--operation', + 'delete', + '--branch', + 'dev', + '--publish-mode', + 'bulk', + ]); + expect(violations).to.have.lengthOf(2); + expect(violations.join(' ')).to.include('--branch'); + expect(violations.join(' ')).to.include('--publish-mode'); + }); + + it('does NOT trip on flag defaults when they are not in argv', () => { + // --branch defaults to "main" after parse, but was never passed + const violations = validateOperationFlagMatrix('delete', [ + '--operation', + 'delete', + '--space-uid', + 'sp1', + '--org-uid', + 'org1', + '--asset-uids-file', + './assets.json', + '--locale', + 'en-us', + '-y', + ]); + expect(violations).to.be.empty; + }); + + it('rejects short flags -k and -a with move', () => { + const violations = validateOperationFlagMatrix('move', ['-k', 'blt123', '-a', 'myAlias']); + expect(violations).to.have.lengthOf(2); + }); + + it('rejects --flag=value form', () => { + const violations = validateOperationFlagMatrix('delete', ['--environments=dev']); + expect(violations).to.have.lengthOf(1); + }); + + it('rejects --retry-failed and --revert with delete', () => { + const violations = validateOperationFlagMatrix('delete', ['--retry-failed', './log', '--revert', './log']); + expect(violations).to.have.lengthOf(2); + }); + + it('adds a did-you-mean hint for --locales with delete', () => { + const violations = validateOperationFlagMatrix('delete', ['--locales', 'en-us']); + expect(violations).to.have.lengthOf(1); + expect(violations[0]).to.include('--locale?'); + }); + + it('rejects --locale with move (delete-only flag within CS Assets pair)', () => { + const violations = validateOperationFlagMatrix('move', ['--locale', 'en-us']); + expect(violations).to.have.lengthOf(1); + expect(violations[0]).to.include('--locale'); + }); + }); + + describe('publish/unpublish reject CS Assets flags', () => { + it('rejects --space-uid with publish', () => { + const violations = validateOperationFlagMatrix('publish', ['--space-uid', 'sp1']); + expect(violations).to.have.lengthOf(1); + expect(violations[0]).to.include('--space-uid'); + }); + + it('adds a did-you-mean hint for --locale with publish', () => { + const violations = validateOperationFlagMatrix('publish', ['--locale', 'en-us']); + expect(violations).to.have.lengthOf(1); + expect(violations[0]).to.include('--locales?'); + }); + + it('accepts a normal publish invocation', () => { + const violations = validateOperationFlagMatrix('publish', [ + '--operation', + 'publish', + '--environments', + 'dev', + '--locales', + 'en-us', + '-k', + 'blt123', + ]); + expect(violations).to.be.empty; + }); + + it('rejects CS Assets flags on the retry/revert path (no operation given)', () => { + const violations = validateOperationFlagMatrix(RETRY_REVERT_CONTEXT, [ + '--retry-failed', + './log', + '--space-uid', + 'sp1', + ]); + expect(violations).to.have.lengthOf(1); + expect(violations[0]).to.include('--space-uid'); + // retry/revert is not an operation the user typed — message must not present it as one + expect(violations[0]).to.include('--retry-failed/--revert'); + expect(violations[0]).to.not.include('operation "retry/revert"'); + }); + }); + }); + + describe('enforceOperationFlagMatrix', () => { + let sandbox: sinon.SinonSandbox; + let logErrorStub: sinon.SinonStub; + + beforeEach(() => { + sandbox = sinon.createSandbox(); + const cliUtilities = require('@contentstack/cli-utilities'); + logErrorStub = sandbox.stub(); + sandbox.stub(cliUtilities, 'log').value({ error: logErrorStub }); + }); + + afterEach(() => { + sandbox.restore(); + process.exitCode = undefined; + }); + + it('throws OperationFlagMatrixError and sets exitCode=1 on violations (no process.exit)', () => { + let thrown: unknown; + try { + enforceOperationFlagMatrix('delete', ['--environments', 'dev', '--branch', 'main']); + } catch (e) { + thrown = e; + } + + expect(thrown).to.be.instanceOf(OperationFlagMatrixError); + expect((thrown as OperationFlagMatrixError).violations).to.have.lengthOf(2); + expect(process.exitCode).to.equal(1); + expect(logErrorStub.callCount).to.equal(2); // each violation logged individually + }); + + it('does nothing on a valid flag set', () => { + enforceOperationFlagMatrix('delete', ['--operation', 'delete', '--space-uid', 'sp1']); + + expect(process.exitCode).to.not.equal(1); + expect(logErrorStub.called).to.be.false; + }); + }); + + describe('getOperationFromArgv', () => { + it('reads --operation value form', () => { + expect(getOperationFromArgv(['--operation', 'delete'])).to.equal('delete'); + }); + + it('reads --operation=value form', () => { + expect(getOperationFromArgv(['--operation=move'])).to.equal('move'); + }); + + it('returns undefined when absent', () => { + expect(getOperationFromArgv(['--retry-failed', './log'])).to.be.undefined; + }); + }); +}); From 22fd7d3a2eda36d043bcbb6f8beb28b61a953b75 Mon Sep 17 00:00:00 2001 From: Naman Dembla Date: Tue, 14 Jul 2026 13:29:29 +0530 Subject: [PATCH 27/37] Add char option for stack-api-key flag --- packages/contentstack-apps-cli/src/commands/app/install.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/contentstack-apps-cli/src/commands/app/install.ts b/packages/contentstack-apps-cli/src/commands/app/install.ts index 8faf06ebd..7d0cc6663 100644 --- a/packages/contentstack-apps-cli/src/commands/app/install.ts +++ b/packages/contentstack-apps-cli/src/commands/app/install.ts @@ -26,6 +26,7 @@ export default class Install extends AppCLIBaseCommand { description: commonMsg.APP_UID, }), "stack-api-key": flags.string({ + char: "k", description: commonMsg.STACK_API_KEY_placeholder, }), ...AppCLIBaseCommand.baseFlags, From ec822a5bfbac21273ae05d6289078db48c48ec8d Mon Sep 17 00:00:00 2001 From: harshitha-cstk Date: Tue, 14 Jul 2026 15:23:47 +0530 Subject: [PATCH 28/37] feat(bulk-operations): integrate progress manager UI Wire CLIProgressManager/SummaryManager into the bulk operations commands, matching the export/import/audit pattern: - replace the direct `chalk` import with loadChalk()/getChalk() (ESM-safe) - set/clear `log.progressSupportedModule` in init()/finally(); null-reset first so pre-flight/auth/setup errors still reach the console - initialize the run-level global summary + header in executeBulkOperation (empty-branch fallback like import; label suffixed with branch when set) - show a loading spinner while the async batch/job queue drains, then record accurate success/failed counts from the final result - print the global summary and clear the progress-module flag in finally() --- .../src/base-bulk-command.ts | 81 +++++++++++++++++-- 1 file changed, 73 insertions(+), 8 deletions(-) diff --git a/packages/contentstack-bulk-operations/src/base-bulk-command.ts b/packages/contentstack-bulk-operations/src/base-bulk-command.ts index 55436fc33..d932eec2d 100644 --- a/packages/contentstack-bulk-operations/src/base-bulk-command.ts +++ b/packages/contentstack-bulk-operations/src/base-bulk-command.ts @@ -1,6 +1,17 @@ -import chalk from 'chalk'; import { Command } from '@contentstack/cli-command'; -import { flags, log, createLogContext, getLogPath, handleAndLogError, FlagInput } from '@contentstack/cli-utilities'; +import { + flags, + log, + createLogContext, + getLogPath, + handleAndLogError, + FlagInput, + loadChalk, + getChalk, + configHandler, + CLIProgressManager, + clearProgressModuleSetting, +} from '@contentstack/cli-utilities'; import config from './config'; import messages, { $t } from './messages'; @@ -141,6 +152,11 @@ export abstract class BaseBulkCommand extends Command { protected async init(): Promise { await super.init(); + // Progress UI: load chalk (ESM) up-front and clear any stale progress-module flag so + // pre-flight/auth/setup errors always reach the console regardless of showConsoleLogs. + await loadChalk(); + configHandler.set('log.progressSupportedModule', null); + let { flags } = await this.parse(this.constructor as typeof BaseBulkCommand); this.parsedFlags = flags; @@ -176,6 +192,9 @@ export abstract class BaseBulkCommand extends Command { await this.setupStack(); await this.initializeComponents(); + // Setup succeeded — enable progress-bar UI (console logs suppressed by default) for the operation. + configHandler.set('log.progressSupportedModule', 'bulk-operations'); + this.logger.debug($t(messages.INITIALIZING, { resourceType: this.resourceType }), this.loggerContext); } @@ -219,6 +238,9 @@ export abstract class BaseBulkCommand extends Command { await this.setupStack(); await this.initializeComponents(); + // Setup succeeded — enable progress-bar UI for the revert/retry operation. + configHandler.set('log.progressSupportedModule', 'bulk-operations'); + await this.handleRevertOrRetry(mergedFlags); process.exit(0); } @@ -365,20 +387,58 @@ export abstract class BaseBulkCommand extends Command { this.logger.debug($t(messages.EXECUTING_OPERATION, { count: items.length }), this.loggerContext); const startTime = Date.now(); + const showConsoleLogs = Boolean(configHandler.get('log')?.showConsoleLogs); + const operationLabel = (this.bulkOperationConfig.operation || 'operation').toString().toUpperCase(); + + // Initialize the run-level summary + header once (progress-manager UX, same as import). + // Fall back to an empty branch name; displayOperationHeader applies its own `|| 'main'` + // for display, and the label is suffixed with the branch only when one is set. + const branchName = this.bulkOperationConfig.branch || ''; + CLIProgressManager.initializeGlobalSummary( + branchName ? `BULK ${operationLabel}-${branchName}` : `BULK ${operationLabel}`, + branchName, + $t(messages.EXECUTING_OPERATION, { count: items.length }), + ); + + let result: BulkOperationResult; try { logOperationInfo(items, this.logger); const publishMode = this.bulkOperationConfig.publishMode || PublishMode.BULK; this.logger.debug(`Using ${publishMode.toUpperCase()} mode for operation`, this.loggerContext); - if (publishMode === PublishMode.SINGLE) { - return await this.executeSingleMode(items, startTime); - } - - return await this.executeBulkMode(items, startTime); + // The Bulk API submits async batch/jobs, so per-item completion isn't observable + // mid-flight. Show a spinner while the queue drains, then record accurate pass/fail + // counts from the final result into the progress-manager summary. + result = await CLIProgressManager.withLoadingSpinner( + $t(messages.EXECUTING_OPERATION, { count: items.length }), + async () => + publishMode === PublishMode.SINGLE + ? this.executeSingleMode(items, startTime) + : this.executeBulkMode(items, startTime), + ); } catch (error: any) { - return handleOperationError(error, items, startTime); + result = handleOperationError(error, items, startTime); } + + this.recordProgressSummary(result, showConsoleLogs); + return result; + } + + /** + * Record accurate success/failure counts from the final result into the + * CLIProgressManager summary. Bulk operations submit async jobs, so counts come from + * the aggregated result rather than live per-item ticks. + */ + private recordProgressSummary(result: BulkOperationResult, showConsoleLogs: boolean): void { + const total = result?.total || 0; + const failed = result?.failed || 0; + const success = typeof result?.success === 'number' ? result.success : Math.max(total - failed, 0); + + const progress = CLIProgressManager.createSimple(this.resourceType, total, showConsoleLogs); + for (let i = 0; i < success; i++) progress.tick(true); + for (let i = 0; i < failed; i++) progress.tick(false); + progress.complete(failed === 0); } /** @@ -444,6 +504,7 @@ export abstract class BaseBulkCommand extends Command { * Called at the end of run() method in subclasses */ protected printOperationSummary(result: BulkOperationResult): void { + const chalk = getChalk(); const publishMode = this.bulkOperationConfig.publishMode || PublishMode.BULK; console.log(''); @@ -555,6 +616,10 @@ export abstract class BaseBulkCommand extends Command { abstract run(): Promise; protected async finally(_error: Error | undefined): Promise { + // Print the run-level progress summary, then clear the progress-module flag so it + // never leaks into a later command in the same process (mirrors export/import/clone). + CLIProgressManager.printGlobalSummary(); + clearProgressModuleSetting(); await this.cleanup(); } } From 6eba3bab6ec99e66e7fecb07b518af37f525b6be Mon Sep 17 00:00:00 2001 From: naman-contentstack Date: Tue, 14 Jul 2026 17:08:28 +0530 Subject: [PATCH 29/37] update lockfile --- .talismanrc | 2 + pnpm-lock.yaml | 409 +++++++++++++++++++++++++------------------------ 2 files changed, 207 insertions(+), 204 deletions(-) diff --git a/.talismanrc b/.talismanrc index 69162e237..80aa03afe 100644 --- a/.talismanrc +++ b/.talismanrc @@ -5,4 +5,6 @@ fileignoreconfig: checksum: 7d594278c69799ee25a62f12e1ad947861e609d8231bc99791a4f77b01a63674 - filename: packages/contentstack-import-setup/test/unit/login-handler.test.ts checksum: 2df43be75a96e1a3a00dd256628e191909aa9d7f192b672b56cb3772e074958c +- filename: pnpm-lock.yaml + checksum: eae269c31146f807a80978acb68b83b761742b6d8e82116b6af48dcc0156f085 version: "" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 65665e9ff..c8c990cac 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,6 +11,7 @@ overrides: lodash: 4.18.1 brace-expansion: 5.0.7 js-yaml: 4.3.0 + fast-uri: 3.1.3 importers: @@ -82,10 +83,10 @@ importers: version: 0.2.6 '@typescript-eslint/eslint-plugin': specifier: ^8.58.2 - version: 8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@5.9.3))(eslint@10.7.0)(typescript@5.9.3) + version: 8.64.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@5.9.3))(eslint@10.7.0)(typescript@5.9.3) '@typescript-eslint/parser': specifier: ^8.58.2 - version: 8.63.0(eslint@10.7.0)(typescript@5.9.3) + version: 8.64.0(eslint@10.7.0)(typescript@5.9.3) axios: specifier: ^1.16.1 version: 1.18.1(debug@4.4.3) @@ -423,10 +424,10 @@ importers: version: 21.0.1 '@typescript-eslint/eslint-plugin': specifier: ^8.59.2 - version: 8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@6.0.3))(eslint@10.7.0)(typescript@6.0.3) + version: 8.64.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@6.0.3))(eslint@10.7.0)(typescript@6.0.3) '@typescript-eslint/parser': specifier: ^8.59.2 - version: 8.63.0(eslint@10.7.0)(typescript@6.0.3) + version: 8.64.0(eslint@10.7.0)(typescript@6.0.3) chai: specifier: ^6.2.2 version: 6.2.2 @@ -602,10 +603,10 @@ importers: version: 22.20.1 '@typescript-eslint/eslint-plugin': specifier: ^8.59.3 - version: 8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@5.9.3))(eslint@10.7.0)(typescript@5.9.3) + version: 8.64.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@5.9.3))(eslint@10.7.0)(typescript@5.9.3) '@typescript-eslint/parser': specifier: ^8.59.3 - version: 8.63.0(eslint@10.7.0)(typescript@5.9.3) + version: 8.64.0(eslint@10.7.0)(typescript@5.9.3) dotenv: specifier: ^16.6.1 version: 16.6.1 @@ -690,7 +691,7 @@ importers: version: 21.0.1 '@typescript-eslint/eslint-plugin': specifier: ^5.62.0 - version: 5.62.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@5.9.3))(eslint@10.7.0)(typescript@5.9.3) + version: 5.62.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@5.9.3))(eslint@10.7.0)(typescript@5.9.3) chai: specifier: ^4.5.0 version: 4.5.0 @@ -1139,7 +1140,7 @@ importers: version: 14.18.63 '@typescript-eslint/eslint-plugin': specifier: ^5.62.0 - version: 5.62.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@4.9.5))(eslint@10.7.0)(typescript@4.9.5) + version: 5.62.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@4.9.5))(eslint@10.7.0)(typescript@4.9.5) eslint: specifier: ^10.5.0 version: 10.7.0 @@ -1230,7 +1231,7 @@ importers: version: 9.0.8 '@typescript-eslint/eslint-plugin': specifier: ^5.62.0 - version: 5.62.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@5.9.3))(eslint@10.7.0)(typescript@5.9.3) + version: 5.62.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@5.9.3))(eslint@10.7.0)(typescript@5.9.3) chai: specifier: ^4.5.0 version: 4.5.0 @@ -1666,12 +1667,12 @@ packages: resolution: {integrity: sha512-EKnvkXSmz3IpA99tCNuI+dLFXyZyClSm8zns9sB/elvkU+MTuomAs6toJMPMBf98/fICG/urXDkzGz0/c3yyAQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/client-cloudfront@3.1085.0': - resolution: {integrity: sha512-fIGLTXHGFFrlhACzwKjPI/fCPzugTyblU1LV7B0n0BK/1+4udVMdE1OofEbKNlKuy8f1CyeOUaIRmEjcS3bTaA==} + '@aws-sdk/client-cloudfront@3.1086.0': + resolution: {integrity: sha512-MbqWAu9sNRgnCvuTvVSMgsUD9g4DCvhmiXc5G77/Lq3ty6joCsk/VdQ8naqw/IqMZc3HSVZMTqVugI8yHtq4Rw==} engines: {node: '>=20.0.0'} - '@aws-sdk/client-s3@3.1085.0': - resolution: {integrity: sha512-O0xe8sR50AYkwxlvRRsV0qytEO2dtXQTQ1CF3YBBdE5xtVkbu27H0vGa1mjQi1/+fbYM80AWEIPai5jZmXyubw==} + '@aws-sdk/client-s3@3.1086.0': + resolution: {integrity: sha512-6+7mVMPKetZmmF2L1yRJ+rN9b1OwVgc5sju2mj8ixdxuGjtVZ0ekFlcWGBFMQT9gpFk55PPLBng/XRYO3qah5A==} engines: {node: '>=20.0.0'} '@aws-sdk/core@3.975.1': @@ -1694,8 +1695,8 @@ packages: resolution: {integrity: sha512-GREWRrMj0XnNKMaVa/Mauoaui26qBEHu71WWqXbwZOu/jFQOnPZjTf7u0KtGKC8VGa6VUs9kDWGgocrKNLS9vw==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-node@3.972.66': - resolution: {integrity: sha512-f+qjRXZpz7sgzbc4QB+6nLKfyKFgRRXzWdXbsKPv/VhVRyHsDyq4yBWC/B75BAJpFIcUeI2XR/3gdWJ677zB4A==} + '@aws-sdk/credential-provider-node@3.972.67': + resolution: {integrity: sha512-oYlzWst56rlhhjbYnexwv5hVLYe1cW4liLObhDfxDLI4RAQzleMVHQgQgx7XsC4HKj4e3kjT8v9DId+Pi/dndw==} engines: {node: '>=20.0.0'} '@aws-sdk/credential-provider-process@3.972.57': @@ -3692,11 +3693,11 @@ packages: typescript: optional: true - '@typescript-eslint/eslint-plugin@8.63.0': - resolution: {integrity: sha512-rvwSgqT+DHpWdzfSzPatRLm02a0GlESt++9iy3hLCDY4BgkaLcl8LBi9Yh7XGFBpwcBE/K3024QuXWTpbz4FfQ==} + '@typescript-eslint/eslint-plugin@8.64.0': + resolution: {integrity: sha512-CGvQPBxN3wZLu6Rz2kFUpZeoCm78xUic92ck39KPePkO1NPOwjCqdQnm5Q87tpWw9vcBvW8XLrDXjH9PWYtJ3Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.63.0 + '@typescript-eslint/parser': ^8.64.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' @@ -3710,15 +3711,15 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.63.0': - resolution: {integrity: sha512-gwh4gvvlaVDKKxyfxMG+Gnu1u9X0OQBwyGLkbwB65dIzBKnxeRiJlNFqlI3zwVhNXJIs6qV7mlFCn/BIajlVig==} + '@typescript-eslint/parser@8.64.0': + resolution: {integrity: sha512-KA0OshtlcCCXmbfqyZkM5pV3/WNraJf7DkJRLpyrmwPtud57H5BDX7C3k0LPSPxpprfRL+cJDGabF10mvNCoCw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.63.0': - resolution: {integrity: sha512-e5dh0/UI0ok53AlZ5wRkXCB32z/f2jUZqPR/ygAw5WYaSw8j9EoJWlS7wQjr/dmOaqWjnPIn2m+HhVPCMWGZVQ==} + '@typescript-eslint/project-service@8.64.0': + resolution: {integrity: sha512-tk4WpOJ6IEbGrVHaNmM0YRrwAD3exZlIK3iadQNAxh4YKk6jvUQ4ecq18n+v7+meh+cJ3j+D8nbk8sRKhlwLQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' @@ -3735,12 +3736,12 @@ packages: resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/scope-manager@8.63.0': - resolution: {integrity: sha512-uUyfMWCnDSN8bCpcrY8nGP2BLkQ9Xn0GsipcONcpIDWhwhO4ZSyHvyS14U3X75mzxWxL3I2UZIrenTzdzcJO8A==} + '@typescript-eslint/scope-manager@8.64.0': + resolution: {integrity: sha512-CXEaFdYXjSTgKhisNkwCcJwTP8Pl+fmRrEQrri4nm3vU743bALrxzLmq7fHG/7e6a5xO0lDYeURpZmBuhHk54w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.63.0': - resolution: {integrity: sha512-sUAbkulqBAsncKnbRP3+7CtQFRKicexnj7ZwNC6ddCR7EmrXvjvdCYMJbUIqMd6lwoEriZjwLo08aS5tSjVMHg==} + '@typescript-eslint/tsconfig-utils@8.64.0': + resolution: {integrity: sha512-2yo8rRNKuzbVWQp5kslhANqZ2uDAeROQHBRZNPu8JDsHmeFNj/XJJhX/FhNUWmkHHvoNsKa6+tHJiig87EzsQw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' @@ -3765,8 +3766,8 @@ packages: typescript: optional: true - '@typescript-eslint/type-utils@8.63.0': - resolution: {integrity: sha512-Nzzh/OGxVCOjObjaj1CQF2RUasyYy2Jfuh+zZ3PjLzG2fYRriAiZLib9UKtO+CpQAS3YHiAS+ckZDclwqI1TPA==} + '@typescript-eslint/type-utils@8.64.0': + resolution: {integrity: sha512-XWG4Fmmv/6SvyS9nH8jWrKs6terwJvE8cyRt1CzYYqzp9OrPhCT4cMc/f7C6RZCwG+qMmiffJS1/qJP8G1URtg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -3784,8 +3785,8 @@ packages: resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/types@8.63.0': - resolution: {integrity: sha512-xyLtl9DUBBFrcJS4x2pIqGLH68/tC2uOa4Z7pUteW09D3bXnnXUom4dyPikzWgB7llmIc1zoeI3aoUdC4rPK/Q==} + '@typescript-eslint/types@8.64.0': + resolution: {integrity: sha512-qjhfuTfLXjA4IOzXvz0rTjT01BqEiIgPoUeMwiEjnaHKJMTNo8rH5pYW1a2L/0Dnux2fPC85AeyJoWaGa8WxTA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@5.62.0': @@ -3815,8 +3816,8 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@8.63.0': - resolution: {integrity: sha512-ygBkU+B7ex5UI/gKhaqexWev79uISfIv7XQCRNYO/jmD8rGLPyWLAb3KMRT6nd8Gt9bmUBi9+iX6tBdYfOY81Q==} + '@typescript-eslint/typescript-estree@8.64.0': + resolution: {integrity: sha512-Pztpsn1aCE1oWDvDEfUk31nngvvF7vUB5SwHFEaZIFpvw7WJtqUHHL4plBZDA9HfWJJjL13BdG0YrJInTUvoVA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' @@ -3839,8 +3840,8 @@ packages: peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/utils@8.63.0': - resolution: {integrity: sha512-fUKaeAvrTuQg/Tgt3nliAUSZHJM6DlCcfyEmxCvlX8kieWSStBX+5O5Fnidtc3i2JrH+9c/GL4RY2iasd/GPTA==} + '@typescript-eslint/utils@8.64.0': + resolution: {integrity: sha512-aJUGVB3+U0htrrCjoA8qukw8cm8fNCGAxK/tVoS70k8aeb7DETKeFozRiVFIwEeN9WJLsjaP3ph8I60tY2XZoQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -3858,8 +3859,8 @@ packages: resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/visitor-keys@8.63.0': - resolution: {integrity: sha512-UexrHGnGTpbuQHct2ExOc2ZcFbGUS9FOesCxxqdBGcpI1BxYu/LZ6U8Aq6/72XtF/qRBk9nhuGHFJIXXMhPMdw==} + '@typescript-eslint/visitor-keys@8.64.0': + resolution: {integrity: sha512-mrtuL8Nsn6gi2H4mo5KMTp823M+3Q19Ew/i+Zlikq20tIMm99C3Ez0dCmkWWnxut20esQvTg8aUSEhMcAOXhEw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.3': @@ -7638,8 +7639,8 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} - postcss@8.5.18: - resolution: {integrity: sha512-xdB1oSLHbz1vRWgCDalrCqEFTWzFlhqFC5tIHLMOSUIjhm3XXQ1qrFy8S/ESr1JYRRXqM3c1QFiMZUJdUTqyMQ==} + postcss@8.5.19: + resolution: {integrity: sha512-Mz8SaolMd8nB+G13WkORcxQKHZ/NE4xXevtkJHVuG+guo9/wYKlIMTKAqGdEmYOXR2ijPjTYNHssizdaVSUNdQ==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -8763,8 +8764,8 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript-eslint@8.63.0: - resolution: {integrity: sha512-xgwXyzG4sK9ALkBxbyGkTMMOS+imnW65iPhxCQMK83KhxyoDNW7l+IDqEf9vMdoUidHpOoS967RCq4eMiTexwQ==} + typescript-eslint@8.64.0: + resolution: {integrity: sha512-0qg+pDNMnqYzqH9AnNK+39tejHvsShUOUUoRUgtnTGE7QuMZhiFDnozq8nHJVq+Wae6NMLKNWLg5WmkcC/ndyQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -9289,10 +9290,10 @@ snapshots: '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/client-cloudfront@3.1085.0': + '@aws-sdk/client-cloudfront@3.1086.0': dependencies: '@aws-sdk/core': 3.975.1 - '@aws-sdk/credential-provider-node': 3.972.66 + '@aws-sdk/credential-provider-node': 3.972.67 '@aws-sdk/types': 3.974.0 '@smithy/core': 3.29.3 '@smithy/fetch-http-handler': 5.6.5 @@ -9300,11 +9301,11 @@ snapshots: '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/client-s3@3.1085.0': + '@aws-sdk/client-s3@3.1086.0': dependencies: '@aws-sdk/checksums': 3.1000.16 '@aws-sdk/core': 3.975.1 - '@aws-sdk/credential-provider-node': 3.972.66 + '@aws-sdk/credential-provider-node': 3.972.67 '@aws-sdk/middleware-sdk-s3': 3.972.62 '@aws-sdk/signature-v4-multi-region': 3.996.39 '@aws-sdk/types': 3.974.0 @@ -9368,7 +9369,7 @@ snapshots: '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-node@3.972.66': + '@aws-sdk/credential-provider-node@3.972.67': dependencies: '@aws-sdk/credential-provider-env': 3.972.57 '@aws-sdk/credential-provider-http': 3.972.59 @@ -10724,7 +10725,7 @@ snapshots: '@es-joy/jsdoccomment@0.50.2': dependencies: '@types/estree': 1.0.9 - '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/types': 8.64.0 comment-parser: 1.4.1 esquery: 1.7.0 jsdoc-type-pratt-parser: 4.1.0 @@ -12322,7 +12323,7 @@ snapshots: '@stylistic/eslint-plugin@3.1.0(eslint@10.7.0)(typescript@4.9.5)': dependencies: - '@typescript-eslint/utils': 8.63.0(eslint@10.7.0)(typescript@4.9.5) + '@typescript-eslint/utils': 8.64.0(eslint@10.7.0)(typescript@4.9.5) eslint: 10.7.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -12334,7 +12335,7 @@ snapshots: '@stylistic/eslint-plugin@3.1.0(eslint@10.7.0)(typescript@5.9.3)': dependencies: - '@typescript-eslint/utils': 8.63.0(eslint@10.7.0)(typescript@5.9.3) + '@typescript-eslint/utils': 8.64.0(eslint@10.7.0)(typescript@5.9.3) eslint: 10.7.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -12346,7 +12347,7 @@ snapshots: '@stylistic/eslint-plugin@3.1.0(eslint@10.7.0)(typescript@6.0.3)': dependencies: - '@typescript-eslint/utils': 8.63.0(eslint@10.7.0)(typescript@6.0.3) + '@typescript-eslint/utils': 8.64.0(eslint@10.7.0)(typescript@6.0.3) eslint: 10.7.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -12359,7 +12360,7 @@ snapshots: '@stylistic/eslint-plugin@5.10.0(eslint@10.7.0)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0) - '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/types': 8.64.0 eslint: 10.7.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -12651,10 +12652,10 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@4.9.5))(eslint@10.7.0)(typescript@4.9.5)': + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@4.9.5))(eslint@10.7.0)(typescript@4.9.5)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.63.0(eslint@10.7.0)(typescript@4.9.5) + '@typescript-eslint/parser': 8.64.0(eslint@10.7.0)(typescript@4.9.5) '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/type-utils': 5.62.0(eslint@10.7.0)(typescript@4.9.5) '@typescript-eslint/utils': 5.62.0(eslint@10.7.0)(typescript@4.9.5) @@ -12670,10 +12671,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@5.9.3))(eslint@10.7.0)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@5.9.3))(eslint@10.7.0)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.63.0(eslint@10.7.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.64.0(eslint@10.7.0)(typescript@5.9.3) '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/type-utils': 5.62.0(eslint@10.7.0)(typescript@5.9.3) '@typescript-eslint/utils': 5.62.0(eslint@10.7.0)(typescript@5.9.3) @@ -12729,14 +12730,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@4.9.5))(eslint@10.7.0)(typescript@4.9.5)': + '@typescript-eslint/eslint-plugin@8.64.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@4.9.5))(eslint@10.7.0)(typescript@4.9.5)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.63.0(eslint@10.7.0)(typescript@4.9.5) - '@typescript-eslint/scope-manager': 8.63.0 - '@typescript-eslint/type-utils': 8.63.0(eslint@10.7.0)(typescript@4.9.5) - '@typescript-eslint/utils': 8.63.0(eslint@10.7.0)(typescript@4.9.5) - '@typescript-eslint/visitor-keys': 8.63.0 + '@typescript-eslint/parser': 8.64.0(eslint@10.7.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 8.64.0 + '@typescript-eslint/type-utils': 8.64.0(eslint@10.7.0)(typescript@4.9.5) + '@typescript-eslint/utils': 8.64.0(eslint@10.7.0)(typescript@4.9.5) + '@typescript-eslint/visitor-keys': 8.64.0 eslint: 10.7.0 ignore: 7.0.6 natural-compare: 1.4.0 @@ -12745,14 +12746,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@5.9.3))(eslint@10.7.0)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.64.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@5.9.3))(eslint@10.7.0)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.63.0(eslint@10.7.0)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.63.0 - '@typescript-eslint/type-utils': 8.63.0(eslint@10.7.0)(typescript@5.9.3) - '@typescript-eslint/utils': 8.63.0(eslint@10.7.0)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.63.0 + '@typescript-eslint/parser': 8.64.0(eslint@10.7.0)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.64.0 + '@typescript-eslint/type-utils': 8.64.0(eslint@10.7.0)(typescript@5.9.3) + '@typescript-eslint/utils': 8.64.0(eslint@10.7.0)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.64.0 eslint: 10.7.0 ignore: 7.0.6 natural-compare: 1.4.0 @@ -12761,14 +12762,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@6.0.3))(eslint@10.7.0)(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.64.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@6.0.3))(eslint@10.7.0)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.63.0(eslint@10.7.0)(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.63.0 - '@typescript-eslint/type-utils': 8.63.0(eslint@10.7.0)(typescript@6.0.3) - '@typescript-eslint/utils': 8.63.0(eslint@10.7.0)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.63.0 + '@typescript-eslint/parser': 8.64.0(eslint@10.7.0)(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.64.0 + '@typescript-eslint/type-utils': 8.64.0(eslint@10.7.0)(typescript@6.0.3) + '@typescript-eslint/utils': 8.64.0(eslint@10.7.0)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.64.0 eslint: 10.7.0 ignore: 7.0.6 natural-compare: 1.4.0 @@ -12803,64 +12804,64 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@4.9.5)': + '@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@4.9.5)': dependencies: - '@typescript-eslint/scope-manager': 8.63.0 - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/typescript-estree': 8.63.0(typescript@4.9.5) - '@typescript-eslint/visitor-keys': 8.63.0 + '@typescript-eslint/scope-manager': 8.64.0 + '@typescript-eslint/types': 8.64.0 + '@typescript-eslint/typescript-estree': 8.64.0(typescript@4.9.5) + '@typescript-eslint/visitor-keys': 8.64.0 debug: 4.4.3(supports-color@8.1.1) eslint: 10.7.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@5.9.3)': + '@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.63.0 - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/typescript-estree': 8.63.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.63.0 + '@typescript-eslint/scope-manager': 8.64.0 + '@typescript-eslint/types': 8.64.0 + '@typescript-eslint/typescript-estree': 8.64.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.64.0 debug: 4.4.3(supports-color@8.1.1) eslint: 10.7.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@6.0.3)': + '@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@6.0.3)': dependencies: - '@typescript-eslint/scope-manager': 8.63.0 - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/typescript-estree': 8.63.0(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.63.0 + '@typescript-eslint/scope-manager': 8.64.0 + '@typescript-eslint/types': 8.64.0 + '@typescript-eslint/typescript-estree': 8.64.0(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.64.0 debug: 4.4.3(supports-color@8.1.1) eslint: 10.7.0 typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.63.0(typescript@4.9.5)': + '@typescript-eslint/project-service@8.64.0(typescript@4.9.5)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.63.0(typescript@4.9.5) - '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/tsconfig-utils': 8.64.0(typescript@4.9.5) + '@typescript-eslint/types': 8.64.0 debug: 4.4.3(supports-color@8.1.1) typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.63.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.64.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.63.0(typescript@5.9.3) - '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/tsconfig-utils': 8.64.0(typescript@5.9.3) + '@typescript-eslint/types': 8.64.0 debug: 4.4.3(supports-color@8.1.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.63.0(typescript@6.0.3)': + '@typescript-eslint/project-service@8.64.0(typescript@6.0.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.63.0(typescript@6.0.3) - '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/tsconfig-utils': 8.64.0(typescript@6.0.3) + '@typescript-eslint/types': 8.64.0 debug: 4.4.3(supports-color@8.1.1) typescript: 6.0.3 transitivePeerDependencies: @@ -12881,20 +12882,20 @@ snapshots: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - '@typescript-eslint/scope-manager@8.63.0': + '@typescript-eslint/scope-manager@8.64.0': dependencies: - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/visitor-keys': 8.63.0 + '@typescript-eslint/types': 8.64.0 + '@typescript-eslint/visitor-keys': 8.64.0 - '@typescript-eslint/tsconfig-utils@8.63.0(typescript@4.9.5)': + '@typescript-eslint/tsconfig-utils@8.64.0(typescript@4.9.5)': dependencies: typescript: 4.9.5 - '@typescript-eslint/tsconfig-utils@8.63.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.64.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/tsconfig-utils@8.63.0(typescript@6.0.3)': + '@typescript-eslint/tsconfig-utils@8.64.0(typescript@6.0.3)': dependencies: typescript: 6.0.3 @@ -12946,11 +12947,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.63.0(eslint@10.7.0)(typescript@4.9.5)': + '@typescript-eslint/type-utils@8.64.0(eslint@10.7.0)(typescript@4.9.5)': dependencies: - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/typescript-estree': 8.63.0(typescript@4.9.5) - '@typescript-eslint/utils': 8.63.0(eslint@10.7.0)(typescript@4.9.5) + '@typescript-eslint/types': 8.64.0 + '@typescript-eslint/typescript-estree': 8.64.0(typescript@4.9.5) + '@typescript-eslint/utils': 8.64.0(eslint@10.7.0)(typescript@4.9.5) debug: 4.4.3(supports-color@8.1.1) eslint: 10.7.0 ts-api-utils: 2.5.0(typescript@4.9.5) @@ -12958,11 +12959,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.63.0(eslint@10.7.0)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.64.0(eslint@10.7.0)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/typescript-estree': 8.63.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.63.0(eslint@10.7.0)(typescript@5.9.3) + '@typescript-eslint/types': 8.64.0 + '@typescript-eslint/typescript-estree': 8.64.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.64.0(eslint@10.7.0)(typescript@5.9.3) debug: 4.4.3(supports-color@8.1.1) eslint: 10.7.0 ts-api-utils: 2.5.0(typescript@5.9.3) @@ -12970,11 +12971,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.63.0(eslint@10.7.0)(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.64.0(eslint@10.7.0)(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/typescript-estree': 8.63.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.63.0(eslint@10.7.0)(typescript@6.0.3) + '@typescript-eslint/types': 8.64.0 + '@typescript-eslint/typescript-estree': 8.64.0(typescript@6.0.3) + '@typescript-eslint/utils': 8.64.0(eslint@10.7.0)(typescript@6.0.3) debug: 4.4.3(supports-color@8.1.1) eslint: 10.7.0 ts-api-utils: 2.5.0(typescript@6.0.3) @@ -12988,7 +12989,7 @@ snapshots: '@typescript-eslint/types@7.18.0': {} - '@typescript-eslint/types@8.63.0': {} + '@typescript-eslint/types@8.64.0': {} '@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5)': dependencies: @@ -13078,12 +13079,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.63.0(typescript@4.9.5)': + '@typescript-eslint/typescript-estree@8.64.0(typescript@4.9.5)': dependencies: - '@typescript-eslint/project-service': 8.63.0(typescript@4.9.5) - '@typescript-eslint/tsconfig-utils': 8.63.0(typescript@4.9.5) - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/visitor-keys': 8.63.0 + '@typescript-eslint/project-service': 8.64.0(typescript@4.9.5) + '@typescript-eslint/tsconfig-utils': 8.64.0(typescript@4.9.5) + '@typescript-eslint/types': 8.64.0 + '@typescript-eslint/visitor-keys': 8.64.0 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.5 semver: 7.8.5 @@ -13093,12 +13094,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.63.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.64.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.63.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.63.0(typescript@5.9.3) - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/visitor-keys': 8.63.0 + '@typescript-eslint/project-service': 8.64.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.64.0(typescript@5.9.3) + '@typescript-eslint/types': 8.64.0 + '@typescript-eslint/visitor-keys': 8.64.0 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.5 semver: 7.8.5 @@ -13108,12 +13109,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.63.0(typescript@6.0.3)': + '@typescript-eslint/typescript-estree@8.64.0(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.63.0(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.63.0(typescript@6.0.3) - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/visitor-keys': 8.63.0 + '@typescript-eslint/project-service': 8.64.0(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.64.0(typescript@6.0.3) + '@typescript-eslint/types': 8.64.0 + '@typescript-eslint/visitor-keys': 8.64.0 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.5 semver: 7.8.5 @@ -13203,34 +13204,34 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@8.63.0(eslint@10.7.0)(typescript@4.9.5)': + '@typescript-eslint/utils@8.64.0(eslint@10.7.0)(typescript@4.9.5)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0) - '@typescript-eslint/scope-manager': 8.63.0 - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/typescript-estree': 8.63.0(typescript@4.9.5) + '@typescript-eslint/scope-manager': 8.64.0 + '@typescript-eslint/types': 8.64.0 + '@typescript-eslint/typescript-estree': 8.64.0(typescript@4.9.5) eslint: 10.7.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.63.0(eslint@10.7.0)(typescript@5.9.3)': + '@typescript-eslint/utils@8.64.0(eslint@10.7.0)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0) - '@typescript-eslint/scope-manager': 8.63.0 - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/typescript-estree': 8.63.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.64.0 + '@typescript-eslint/types': 8.64.0 + '@typescript-eslint/typescript-estree': 8.64.0(typescript@5.9.3) eslint: 10.7.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.63.0(eslint@10.7.0)(typescript@6.0.3)': + '@typescript-eslint/utils@8.64.0(eslint@10.7.0)(typescript@6.0.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0) - '@typescript-eslint/scope-manager': 8.63.0 - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/typescript-estree': 8.63.0(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.64.0 + '@typescript-eslint/types': 8.64.0 + '@typescript-eslint/typescript-estree': 8.64.0(typescript@6.0.3) eslint: 10.7.0 typescript: 6.0.3 transitivePeerDependencies: @@ -13251,9 +13252,9 @@ snapshots: '@typescript-eslint/types': 7.18.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.63.0': + '@typescript-eslint/visitor-keys@8.64.0': dependencies: - '@typescript-eslint/types': 8.63.0 + '@typescript-eslint/types': 8.64.0 eslint-visitor-keys: 5.0.1 '@ungap/structured-clone@1.3.3': {} @@ -14739,7 +14740,7 @@ snapshots: '@typescript-eslint/parser': 6.21.0(eslint@10.7.0)(typescript@5.9.3) eslint-config-xo-space: 0.35.0(eslint@10.7.0) eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.7.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0) eslint-plugin-mocha: 10.5.0(eslint@10.7.0) eslint-plugin-n: 15.7.0(eslint@10.7.0) eslint-plugin-perfectionist: 2.11.0(eslint@10.7.0)(typescript@5.9.3) @@ -14781,18 +14782,18 @@ snapshots: '@eslint/eslintrc': 3.3.6 '@eslint/js': 9.39.5 '@stylistic/eslint-plugin': 3.1.0(eslint@10.7.0)(typescript@4.9.5) - '@typescript-eslint/eslint-plugin': 8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@4.9.5))(eslint@10.7.0)(typescript@4.9.5) - '@typescript-eslint/parser': 8.63.0(eslint@10.7.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 8.64.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@4.9.5))(eslint@10.7.0)(typescript@4.9.5) + '@typescript-eslint/parser': 8.64.0(eslint@10.7.0)(typescript@4.9.5) eslint-config-xo: 0.49.0(eslint@10.7.0) eslint-config-xo-space: 0.35.0(eslint@10.7.0) eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.7.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0) eslint-plugin-jsdoc: 50.8.0(eslint@10.7.0) eslint-plugin-mocha: 10.5.0(eslint@10.7.0) eslint-plugin-n: 17.24.0(eslint@10.7.0)(typescript@4.9.5) eslint-plugin-perfectionist: 4.15.1(eslint@10.7.0)(typescript@4.9.5) eslint-plugin-unicorn: 56.0.1(eslint@10.7.0) - typescript-eslint: 8.63.0(eslint@10.7.0)(typescript@4.9.5) + typescript-eslint: 8.64.0(eslint@10.7.0)(typescript@4.9.5) transitivePeerDependencies: - eslint - eslint-import-resolver-webpack @@ -14806,18 +14807,18 @@ snapshots: '@eslint/eslintrc': 3.3.6 '@eslint/js': 9.39.5 '@stylistic/eslint-plugin': 3.1.0(eslint@10.7.0)(typescript@5.9.3) - '@typescript-eslint/eslint-plugin': 8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@5.9.3))(eslint@10.7.0)(typescript@5.9.3) - '@typescript-eslint/parser': 8.63.0(eslint@10.7.0)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.64.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@5.9.3))(eslint@10.7.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.64.0(eslint@10.7.0)(typescript@5.9.3) eslint-config-xo: 0.49.0(eslint@10.7.0) eslint-config-xo-space: 0.35.0(eslint@10.7.0) eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.7.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0) eslint-plugin-jsdoc: 50.8.0(eslint@10.7.0) eslint-plugin-mocha: 10.5.0(eslint@10.7.0) eslint-plugin-n: 17.24.0(eslint@10.7.0)(typescript@5.9.3) eslint-plugin-perfectionist: 4.15.1(eslint@10.7.0)(typescript@5.9.3) eslint-plugin-unicorn: 56.0.1(eslint@10.7.0) - typescript-eslint: 8.63.0(eslint@10.7.0)(typescript@5.9.3) + typescript-eslint: 8.64.0(eslint@10.7.0)(typescript@5.9.3) transitivePeerDependencies: - eslint - eslint-import-resolver-webpack @@ -14831,18 +14832,18 @@ snapshots: '@eslint/eslintrc': 3.3.6 '@eslint/js': 9.39.5 '@stylistic/eslint-plugin': 3.1.0(eslint@10.7.0)(typescript@6.0.3) - '@typescript-eslint/eslint-plugin': 8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@6.0.3))(eslint@10.7.0)(typescript@6.0.3) - '@typescript-eslint/parser': 8.63.0(eslint@10.7.0)(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.64.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@6.0.3))(eslint@10.7.0)(typescript@6.0.3) + '@typescript-eslint/parser': 8.64.0(eslint@10.7.0)(typescript@6.0.3) eslint-config-xo: 0.49.0(eslint@10.7.0) eslint-config-xo-space: 0.35.0(eslint@10.7.0) eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.7.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0) eslint-plugin-jsdoc: 50.8.0(eslint@10.7.0) eslint-plugin-mocha: 10.5.0(eslint@10.7.0) eslint-plugin-n: 17.24.0(eslint@10.7.0)(typescript@6.0.3) eslint-plugin-perfectionist: 4.15.1(eslint@10.7.0)(typescript@6.0.3) eslint-plugin-unicorn: 56.0.1(eslint@10.7.0) - typescript-eslint: 8.63.0(eslint@10.7.0)(typescript@6.0.3) + typescript-eslint: 8.64.0(eslint@10.7.0)(typescript@6.0.3) transitivePeerDependencies: - eslint - eslint-import-resolver-webpack @@ -14892,7 +14893,7 @@ snapshots: tinyglobby: 0.2.17 unrs-resolver: 1.12.2 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0) transitivePeerDependencies: - supports-color @@ -14907,33 +14908,33 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.14.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0): + eslint-module-utils@2.14.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.63.0(eslint@10.7.0)(typescript@4.9.5) + '@typescript-eslint/parser': 8.64.0(eslint@10.7.0)(typescript@4.9.5) eslint: 10.7.0 eslint-import-resolver-node: 0.3.10 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.7.0) transitivePeerDependencies: - supports-color - eslint-module-utils@2.14.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0): + eslint-module-utils@2.14.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.63.0(eslint@10.7.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.64.0(eslint@10.7.0)(typescript@5.9.3) eslint: 10.7.0 eslint-import-resolver-node: 0.3.10 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.7.0) transitivePeerDependencies: - supports-color - eslint-module-utils@2.14.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0): + eslint-module-utils@2.14.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.63.0(eslint@10.7.0)(typescript@6.0.3) + '@typescript-eslint/parser': 8.64.0(eslint@10.7.0)(typescript@6.0.3) eslint: 10.7.0 eslint-import-resolver-node: 0.3.10 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.7.0) @@ -14982,7 +14983,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14993,7 +14994,7 @@ snapshots: doctrine: 2.1.0 eslint: 10.7.0 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0) + eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 @@ -15005,13 +15006,13 @@ snapshots: string.prototype.trimend: 1.0.10 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.63.0(eslint@10.7.0)(typescript@4.9.5) + '@typescript-eslint/parser': 8.64.0(eslint@10.7.0)(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.63.0(eslint@10.7.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -15022,7 +15023,7 @@ snapshots: doctrine: 2.1.0 eslint: 10.7.0 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0) + eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 @@ -15034,13 +15035,13 @@ snapshots: string.prototype.trimend: 1.0.10 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.63.0(eslint@10.7.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.64.0(eslint@10.7.0)(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.63.0(eslint@10.7.0)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -15051,7 +15052,7 @@ snapshots: doctrine: 2.1.0 eslint: 10.7.0 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0) + eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.7.0) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 @@ -15063,7 +15064,7 @@ snapshots: string.prototype.trimend: 1.0.10 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.63.0(eslint@10.7.0)(typescript@6.0.3) + '@typescript-eslint/parser': 8.64.0(eslint@10.7.0)(typescript@6.0.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -15171,8 +15172,8 @@ snapshots: eslint-plugin-perfectionist@4.15.1(eslint@10.7.0)(typescript@4.9.5): dependencies: - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/utils': 8.63.0(eslint@10.7.0)(typescript@4.9.5) + '@typescript-eslint/types': 8.64.0 + '@typescript-eslint/utils': 8.64.0(eslint@10.7.0)(typescript@4.9.5) eslint: 10.7.0 natural-orderby: 5.0.0 transitivePeerDependencies: @@ -15181,8 +15182,8 @@ snapshots: eslint-plugin-perfectionist@4.15.1(eslint@10.7.0)(typescript@5.9.3): dependencies: - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/utils': 8.63.0(eslint@10.7.0)(typescript@5.9.3) + '@typescript-eslint/types': 8.64.0 + '@typescript-eslint/utils': 8.64.0(eslint@10.7.0)(typescript@5.9.3) eslint: 10.7.0 natural-orderby: 5.0.0 transitivePeerDependencies: @@ -15191,8 +15192,8 @@ snapshots: eslint-plugin-perfectionist@4.15.1(eslint@10.7.0)(typescript@6.0.3): dependencies: - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/utils': 8.63.0(eslint@10.7.0)(typescript@6.0.3) + '@typescript-eslint/types': 8.64.0 + '@typescript-eslint/utils': 8.64.0(eslint@10.7.0)(typescript@6.0.3) eslint: 10.7.0 natural-orderby: 5.0.0 transitivePeerDependencies: @@ -18016,8 +18017,8 @@ snapshots: oclif@4.23.27(@types/node@14.18.63): dependencies: - '@aws-sdk/client-cloudfront': 3.1085.0 - '@aws-sdk/client-s3': 3.1085.0 + '@aws-sdk/client-cloudfront': 3.1086.0 + '@aws-sdk/client-s3': 3.1086.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 @@ -18045,8 +18046,8 @@ snapshots: oclif@4.23.27(@types/node@18.19.130): dependencies: - '@aws-sdk/client-cloudfront': 3.1085.0 - '@aws-sdk/client-s3': 3.1085.0 + '@aws-sdk/client-cloudfront': 3.1086.0 + '@aws-sdk/client-s3': 3.1086.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 @@ -18074,8 +18075,8 @@ snapshots: oclif@4.23.27(@types/node@20.19.43): dependencies: - '@aws-sdk/client-cloudfront': 3.1085.0 - '@aws-sdk/client-s3': 3.1085.0 + '@aws-sdk/client-cloudfront': 3.1086.0 + '@aws-sdk/client-s3': 3.1086.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 @@ -18103,8 +18104,8 @@ snapshots: oclif@4.23.27(@types/node@22.20.1): dependencies: - '@aws-sdk/client-cloudfront': 3.1085.0 - '@aws-sdk/client-s3': 3.1085.0 + '@aws-sdk/client-cloudfront': 3.1086.0 + '@aws-sdk/client-s3': 3.1086.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 @@ -18357,7 +18358,7 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss@8.5.18: + postcss@8.5.19: dependencies: nanoid: 3.3.16 picocolors: 1.1.1 @@ -19803,34 +19804,34 @@ snapshots: typedarray@0.0.6: {} - typescript-eslint@8.63.0(eslint@10.7.0)(typescript@4.9.5): + typescript-eslint@8.64.0(eslint@10.7.0)(typescript@4.9.5): dependencies: - '@typescript-eslint/eslint-plugin': 8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@4.9.5))(eslint@10.7.0)(typescript@4.9.5) - '@typescript-eslint/parser': 8.63.0(eslint@10.7.0)(typescript@4.9.5) - '@typescript-eslint/typescript-estree': 8.63.0(typescript@4.9.5) - '@typescript-eslint/utils': 8.63.0(eslint@10.7.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 8.64.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@4.9.5))(eslint@10.7.0)(typescript@4.9.5) + '@typescript-eslint/parser': 8.64.0(eslint@10.7.0)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 8.64.0(typescript@4.9.5) + '@typescript-eslint/utils': 8.64.0(eslint@10.7.0)(typescript@4.9.5) eslint: 10.7.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color - typescript-eslint@8.63.0(eslint@10.7.0)(typescript@5.9.3): + typescript-eslint@8.64.0(eslint@10.7.0)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@5.9.3))(eslint@10.7.0)(typescript@5.9.3) - '@typescript-eslint/parser': 8.63.0(eslint@10.7.0)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.63.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.63.0(eslint@10.7.0)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.64.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@5.9.3))(eslint@10.7.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.64.0(eslint@10.7.0)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.64.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.64.0(eslint@10.7.0)(typescript@5.9.3) eslint: 10.7.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color - typescript-eslint@8.63.0(eslint@10.7.0)(typescript@6.0.3): + typescript-eslint@8.64.0(eslint@10.7.0)(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.63.0(@typescript-eslint/parser@8.63.0(eslint@10.7.0)(typescript@6.0.3))(eslint@10.7.0)(typescript@6.0.3) - '@typescript-eslint/parser': 8.63.0(eslint@10.7.0)(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.63.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.63.0(eslint@10.7.0)(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.64.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0)(typescript@6.0.3))(eslint@10.7.0)(typescript@6.0.3) + '@typescript-eslint/parser': 8.64.0(eslint@10.7.0)(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.64.0(typescript@6.0.3) + '@typescript-eslint/utils': 8.64.0(eslint@10.7.0)(typescript@6.0.3) eslint: 10.7.0 typescript: 6.0.3 transitivePeerDependencies: @@ -19978,7 +19979,7 @@ snapshots: dependencies: lightningcss: 1.32.0 picomatch: 4.0.5 - postcss: 8.5.18 + postcss: 8.5.19 rolldown: 1.1.5 tinyglobby: 0.2.17 optionalDependencies: From 2424bbaa59c23de1975e5ff0cccb6a8358fbdd56 Mon Sep 17 00:00:00 2001 From: harshitha-cstk Date: Tue, 14 Jul 2026 17:18:36 +0530 Subject: [PATCH 30/37] refactor(bulk-operations): align progress-manager wiring --- .../src/base-am-command.ts | 22 ++++- .../src/base-bulk-command.ts | 87 ++++++++++--------- .../src/commands/cm/stacks/bulk-taxonomies.ts | 16 +++- .../src/utils/config-builder.ts | 5 ++ 4 files changed, 85 insertions(+), 45 deletions(-) diff --git a/packages/contentstack-bulk-operations/src/base-am-command.ts b/packages/contentstack-bulk-operations/src/base-am-command.ts index 0d23b9c93..769a1374b 100644 --- a/packages/contentstack-bulk-operations/src/base-am-command.ts +++ b/packages/contentstack-bulk-operations/src/base-am-command.ts @@ -1,5 +1,11 @@ import { Command } from '@contentstack/cli-command'; -import { handleAndLogError } from '@contentstack/cli-utilities'; +import { + handleAndLogError, + configHandler, + loadChalk, + CLIProgressManager, + clearProgressModuleSetting, +} from '@contentstack/cli-utilities'; import { fillMissingCsAssetsFlags } from './utils'; import type { CsAssetsFlags } from './interfaces'; @@ -16,6 +22,12 @@ export abstract class BaseCsAssetsCommand extends Command { protected async init(): Promise { await super.init(); + + // Suppress timestamped console logs + load chalk (same UX as the other bulk commands). + // Must run before the first log call. CS Assets keeps its own printCsAssetsSummary output. + configHandler.set('log.progressSupportedModule', 'bulk-operations'); + await loadChalk(); + const { flags } = await this.parse(this.constructor as typeof BaseCsAssetsCommand); this.loggerContext = { module: this.id ?? 'cm:stacks:bulk-am-assets' }; this.parsedFlags = (await fillMissingCsAssetsFlags(flags)) as CsAssetsFlags; @@ -25,5 +37,13 @@ export abstract class BaseCsAssetsCommand extends Command { handleAndLogError(error); } + protected async finally(_error?: Error): Promise { + // Clear progress state so the module flag never leaks into a later command in the process. + // (CS Assets doesn't initialize a global summary, so printGlobalSummary is a no-op here.) + CLIProgressManager.printGlobalSummary(); + CLIProgressManager.clearGlobalSummary(); + clearProgressModuleSetting(); + } + abstract run(): Promise; } diff --git a/packages/contentstack-bulk-operations/src/base-bulk-command.ts b/packages/contentstack-bulk-operations/src/base-bulk-command.ts index d932eec2d..d04d12836 100644 --- a/packages/contentstack-bulk-operations/src/base-bulk-command.ts +++ b/packages/contentstack-bulk-operations/src/base-bulk-command.ts @@ -6,8 +6,8 @@ import { getLogPath, handleAndLogError, FlagInput, - loadChalk, getChalk, + loadChalk, configHandler, CLIProgressManager, clearProgressModuleSetting, @@ -152,10 +152,9 @@ export abstract class BaseBulkCommand extends Command { protected async init(): Promise { await super.init(); - // Progress UI: load chalk (ESM) up-front and clear any stale progress-module flag so - // pre-flight/auth/setup errors always reach the console regardless of showConsoleLogs. + // Load chalk (ESM) up-front. The progress-module flag is set in buildConfig() + // (config layer, mirrors export-config-handler) before the first log call. await loadChalk(); - configHandler.set('log.progressSupportedModule', null); let { flags } = await this.parse(this.constructor as typeof BaseBulkCommand); @@ -192,9 +191,6 @@ export abstract class BaseBulkCommand extends Command { await this.setupStack(); await this.initializeComponents(); - // Setup succeeded — enable progress-bar UI (console logs suppressed by default) for the operation. - configHandler.set('log.progressSupportedModule', 'bulk-operations'); - this.logger.debug($t(messages.INITIALIZING, { resourceType: this.resourceType }), this.loggerContext); } @@ -238,9 +234,6 @@ export abstract class BaseBulkCommand extends Command { await this.setupStack(); await this.initializeComponents(); - // Setup succeeded — enable progress-bar UI for the revert/retry operation. - configHandler.set('log.progressSupportedModule', 'bulk-operations'); - await this.handleRevertOrRetry(mergedFlags); process.exit(0); } @@ -387,18 +380,8 @@ export abstract class BaseBulkCommand extends Command { this.logger.debug($t(messages.EXECUTING_OPERATION, { count: items.length }), this.loggerContext); const startTime = Date.now(); - const showConsoleLogs = Boolean(configHandler.get('log')?.showConsoleLogs); - const operationLabel = (this.bulkOperationConfig.operation || 'operation').toString().toUpperCase(); - // Initialize the run-level summary + header once (progress-manager UX, same as import). - // Fall back to an empty branch name; displayOperationHeader applies its own `|| 'main'` - // for display, and the label is suffixed with the branch only when one is set. - const branchName = this.bulkOperationConfig.branch || ''; - CLIProgressManager.initializeGlobalSummary( - branchName ? `BULK ${operationLabel}-${branchName}` : `BULK ${operationLabel}`, - branchName, - $t(messages.EXECUTING_OPERATION, { count: items.length }), - ); + this.beginOperationSummary(items.length); let result: BulkOperationResult; try { @@ -407,33 +390,44 @@ export abstract class BaseBulkCommand extends Command { const publishMode = this.bulkOperationConfig.publishMode || PublishMode.BULK; this.logger.debug(`Using ${publishMode.toUpperCase()} mode for operation`, this.loggerContext); - // The Bulk API submits async batch/jobs, so per-item completion isn't observable - // mid-flight. Show a spinner while the queue drains, then record accurate pass/fail - // counts from the final result into the progress-manager summary. - result = await CLIProgressManager.withLoadingSpinner( - $t(messages.EXECUTING_OPERATION, { count: items.length }), - async () => - publishMode === PublishMode.SINGLE - ? this.executeSingleMode(items, startTime) - : this.executeBulkMode(items, startTime), - ); + result = + publishMode === PublishMode.SINGLE + ? await this.executeSingleMode(items, startTime) + : await this.executeBulkMode(items, startTime); } catch (error: any) { result = handleOperationError(error, items, startTime); } - this.recordProgressSummary(result, showConsoleLogs); + this.recordModuleSummary(result, items.length); return result; } /** - * Record accurate success/failure counts from the final result into the - * CLIProgressManager summary. Bulk operations submit async jobs, so counts come from - * the aggregated result rather than live per-item ticks. + * Initialize the run-level summary + header once (mirrors import). Falls back to an empty + * branch name — displayOperationHeader applies its own `|| 'main'` for display — and suffixes + * the label with the branch only when one is set. Shared with bulk-taxonomies via inheritance. + */ + protected beginOperationSummary(itemCount: number): void { + const operationLabel = (this.bulkOperationConfig.operation || 'operation').toString().toUpperCase(); + const branchName = this.bulkOperationConfig.branch || ''; + CLIProgressManager.initializeGlobalSummary( + branchName ? `BULK ${operationLabel}-${branchName}` : `BULK ${operationLabel}`, + branchName, + $t(messages.EXECUTING_OPERATION, { count: itemCount }), + ); + } + + /** + * Record a per-module row in the summary so the final summary shows Module Details for this + * command (entry/asset/taxonomy). SINGLE mode returns real success/failed counts; async + * submissions (BULK mode, taxonomy) report those as 0 (publish happens server-side), so the + * items successfully submitted are counted as success — the status URL tracks the real outcome. */ - private recordProgressSummary(result: BulkOperationResult, showConsoleLogs: boolean): void { - const total = result?.total || 0; + protected recordModuleSummary(result: BulkOperationResult, submittedCount: number): void { + const showConsoleLogs = Boolean(configHandler.get('log')?.showConsoleLogs); + const total = result?.total || submittedCount || 0; const failed = result?.failed || 0; - const success = typeof result?.success === 'number' ? result.success : Math.max(total - failed, 0); + const success = result?.success ? result.success : Math.max(total - failed, 0); const progress = CLIProgressManager.createSimple(this.resourceType, total, showConsoleLogs); for (let i = 0; i < success; i++) progress.tick(true); @@ -441,6 +435,18 @@ export abstract class BaseBulkCommand extends Command { progress.complete(failed === 0); } + /** + * Print the run-level summary once and clear progress state. Idempotent: subclasses call + * finally() explicitly AND oclif calls it again, so clearing the summary after printing makes + * the second invocation a no-op. Also clears the progress-module flag so it never leaks into + * a later command in the same process (mirrors export/import/clone). + */ + protected finalizeProgressSummary(): void { + CLIProgressManager.printGlobalSummary(); + CLIProgressManager.clearGlobalSummary(); + clearProgressModuleSetting(); + } + /** * Execute operation in SINGLE mode - processes items individually */ @@ -616,10 +622,7 @@ export abstract class BaseBulkCommand extends Command { abstract run(): Promise; protected async finally(_error: Error | undefined): Promise { - // Print the run-level progress summary, then clear the progress-module flag so it - // never leaks into a later command in the same process (mirrors export/import/clone). - CLIProgressManager.printGlobalSummary(); - clearProgressModuleSetting(); + this.finalizeProgressSummary(); await this.cleanup(); } } diff --git a/packages/contentstack-bulk-operations/src/commands/cm/stacks/bulk-taxonomies.ts b/packages/contentstack-bulk-operations/src/commands/cm/stacks/bulk-taxonomies.ts index 5d0cf4bb9..cfee2fda7 100644 --- a/packages/contentstack-bulk-operations/src/commands/cm/stacks/bulk-taxonomies.ts +++ b/packages/contentstack-bulk-operations/src/commands/cm/stacks/bulk-taxonomies.ts @@ -1,5 +1,5 @@ import { Command } from '@contentstack/cli-command'; -import { flags, log, createLogContext, handleAndLogError } from '@contentstack/cli-utilities'; +import { flags, log, createLogContext, handleAndLogError, loadChalk } from '@contentstack/cli-utilities'; import messages, { $t } from '../../../messages'; import { BaseBulkCommand } from '../../../base-bulk-command'; @@ -58,6 +58,10 @@ export default class BulkTaxonomies extends BaseBulkCommand { // Call oclif Command init without running BaseBulkCommand.init (taxonomy uses its own prompts). await (Command.prototype as unknown as { init(this: Command): Promise }).init.call(this); + // Load chalk (ESM) up-front. The progress-module flag is set in buildConfig() (invoked by + // buildConfiguration below), before the first log call. + await loadChalk(); + let { flags: parsed } = await this.parse(BulkTaxonomies); if (parsed.revert || parsed['retry-failed']) { @@ -161,6 +165,9 @@ export default class BulkTaxonomies extends BaseBulkCommand { this.logger.debug($t(messages.EXECUTING_OPERATION, { count: items.length }), this.loggerContext); const startTime = Date.now(); + // Initialize the run-level summary + header once (inherited from BaseBulkCommand). + this.beginOperationSummary(items.length); + const operation = this.bulkOperationConfig.operation; if (operation !== OperationType.PUBLISH && operation !== OperationType.UNPUBLISH) { throw new Error($t(messages.UNSUPPORTED_OPERATION, { operation: operation ?? 'unknown' })); @@ -190,12 +197,17 @@ export default class BulkTaxonomies extends BaseBulkCommand { this.logger.info(String(response.notice)); } - return { + const result: BulkOperationResult = { success: 0, failed: 0, total: items.length, duration, jobIds: jobId ? [jobId] : [], }; + + // Record the taxonomy module row in the summary (inherited from BaseBulkCommand). + this.recordModuleSummary(result, items.length); + + return result; } } diff --git a/packages/contentstack-bulk-operations/src/utils/config-builder.ts b/packages/contentstack-bulk-operations/src/utils/config-builder.ts index c53deb98c..30c6c2130 100644 --- a/packages/contentstack-bulk-operations/src/utils/config-builder.ts +++ b/packages/contentstack-bulk-operations/src/utils/config-builder.ts @@ -234,6 +234,11 @@ export function validateFlags(flagsOrConfig: CommandFlags | BulkOperationConfig) * Supports both CLI flags and config file format */ export function buildConfig(flags: CommandFlags): BulkOperationConfig { + // Enable the progress-bar UI + suppress the timestamped console logs for the whole command + // (mirrors export-config-handler). Set here — during config build, before the first log call — + // because the logger builds its transports once, lazily, so setting it later has no effect. + configHandler.set('log.progressSupportedModule', 'bulk-operations'); + const config: BulkOperationConfig = { alias: flags.alias, stackApiKey: flags['stack-api-key'], From ed26bf85a9aff221a50c87edf74224349a8b16b3 Mon Sep 17 00:00:00 2001 From: harshitha-cstk Date: Tue, 14 Jul 2026 17:25:27 +0530 Subject: [PATCH 31/37] fix: null-safe bulkOperationConfig access in beginOperationSummary --- .../contentstack-bulk-operations/src/base-bulk-command.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/contentstack-bulk-operations/src/base-bulk-command.ts b/packages/contentstack-bulk-operations/src/base-bulk-command.ts index d04d12836..8d1311ca5 100644 --- a/packages/contentstack-bulk-operations/src/base-bulk-command.ts +++ b/packages/contentstack-bulk-operations/src/base-bulk-command.ts @@ -408,12 +408,12 @@ export abstract class BaseBulkCommand extends Command { * the label with the branch only when one is set. Shared with bulk-taxonomies via inheritance. */ protected beginOperationSummary(itemCount: number): void { - const operationLabel = (this.bulkOperationConfig.operation || 'operation').toString().toUpperCase(); - const branchName = this.bulkOperationConfig.branch || ''; + const operationLabel = (this.bulkOperationConfig?.operation || 'operation').toString().toUpperCase(); + const branchName = this.bulkOperationConfig?.branch || ''; CLIProgressManager.initializeGlobalSummary( branchName ? `BULK ${operationLabel}-${branchName}` : `BULK ${operationLabel}`, branchName, - $t(messages.EXECUTING_OPERATION, { count: itemCount }), + $t(messages.EXECUTING_OPERATION, { count: itemCount }) ); } From bc26306ff3b95e06b6711f70e6e1afe859a31c76 Mon Sep 17 00:00:00 2001 From: raj pandey Date: Tue, 14 Jul 2026 17:48:18 +0530 Subject: [PATCH 32/37] fix: correct wrong property name in getOrgUid test assertion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Test was asserting mockClient.stack was called with mockConfig.target_stack which is undefined on the mock. Implementation correctly uses config.apiKey — fixed the assertion to match. Co-Authored-By: Claude Sonnet 4.6 --- .talismanrc | 2 +- .../test/unit/utils/marketplace-app-helper.test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.talismanrc b/.talismanrc index 80aa03afe..8b5afad01 100644 --- a/.talismanrc +++ b/.talismanrc @@ -2,7 +2,7 @@ fileignoreconfig: - filename: packages/contentstack-export/test/unit/utils/export-config-handler.test.ts checksum: f612661a8b6784b20ea62794b35192b340a34d8424a54a1a2cffec1878ab7528 - filename: packages/contentstack-import/test/unit/utils/marketplace-app-helper.test.ts - checksum: 7d594278c69799ee25a62f12e1ad947861e609d8231bc99791a4f77b01a63674 + checksum: de694e861560c4c242100eaf17a6d8e230247b99f94e4b428e55ef065084c10c - filename: packages/contentstack-import-setup/test/unit/login-handler.test.ts checksum: 2df43be75a96e1a3a00dd256628e191909aa9d7f192b672b56cb3772e074958c - filename: pnpm-lock.yaml diff --git a/packages/contentstack-import/test/unit/utils/marketplace-app-helper.test.ts b/packages/contentstack-import/test/unit/utils/marketplace-app-helper.test.ts index dbdf6a462..d3da20892 100644 --- a/packages/contentstack-import/test/unit/utils/marketplace-app-helper.test.ts +++ b/packages/contentstack-import/test/unit/utils/marketplace-app-helper.test.ts @@ -232,7 +232,7 @@ describe('Marketplace App Helper', () => { expect(result).to.equal('test-org-123'); // deepcode ignore HardcodedNonCryptoSecret: test fixture value, not a real secret - expect(mockClient.stack.calledWith({ api_key: mockConfig.target_stack })).to.be.true; + expect(mockClient.stack.calledWith({ api_key: mockConfig.apiKey })).to.be.true; }); it('should return empty string when org_uid is not present', async () => { From 25c61ad3cb36973c33a97a8591e1e3fae2d85136 Mon Sep 17 00:00:00 2001 From: harshitha-cstk Date: Tue, 14 Jul 2026 17:59:28 +0530 Subject: [PATCH 33/37] fix: address progress-manager review feedback --- .../src/base-bulk-command.ts | 43 +++++++++++++++---- 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/packages/contentstack-bulk-operations/src/base-bulk-command.ts b/packages/contentstack-bulk-operations/src/base-bulk-command.ts index 8d1311ca5..78e4dd162 100644 --- a/packages/contentstack-bulk-operations/src/base-bulk-command.ts +++ b/packages/contentstack-bulk-operations/src/base-bulk-command.ts @@ -44,6 +44,7 @@ import { generateBulkPublishStatusUrl, validateBranch, validateEnvironments, + aggregateBatchResults, } from './utils'; import { OperationType, @@ -235,6 +236,9 @@ export abstract class BaseBulkCommand extends Command { await this.initializeComponents(); await this.handleRevertOrRetry(mergedFlags); + // This early exit bypasses finally(); print the run summary and clear the progress-module + // flag here so it doesn't leak into the persisted config / later commands. + this.finalizeProgressSummary(); process.exit(0); } @@ -295,6 +299,9 @@ export abstract class BaseBulkCommand extends Command { const validation = validateFlags(this.bulkOperationConfig); if (!validation.valid) { + // buildConfig() set the progress-module flag; this early exit bypasses finally(), so + // clear it here to avoid leaking the setting into the persisted config / later commands. + this.finalizeProgressSummary(); process.exit(1); } @@ -403,9 +410,11 @@ export abstract class BaseBulkCommand extends Command { } /** - * Initialize the run-level summary + header once (mirrors import). Falls back to an empty - * branch name — displayOperationHeader applies its own `|| 'main'` for display — and suffixes - * the label with the branch only when one is set. Shared with bulk-taxonomies via inheritance. + * Initialize the run-level summary + header once. The label includes the branch, which + * defaults to 'main' from the --branch flag, so it normally reads e.g. "BULK PUBLISH-main" — + * the same "-" title shape export/import produce (SummaryManager uses the passed + * operationName verbatim). The branch is dropped from the label only in the edge case where + * it is unset. Shared with bulk-taxonomies via inheritance. */ protected beginOperationSummary(itemCount: number): void { const operationLabel = (this.bulkOperationConfig?.operation || 'operation').toString().toUpperCase(); @@ -419,15 +428,33 @@ export abstract class BaseBulkCommand extends Command { /** * Record a per-module row in the summary so the final summary shows Module Details for this - * command (entry/asset/taxonomy). SINGLE mode returns real success/failed counts; async - * submissions (BULK mode, taxonomy) report those as 0 (publish happens server-side), so the - * items successfully submitted are counted as success — the status URL tracks the real outcome. + * command (entry/asset/taxonomy). + * + * SINGLE mode processes items individually and returns real success/failed counts, so those + * are used directly. BULK mode submits async jobs — buildBulkModeResult reports success/failed + * as 0 because the publish runs server-side — so we count submission-level failures from + * batchResults (recorded as status:'failed') and treat the remaining submitted items as + * success. The printed status URL remains the source of truth for the real publish outcome. */ protected recordModuleSummary(result: BulkOperationResult, submittedCount: number): void { const showConsoleLogs = Boolean(configHandler.get('log')?.showConsoleLogs); + const publishMode = this.bulkOperationConfig?.publishMode || PublishMode.BULK; const total = result?.total || submittedCount || 0; - const failed = result?.failed || 0; - const success = result?.success ? result.success : Math.max(total - failed, 0); + + let success: number; + let failed: number; + if (publishMode === PublishMode.SINGLE) { + failed = result?.failed || 0; + success = typeof result?.success === 'number' ? result.success : Math.max(total - failed, 0); + } else { + // BULK: derive failures from batch submissions (result.failed is always 0 here). + failed = aggregateBatchResults(this.batchResults).totalFailed; + success = Math.max(total - failed, 0); + } + + // Clamp so counts never over/under-report relative to total. + failed = Math.min(Math.max(failed, 0), total); + success = Math.min(Math.max(success, 0), total - failed); const progress = CLIProgressManager.createSimple(this.resourceType, total, showConsoleLogs); for (let i = 0; i < success; i++) progress.tick(true); From 1983f233150572e7710869eab1bd414482453926 Mon Sep 17 00:00:00 2001 From: harshitha-cstk Date: Tue, 14 Jul 2026 19:45:44 +0530 Subject: [PATCH 34/37] refactor(bulk-operations): move progress-module flag out of pure buildConfig --- .../src/base-bulk-command.ts | 11 +++++++++-- .../src/utils/config-builder.ts | 5 ----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/contentstack-bulk-operations/src/base-bulk-command.ts b/packages/contentstack-bulk-operations/src/base-bulk-command.ts index 78e4dd162..a3a70cbaa 100644 --- a/packages/contentstack-bulk-operations/src/base-bulk-command.ts +++ b/packages/contentstack-bulk-operations/src/base-bulk-command.ts @@ -287,6 +287,13 @@ export abstract class BaseBulkCommand extends Command { * Build operation configuration */ protected async buildConfiguration(flags: any): Promise { + // Enable the progress-bar UI + suppress the timestamped console logs for the whole command. + // Set here (command lifecycle, runs before the first log call) rather than in the pure + // buildConfig() util so it isn't triggered by direct/unit-test callers of buildConfig. + // Cleared on every exit path: finally() on normal runs, and finalizeProgressSummary() before + // the validation exit(1) below and the revert/retry exit(0). + configHandler.set('log.progressSupportedModule', 'bulk-operations'); + this.bulkOperationConfig = buildConfig(flags); // buildConfig splits comma-separated oclif `multiple` values; mirror onto flags so @@ -299,8 +306,8 @@ export abstract class BaseBulkCommand extends Command { const validation = validateFlags(this.bulkOperationConfig); if (!validation.valid) { - // buildConfig() set the progress-module flag; this early exit bypasses finally(), so - // clear it here to avoid leaking the setting into the persisted config / later commands. + // The progress-module flag was set above; this early exit bypasses finally(), so clear it + // here to avoid leaking the setting into the persisted config / later commands. this.finalizeProgressSummary(); process.exit(1); } diff --git a/packages/contentstack-bulk-operations/src/utils/config-builder.ts b/packages/contentstack-bulk-operations/src/utils/config-builder.ts index 30c6c2130..c53deb98c 100644 --- a/packages/contentstack-bulk-operations/src/utils/config-builder.ts +++ b/packages/contentstack-bulk-operations/src/utils/config-builder.ts @@ -234,11 +234,6 @@ export function validateFlags(flagsOrConfig: CommandFlags | BulkOperationConfig) * Supports both CLI flags and config file format */ export function buildConfig(flags: CommandFlags): BulkOperationConfig { - // Enable the progress-bar UI + suppress the timestamped console logs for the whole command - // (mirrors export-config-handler). Set here — during config build, before the first log call — - // because the logger builds its transports once, lazily, so setting it later has no effect. - configHandler.set('log.progressSupportedModule', 'bulk-operations'); - const config: BulkOperationConfig = { alias: flags.alias, stackApiKey: flags['stack-api-key'], From 0e3b8ca1da9a51a5efda196f5bfa1340769d084e Mon Sep 17 00:00:00 2001 From: harshitha-cstk Date: Thu, 16 Jul 2026 13:40:44 +0530 Subject: [PATCH 35/37] add test cases for progress manager --- .../test/unit/base-bulk-command.test.ts | 131 +++++++++++++++++- 1 file changed, 130 insertions(+), 1 deletion(-) diff --git a/packages/contentstack-bulk-operations/test/unit/base-bulk-command.test.ts b/packages/contentstack-bulk-operations/test/unit/base-bulk-command.test.ts index dfb72425b..dc6c6e83f 100644 --- a/packages/contentstack-bulk-operations/test/unit/base-bulk-command.test.ts +++ b/packages/contentstack-bulk-operations/test/unit/base-bulk-command.test.ts @@ -4,7 +4,7 @@ import sinon from 'sinon'; import { Command } from '@contentstack/cli-command'; import messages, { $t } from '../../src/messages'; import { BaseBulkCommand } from '../../src/base-bulk-command'; -import { ResourceType, BulkOperationResult } from '../../src/interfaces'; +import { ResourceType, BulkOperationResult, PublishMode } from '../../src/interfaces'; import * as utils from '../../src/utils'; class TestBulkCommand extends BaseBulkCommand { @@ -521,6 +521,135 @@ describe('BaseBulkCommand', () => { }); }); + describe('progress manager (summary + cleanup)', () => { + let cliUtils: any; + let progressStub: { tick: sinon.SinonStub; complete: sinon.SinonStub }; + + beforeEach(() => { + cliUtils = require('@contentstack/cli-utilities'); + progressStub = { tick: sandbox.stub(), complete: sandbox.stub() }; + sandbox.stub(cliUtils.CLIProgressManager, 'createSimple').returns(progressStub as any); + sandbox.stub(cliUtils.CLIProgressManager, 'initializeGlobalSummary').returns({} as any); + sandbox.stub(cliUtils.CLIProgressManager, 'printGlobalSummary').callsFake(() => {}); + sandbox.stub(cliUtils.CLIProgressManager, 'clearGlobalSummary').callsFake(() => {}); + // clearProgressModuleSetting is a frozen re-export (not stubbable); let the real one run + // and drive/assert it through configHandler instead. + sandbox.stub(cliUtils.configHandler, 'get').returns({ showConsoleLogs: false }); + sandbox.stub(cliUtils.configHandler, 'set').callsFake(() => {}); + }); + + describe('beginOperationSummary', () => { + it('builds a "BULK -" label and passes the branch', () => { + (command as any).bulkOperationConfig = { operation: 'publish', branch: 'main' }; + + (command as any).beginOperationSummary(5); + + expect(cliUtils.CLIProgressManager.initializeGlobalSummary.calledOnce).to.be.true; + const args = cliUtils.CLIProgressManager.initializeGlobalSummary.firstCall.args; + expect(args[0]).to.equal('BULK PUBLISH-main'); + expect(args[1]).to.equal('main'); + }); + + it('omits the branch suffix when the branch is unset', () => { + (command as any).bulkOperationConfig = { operation: 'unpublish', branch: '' }; + + (command as any).beginOperationSummary(0); + + expect(cliUtils.CLIProgressManager.initializeGlobalSummary.firstCall.args[0]).to.equal('BULK UNPUBLISH'); + }); + + it('does not throw when bulkOperationConfig is undefined', () => { + (command as any).bulkOperationConfig = undefined; + + expect(() => (command as any).beginOperationSummary(3)).to.not.throw(); + expect(cliUtils.CLIProgressManager.initializeGlobalSummary.firstCall.args[0]).to.equal('BULK OPERATION'); + }); + }); + + describe('recordModuleSummary', () => { + it('SINGLE mode: uses the real success/failed counts from the result', () => { + (command as any).bulkOperationConfig = { publishMode: PublishMode.SINGLE }; + + (command as any).recordModuleSummary({ success: 8, failed: 2, total: 10 } as BulkOperationResult, 10); + + expect(cliUtils.CLIProgressManager.createSimple.calledWith(ResourceType.ENTRY, 10)).to.be.true; + expect(progressStub.tick.withArgs(true).callCount).to.equal(8); + expect(progressStub.tick.withArgs(false).callCount).to.equal(2); + expect(progressStub.complete.calledWith(false)).to.be.true; + }); + + it('BULK mode: derives failures from batchResults and counts the rest as submitted', () => { + (command as any).bulkOperationConfig = { publishMode: PublishMode.BULK }; + // buildBulkModeResult reports success:0/failed:0; failures live in batchResults. + (command as any).batchResults = new Map([ + ['b1', { status: 'failed', success: 0, failed: 50, jobId: '' }], + ['b2', { status: 'success', success: 0, failed: 0, jobId: 'job-2' }], + ]); + + (command as any).recordModuleSummary({ success: 0, failed: 0, total: 126 } as BulkOperationResult, 126); + + // failed = 50 (from batchResults); success = 126 - 50 = 76 + expect(progressStub.tick.withArgs(true).callCount).to.equal(76); + expect(progressStub.tick.withArgs(false).callCount).to.equal(50); + expect(progressStub.complete.calledWith(false)).to.be.true; + }); + + it('BULK mode: with no submission failures, all submitted items count as success', () => { + (command as any).bulkOperationConfig = { publishMode: PublishMode.BULK }; + (command as any).batchResults = new Map([ + ['b1', { status: 'success', success: 0, failed: 0, jobId: 'job-1' }], + ]); + + (command as any).recordModuleSummary({ success: 0, failed: 0, total: 50 } as BulkOperationResult, 50); + + expect(progressStub.tick.withArgs(true).callCount).to.equal(50); + expect(progressStub.tick.withArgs(false).callCount).to.equal(0); + expect(progressStub.complete.calledWith(true)).to.be.true; + }); + + it('clamps counts so failures never exceed the total', () => { + (command as any).bulkOperationConfig = { publishMode: PublishMode.BULK }; + (command as any).batchResults = new Map([ + ['b1', { status: 'failed', success: 0, failed: 999, jobId: '' }], + ]); + + (command as any).recordModuleSummary({ success: 0, failed: 0, total: 10 } as BulkOperationResult, 10); + + expect(progressStub.tick.withArgs(false).callCount).to.equal(10); // clamped to total + expect(progressStub.tick.withArgs(true).callCount).to.equal(0); + }); + + it('falls back to submittedCount when the result has no total', () => { + (command as any).bulkOperationConfig = { publishMode: PublishMode.BULK }; + (command as any).batchResults = new Map(); + + (command as any).recordModuleSummary({ success: 0, failed: 0 } as BulkOperationResult, 7); + + expect(cliUtils.CLIProgressManager.createSimple.calledWith(ResourceType.ENTRY, 7)).to.be.true; + expect(progressStub.tick.withArgs(true).callCount).to.equal(7); + }); + }); + + describe('finalizeProgressSummary', () => { + it('prints the summary and clears it', () => { + (command as any).finalizeProgressSummary(); + + expect(cliUtils.CLIProgressManager.printGlobalSummary.calledOnce).to.be.true; + expect(cliUtils.CLIProgressManager.clearGlobalSummary.calledOnce).to.be.true; + }); + + it('clears the persisted progress-module flag', () => { + // Simulate the flag being set, then verify clearProgressModuleSetting removes it. + cliUtils.configHandler.get.returns({ progressSupportedModule: 'bulk-operations', showConsoleLogs: false }); + + (command as any).finalizeProgressSummary(); + + expect(cliUtils.configHandler.set.calledWith('log', sinon.match((v: any) => !('progressSupportedModule' in v)))).to + .be.true; + }); + }); + }); + describe('printOperationSummary', () => { beforeEach(() => { // Initialize bulkOperationConfig required for printOperationSummary From a116af3f6afe960b1e7ce72bd74e079a5e1947c2 Mon Sep 17 00:00:00 2001 From: naman-contentstack Date: Sun, 19 Jul 2026 14:19:52 +0530 Subject: [PATCH 36/37] chore: version bump --- packages/contentstack-apps-cli/package.json | 6 +++--- .../contentstack-asset-management/package.json | 4 ++-- packages/contentstack-audit/package.json | 6 +++--- packages/contentstack-bootstrap/package.json | 10 +++++----- packages/contentstack-branches/package.json | 6 +++--- packages/contentstack-bulk-operations/package.json | 8 ++++---- .../package.json | 6 +++--- packages/contentstack-cli-tsgen/package.json | 6 +++--- packages/contentstack-clone/package.json | 10 +++++----- packages/contentstack-content-type/package.json | 6 +++--- packages/contentstack-export-to-csv/package.json | 6 +++--- packages/contentstack-export/package.json | 14 +++++++------- .../contentstack-external-migrate/package.json | 6 +++--- packages/contentstack-import-setup/package.json | 8 ++++---- packages/contentstack-import/package.json | 12 ++++++------ packages/contentstack-migrate-rte/package.json | 6 +++--- packages/contentstack-migration/package.json | 6 +++--- packages/contentstack-query-export/package.json | 10 +++++----- packages/contentstack-seed/package.json | 8 ++++---- packages/contentstack-variants/package.json | 4 ++-- 20 files changed, 74 insertions(+), 74 deletions(-) diff --git a/packages/contentstack-apps-cli/package.json b/packages/contentstack-apps-cli/package.json index 8360ae5fd..0a31c8586 100644 --- a/packages/contentstack-apps-cli/package.json +++ b/packages/contentstack-apps-cli/package.json @@ -1,6 +1,6 @@ { "name": "@contentstack/apps-cli", - "version": "2.0.0-beta.3", + "version": "2.0.0-beta.4", "description": "App ClI", "author": "Contentstack CLI", "homepage": "https://github.com/contentstack/cli-plugins/tree/main/packages/contentstack-apps-cli", @@ -22,9 +22,9 @@ ], "dependencies": { "@apollo/client": "^3.14.1", - "@contentstack/cli-command": "~2.0.0-beta.9", + "@contentstack/cli-command": "~2.0.0-beta.10", "@contentstack/cli-launch": "^1.11.1", - "@contentstack/cli-utilities": "~2.0.0-beta.10", + "@contentstack/cli-utilities": "~2.0.0-beta.11", "adm-zip": "^0.5.18", "chalk": "^5.6.2", "lodash": "^4.18.1", diff --git a/packages/contentstack-asset-management/package.json b/packages/contentstack-asset-management/package.json index 5fa3d281a..069767c6b 100644 --- a/packages/contentstack-asset-management/package.json +++ b/packages/contentstack-asset-management/package.json @@ -1,6 +1,6 @@ { "name": "@contentstack/cli-asset-management", - "version": "1.0.0-beta.6", + "version": "1.0.0-beta.7", "description": "Contentstack Assets API adapter for export and import", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -30,7 +30,7 @@ ], "license": "MIT", "dependencies": { - "@contentstack/cli-utilities": "~2.0.0-beta.10", + "@contentstack/cli-utilities": "~2.0.0-beta.11", "lodash": "^4.18.1" }, "oclif": { diff --git a/packages/contentstack-audit/package.json b/packages/contentstack-audit/package.json index acafa9456..1c65e1a8e 100644 --- a/packages/contentstack-audit/package.json +++ b/packages/contentstack-audit/package.json @@ -1,6 +1,6 @@ { "name": "@contentstack/cli-audit", - "version": "2.0.0-beta.14", + "version": "2.0.0-beta.15", "description": "Contentstack audit plugin", "author": "Contentstack CLI", "homepage": "https://github.com/contentstack/cli", @@ -22,8 +22,8 @@ "/oclif.manifest.json" ], "dependencies": { - "@contentstack/cli-command": "~2.0.0-beta.9", - "@contentstack/cli-utilities": "~2.0.0-beta.10", + "@contentstack/cli-command": "~2.0.0-beta.10", + "@contentstack/cli-utilities": "~2.0.0-beta.11", "@oclif/core": "^4.11.4", "chalk": "^5.6.2", "fast-csv": "^4.3.6", diff --git a/packages/contentstack-bootstrap/package.json b/packages/contentstack-bootstrap/package.json index 01946cd80..6e3ea6a85 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": "2.0.0-beta.23", + "version": "2.0.0-beta.24", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli-plugins/issues", "scripts": { @@ -16,10 +16,10 @@ "test:report": "nyc --reporter=lcov mocha \"test/**/*.test.js\"" }, "dependencies": { - "@contentstack/cli-cm-seed": "~2.0.0-beta.23", - "@contentstack/cli-command": "~2.0.0-beta.9", - "@contentstack/cli-utilities": "~2.0.0-beta.10", - "@contentstack/cli-config": "~2.0.0-beta.12", + "@contentstack/cli-cm-seed": "~2.0.0-beta.24", + "@contentstack/cli-command": "~2.0.0-beta.10", + "@contentstack/cli-utilities": "~2.0.0-beta.11", + "@contentstack/cli-config": "~2.0.0-beta.14", "@oclif/core": "^4.11.4", "inquirer": "12.11.1", "mkdirp": "^2.1.6", diff --git a/packages/contentstack-branches/package.json b/packages/contentstack-branches/package.json index 464215878..4e304bd64 100644 --- a/packages/contentstack-branches/package.json +++ b/packages/contentstack-branches/package.json @@ -1,13 +1,13 @@ { "name": "@contentstack/cli-cm-branches", "description": "Contentstack CLI plugin to do branches operations", - "version": "2.0.0-beta.9", + "version": "2.0.0-beta.10", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli-plugins/issues", "dependencies": { - "@contentstack/cli-command": "~2.0.0-beta.9", + "@contentstack/cli-command": "~2.0.0-beta.10", "@oclif/core": "^4.11.4", - "@contentstack/cli-utilities": "~2.0.0-beta.10", + "@contentstack/cli-utilities": "~2.0.0-beta.11", "chalk": "^5.6.2", "just-diff": "^6.0.2", "lodash": "^4.18.1" diff --git a/packages/contentstack-bulk-operations/package.json b/packages/contentstack-bulk-operations/package.json index b4c78cb6f..6d610f6f7 100644 --- a/packages/contentstack-bulk-operations/package.json +++ b/packages/contentstack-bulk-operations/package.json @@ -1,6 +1,6 @@ { "name": "@contentstack/cli-bulk-operations", - "version": "2.0.0-beta.3", + "version": "2.0.0-beta.4", "description": "Contentstack CLI plugin for bulk operations", "author": "Contentstack CLI", "homepage": "https://github.com/contentstack/cli-plugins/tree/main/packages/contentstack-bulk-operations", @@ -20,9 +20,9 @@ "/oclif.manifest.json" ], "dependencies": { - "@contentstack/cli-asset-management": "1.0.0-beta.6", - "@contentstack/cli-command": "~2.0.0-beta.9", - "@contentstack/cli-utilities": "~2.0.0-beta.10", + "@contentstack/cli-asset-management": "1.0.0-beta.7", + "@contentstack/cli-command": "~2.0.0-beta.10", + "@contentstack/cli-utilities": "~2.0.0-beta.11", "@contentstack/delivery-sdk": "^5.2.0", "@contentstack/management": "^1.30.2", "lodash": "^4.18.1", diff --git a/packages/contentstack-cli-cm-regex-validate/package.json b/packages/contentstack-cli-cm-regex-validate/package.json index c638a86e7..e6b7268fd 100644 --- a/packages/contentstack-cli-cm-regex-validate/package.json +++ b/packages/contentstack-cli-cm-regex-validate/package.json @@ -1,12 +1,12 @@ { "name": "@contentstack/cli-cm-regex-validate", "description": "Validate Fields with Regex Property of Content Type and Global Field in a Stack", - "version": "2.0.0-beta.2", + "version": "2.0.0-beta.3", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli-plugins/issues", "dependencies": { - "@contentstack/cli-command": "~2.0.0-beta.9", - "@contentstack/cli-utilities": "~2.0.0-beta.10", + "@contentstack/cli-command": "~2.0.0-beta.10", + "@contentstack/cli-utilities": "~2.0.0-beta.11", "@contentstack/management": "^1.30.2", "cli-table3": "^0.6.5", "inquirer": "12.11.1", diff --git a/packages/contentstack-cli-tsgen/package.json b/packages/contentstack-cli-tsgen/package.json index 513f21be7..cbfcf583e 100644 --- a/packages/contentstack-cli-tsgen/package.json +++ b/packages/contentstack-cli-tsgen/package.json @@ -1,12 +1,12 @@ { "name": "contentstack-cli-tsgen", "description": "Generate TypeScript typings from a Stack.", - "version": "5.0.0-beta.2", + "version": "5.0.0-beta.3", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli-plugins/issues", "dependencies": { - "@contentstack/cli-command": "~2.0.0-beta.9", - "@contentstack/cli-utilities": "~2.0.0-beta.10", + "@contentstack/cli-command": "~2.0.0-beta.10", + "@contentstack/cli-utilities": "~2.0.0-beta.11", "@contentstack/types-generator": "^3.10.2" }, "devDependencies": { diff --git a/packages/contentstack-clone/package.json b/packages/contentstack-clone/package.json index c8c361b10..bbb126d09 100644 --- a/packages/contentstack-clone/package.json +++ b/packages/contentstack-clone/package.json @@ -1,15 +1,15 @@ { "name": "@contentstack/cli-cm-clone", "description": "Contentstack stack clone plugin", - "version": "2.0.0-beta.24", + "version": "2.0.0-beta.25", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli-plugins/issues", "dependencies": { "@colors/colors": "^1.6.0", - "@contentstack/cli-cm-export": "~2.0.0-beta.23", - "@contentstack/cli-cm-import": "~2.0.0-beta.23", - "@contentstack/cli-command": "~2.0.0-beta.9", - "@contentstack/cli-utilities": "~2.0.0-beta.10", + "@contentstack/cli-cm-export": "~2.0.0-beta.24", + "@contentstack/cli-cm-import": "~2.0.0-beta.24", + "@contentstack/cli-command": "~2.0.0-beta.10", + "@contentstack/cli-utilities": "~2.0.0-beta.11", "@oclif/core": "^4.11.4", "chalk": "^5.6.2", "inquirer": "12.11.1", diff --git a/packages/contentstack-content-type/package.json b/packages/contentstack-content-type/package.json index 8732a81de..ccc8934c6 100644 --- a/packages/contentstack-content-type/package.json +++ b/packages/contentstack-content-type/package.json @@ -1,12 +1,12 @@ { "name": "contentstack-cli-content-type", "description": "Retrieve information about Content Types in a Stack.", - "version": "2.0.0-beta.1", + "version": "2.0.0-beta.2", "author": "Contentstack Developer", "bugs": "https://github.com/contentstack/cli-plugins/issues", "dependencies": { - "@contentstack/cli-command": "~2.0.0-beta.9", - "@contentstack/cli-utilities": "~2.0.0-beta.10", + "@contentstack/cli-command": "~2.0.0-beta.10", + "@contentstack/cli-utilities": "~2.0.0-beta.11", "@types/diff2html": "^3.0.3", "@types/git-diff": "^2.0.7", "@types/hogan.js": "^3.0.5", diff --git a/packages/contentstack-export-to-csv/package.json b/packages/contentstack-export-to-csv/package.json index 45fbcf4dd..9eaa55d79 100644 --- a/packages/contentstack-export-to-csv/package.json +++ b/packages/contentstack-export-to-csv/package.json @@ -1,12 +1,12 @@ { "name": "@contentstack/cli-cm-export-to-csv", "description": "Export entries, taxonomies, terms, or organization users to CSV", - "version": "2.0.0-beta.10", + "version": "2.0.0-beta.11", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli-plugins/issues", "dependencies": { - "@contentstack/cli-command": "~2.0.0-beta.9", - "@contentstack/cli-utilities": "~2.0.0-beta.10", + "@contentstack/cli-command": "~2.0.0-beta.10", + "@contentstack/cli-utilities": "~2.0.0-beta.11", "@oclif/core": "^4.11.4", "@inquirer/prompts": "^7.0.0", "fast-csv": "^4.3.6" diff --git a/packages/contentstack-export/package.json b/packages/contentstack-export/package.json index a873f3148..389d4835b 100644 --- a/packages/contentstack-export/package.json +++ b/packages/contentstack-export/package.json @@ -1,14 +1,14 @@ { "name": "@contentstack/cli-cm-export", "description": "Contentstack CLI plugin to export content from stack", - "version": "2.0.0-beta.23", + "version": "2.0.0-beta.24", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli-plugins/issues", "dependencies": { - "@contentstack/cli-command": "~2.0.0-beta.9", - "@contentstack/cli-utilities": "~2.0.0-beta.10", - "@contentstack/cli-variants": "~2.0.0-beta.18", - "@contentstack/cli-asset-management": "~1.0.0-beta.6", + "@contentstack/cli-command": "~2.0.0-beta.10", + "@contentstack/cli-utilities": "~2.0.0-beta.11", + "@contentstack/cli-variants": "~2.0.0-beta.19", + "@contentstack/cli-asset-management": "~1.0.0-beta.7", "@oclif/core": "^4.11.4", "async": "^3.2.6", "big-json": "^3.2.0", @@ -22,8 +22,8 @@ "winston": "^3.19.0" }, "devDependencies": { - "@contentstack/cli-auth": "~2.0.0-beta.14", - "@contentstack/cli-config": "~2.0.0-beta.12", + "@contentstack/cli-auth": "~2.0.0-beta.16", + "@contentstack/cli-config": "~2.0.0-beta.14", "@contentstack/cli-dev-dependencies": "~2.0.0-beta.0", "@oclif/plugin-help": "^6.2.49", "@oclif/test": "^4.1.18", diff --git a/packages/contentstack-external-migrate/package.json b/packages/contentstack-external-migrate/package.json index 61c6756de..3dcb87d2b 100644 --- a/packages/contentstack-external-migrate/package.json +++ b/packages/contentstack-external-migrate/package.json @@ -1,6 +1,6 @@ { "name": "@contentstack/cli-external-migrate", - "version": "2.0.0-beta.2", + "version": "2.0.0-beta.3", "description": "Migrate from external source to Contentstack", "author": "Contentstack", "license": "MIT", @@ -23,8 +23,8 @@ "version": "oclif readme && git add README.md" }, "dependencies": { - "@contentstack/cli-command": "~2.0.0-beta.9", - "@contentstack/cli-utilities": "~2.0.0-beta.10", + "@contentstack/cli-command": "~2.0.0-beta.10", + "@contentstack/cli-utilities": "~2.0.0-beta.11", "@contentstack/json-rte-serializer": "~2.1.0", "@contentstack/marketplace-sdk": "~1.5.2", "@oclif/core": "^4.8.0", diff --git a/packages/contentstack-import-setup/package.json b/packages/contentstack-import-setup/package.json index b3a9af7a9..9bd3dcc53 100644 --- a/packages/contentstack-import-setup/package.json +++ b/packages/contentstack-import-setup/package.json @@ -1,13 +1,13 @@ { "name": "@contentstack/cli-cm-import-setup", "description": "Contentstack CLI plugin to setup the mappers and configurations for the import command", - "version": "2.0.0-beta.17", + "version": "2.0.0-beta.18", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli-plugins/issues", "dependencies": { - "@contentstack/cli-command": "~2.0.0-beta.9", - "@contentstack/cli-utilities": "~2.0.0-beta.10", - "@contentstack/cli-asset-management": "~1.0.0-beta.6", + "@contentstack/cli-command": "~2.0.0-beta.10", + "@contentstack/cli-utilities": "~2.0.0-beta.11", + "@contentstack/cli-asset-management": "~1.0.0-beta.7", "@oclif/core": "^4.11.4", "big-json": "^3.2.0", "chalk": "^5.6.2", diff --git a/packages/contentstack-import/package.json b/packages/contentstack-import/package.json index bded36cf5..07483ff4c 100644 --- a/packages/contentstack-import/package.json +++ b/packages/contentstack-import/package.json @@ -1,15 +1,15 @@ { "name": "@contentstack/cli-cm-import", "description": "Contentstack CLI plugin to import content into stack", - "version": "2.0.0-beta.23", + "version": "2.0.0-beta.24", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli-plugins/issues", "dependencies": { - "@contentstack/cli-audit": "~2.0.0-beta.14", - "@contentstack/cli-command": "~2.0.0-beta.9", - "@contentstack/cli-utilities": "~2.0.0-beta.10", - "@contentstack/cli-variants": "~2.0.0-beta.18", - "@contentstack/cli-asset-management": "~1.0.0-beta.6", + "@contentstack/cli-audit": "~2.0.0-beta.15", + "@contentstack/cli-command": "~2.0.0-beta.10", + "@contentstack/cli-utilities": "~2.0.0-beta.11", + "@contentstack/cli-variants": "~2.0.0-beta.19", + "@contentstack/cli-asset-management": "~1.0.0-beta.7", "@oclif/core": "^4.11.4", "big-json": "^3.2.0", "bluebird": "^3.7.2", diff --git a/packages/contentstack-migrate-rte/package.json b/packages/contentstack-migrate-rte/package.json index afbac4293..deca46ed6 100644 --- a/packages/contentstack-migrate-rte/package.json +++ b/packages/contentstack-migrate-rte/package.json @@ -1,14 +1,14 @@ { "name": "@contentstack/cli-cm-migrate-rte", "description": "Contentstack CLI plugin to migrate HTML RTE to JSON RTE", - "version": "2.0.0-beta.8", + "version": "2.0.0-beta.9", "author": "contentstack", "bugs": { "url": "https://github.com/contentstack/cli-plugins/issues" }, "dependencies": { - "@contentstack/cli-command": "~2.0.0-beta.9", - "@contentstack/cli-utilities": "~2.0.0-beta.10", + "@contentstack/cli-command": "~2.0.0-beta.10", + "@contentstack/cli-utilities": "~2.0.0-beta.11", "@contentstack/json-rte-serializer": "~2.1.0", "@oclif/core": "^4.11.4", "@oclif/plugin-help": "^6.2.49", diff --git a/packages/contentstack-migration/package.json b/packages/contentstack-migration/package.json index 2d390510b..d75a243db 100644 --- a/packages/contentstack-migration/package.json +++ b/packages/contentstack-migration/package.json @@ -1,11 +1,11 @@ { "name": "@contentstack/cli-migration", - "version": "2.0.0-beta.15", + "version": "2.0.0-beta.16", "author": "@contentstack", "bugs": "https://github.com/contentstack/cli-plugins/issues", "dependencies": { - "@contentstack/cli-command": "~2.0.0-beta.9", - "@contentstack/cli-utilities": "~2.0.0-beta.10", + "@contentstack/cli-command": "~2.0.0-beta.10", + "@contentstack/cli-utilities": "~2.0.0-beta.11", "@oclif/core": "^4.11.4", "async": "^3.2.6", "callsites": "^3.1.0", diff --git a/packages/contentstack-query-export/package.json b/packages/contentstack-query-export/package.json index 07e838447..d3f048ed0 100644 --- a/packages/contentstack-query-export/package.json +++ b/packages/contentstack-query-export/package.json @@ -1,14 +1,14 @@ { "name": "@contentstack/cli-cm-export-query", "description": "Contentstack CLI plugin to export content from stack", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli-plugins/issues", "dependencies": { - "@contentstack/cli-asset-management": "~1.0.0-beta.6", - "@contentstack/cli-cm-export": "~2.0.0-beta.23", - "@contentstack/cli-command": "~2.0.0-beta.9", - "@contentstack/cli-utilities": "~2.0.0-beta.10", + "@contentstack/cli-asset-management": "~1.0.0-beta.7", + "@contentstack/cli-cm-export": "~2.0.0-beta.24", + "@contentstack/cli-command": "~2.0.0-beta.10", + "@contentstack/cli-utilities": "~2.0.0-beta.11", "@oclif/core": "^4.11.4", "async": "^3.2.6", "big-json": "^3.2.0", diff --git a/packages/contentstack-seed/package.json b/packages/contentstack-seed/package.json index 072a51e1e..226be054e 100644 --- a/packages/contentstack-seed/package.json +++ b/packages/contentstack-seed/package.json @@ -1,13 +1,13 @@ { "name": "@contentstack/cli-cm-seed", "description": "create a Stack from existing content types, entries, assets, etc.", - "version": "2.0.0-beta.23", + "version": "2.0.0-beta.24", "author": "Contentstack", "bugs": "https://github.com/contentstack/cli-plugins/issues", "dependencies": { - "@contentstack/cli-cm-import": "~2.0.0-beta.23", - "@contentstack/cli-command": "~2.0.0-beta.9", - "@contentstack/cli-utilities": "~2.0.0-beta.10", + "@contentstack/cli-cm-import": "~2.0.0-beta.24", + "@contentstack/cli-command": "~2.0.0-beta.10", + "@contentstack/cli-utilities": "~2.0.0-beta.11", "inquirer": "12.11.1", "mkdirp": "^1.0.4", "tar": "^7.5.20", diff --git a/packages/contentstack-variants/package.json b/packages/contentstack-variants/package.json index a33a160c4..5057e7577 100644 --- a/packages/contentstack-variants/package.json +++ b/packages/contentstack-variants/package.json @@ -1,6 +1,6 @@ { "name": "@contentstack/cli-variants", - "version": "2.0.0-beta.18", + "version": "2.0.0-beta.19", "description": "Variants plugin", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -27,7 +27,7 @@ "typescript": "^5.8.3" }, "dependencies": { - "@contentstack/cli-utilities": "~2.0.0-beta.10", + "@contentstack/cli-utilities": "~2.0.0-beta.11", "@oclif/core": "^4.11.4", "lodash": "^4.18.1", "mkdirp": "^1.0.4", From f403282e65109ea13c203263a8832370d0ce28fb Mon Sep 17 00:00:00 2001 From: naman-contentstack Date: Mon, 20 Jul 2026 16:56:53 +0530 Subject: [PATCH 37/37] update lockfile --- .talismanrc | 108 +------ pnpm-lock.yaml | 753 +++++++++++++++++++------------------------------ 2 files changed, 295 insertions(+), 566 deletions(-) diff --git a/.talismanrc b/.talismanrc index 543059a61..d4b4f5124 100644 --- a/.talismanrc +++ b/.talismanrc @@ -1,110 +1,4 @@ fileignoreconfig: - filename: pnpm-lock.yaml - checksum: 2e1116588e19b058f0d6a5efa28f54c6a3af11b0f0d8c442ed9866a90b77b713 -- filename: packages/contentstack-clone/test/lib/helpers/command-helpers.test.ts - checksum: 32d385a677a76faa54cb3ddfe92fb1f1f53cfab878a78e2792c823a363956bd2 -- filename: packages/contentstack-clone/test/commands/stack-clone.test.ts - checksum: 4547ba010cc3c9954de49e2b2bef45288dd070c4ad000b6ae3e9a8c9bb1ad296 -- filename: packages/contentstack-asset-management/test/unit/import/workspaces.test.ts - checksum: 67c11d312ba6838659c0b2cefd59d706d4b3c1a9807ed551dcb6d94f4d1d60a3 -- filename: packages/contentstack-clone/test/lib/util/clone-handler.branch.test.ts - checksum: db8c090aaada21d3952c5bc382228a0a11cebb63926512a5e2581bdaf5f4c2f6 -- filename: packages/contentstack-asset-management/test/unit/import/spaces.test.ts - checksum: d2363470664a6cdeaf59c305fa6307704e48b73f92b7d471433c17528daa5450 -- filename: packages/contentstack-asset-management/test/unit/utils/detect-asset-management-export.test.ts - checksum: 1917c51ebf4ba7f94cc440c27341d840911b5c315e250a451732c2d37518db64 -- filename: packages/contentstack-bootstrap/test/bootstrap-integration.test.js - checksum: 67579b79fc5c1b4feead8f537e7bdfd14fac58aa93c127f590505e47d26e0eb0 -- filename: packages/contentstack-import/test/unit/import/modules/index.test.ts - checksum: 27dd2c5f60f9f4c70f2ebf4c08cf8bcbe2d5e4dc7fe52a53972af3fdb57e0e63 -- filename: packages/contentstack-bulk-operations/test/unit/base-bulk-command.test.ts - checksum: 522b91a2d4bb6a73ebe5ab92c0111e74d567c4360470beefd6a7ca8d30a6e311 -- filename: packages/contentstack-content-type/tests/core/command.test.ts - checksum: 81da32fc47083a3421f5f1d9c04149ab313cb238d6416d3182f8b6d64dc8827d -- filename: packages/contentstack-content-type/tests/core/contentstack/client.test.ts - checksum: da15b04aa0a7ab0e48f70b847e68c05372943279e51c22f8539b01bb48033183 -- filename: packages/contentstack-import/test/unit/import/modules/marketplace-apps.test.ts - checksum: 17b3e6e0f7ce12ddabd688996c72d04dba5245fd300a23b541cf7bdfbbf7ef1a -- filename: packages/contentstack-asset-management/test/unit/import/asset-types.test.ts - checksum: 76aad963f5977059f7632d69a6fb36004229f3455b1618c372579dfa3cbc2d62 -- filename: packages/contentstack-asset-management/test/unit/import/assets.test.ts - checksum: f5f0494c9263ebcf7eabff806ff41bd7beed0cb6a0f9a631dd70ffa01524a304 -- filename: packages/contentstack-import/test/unit/utils/common-helper.test.ts - checksum: 7a10c4625d666cf705cd9869b74b3bc2dcec94926cbb5f719e4f8dc4f053b2c7 -- filename: packages/contentstack-content-type/tests/utils/index.test.ts - checksum: 8510fedf5eb6078c27d6a0d65d8bff4aa2d41b545246aed220d1a6a643188ad8 -- filename: packages/contentstack-import/test/unit/utils/interactive.test.ts - checksum: dad20e229e02e847b5e939fdaf987b1a6c9ff4e1529b6d96a51130f7293285a9 -- filename: packages/contentstack-asset-management/test/unit/import/base.test.ts - checksum: 53168bda5251300d8dfd0effd470070a5733c37b77abacc846d91e7086c8c022 -- filename: packages/contentstack-asset-management/test/unit/import/fields.test.ts - checksum: 9e97001a6c92d213a9f55a1458bf39c0996952467e0b4aabd954ddd8ad1805b9 -- filename: packages/contentstack-export-to-csv/test/unit/commands/export-to-csv.test.ts - checksum: cc82f4b0c50783dd42d8d57ba2af1e5c9aa3857399c5abf39bc5dc3fac105658 -- filename: packages/contentstack-bulk-operations/test/unit/utils/bulk-operation-log-handler.test.ts - checksum: 8698f77bbb828df10ddc3a94726076a262fbf47d2468233c7e10e66cac42f97d -- filename: packages/contentstack-import/test/unit/utils/login-handler.test.ts - checksum: a60f46b4d79ccdbeecfed27ffffbc97a44d6753f36ee74b68b725c8b20bbb2eb -- filename: packages/contentstack-export-to-csv/test/unit/utils/error-handler.test.ts - checksum: cef8f515ab6c0441f67748693473bf1499c2d54945aab1b89baaad37be8af2d9 -- filename: packages/contentstack-export-to-csv/test/unit/utils/teams-export.functional.test.ts - checksum: bcf70dbb201a0a1755f0b8f59550aae95a3e1d03700959eee7e8d415f9647746 -- filename: packages/contentstack-export/test/unit/utils/marketplace-app-helper.test.ts - checksum: 5648d90b0f7dc33a5b020324db5218707861ebd7201802f7fef00f1c03c5ce82 -- filename: packages/contentstack-export/test/unit/export/module-exporter.test.ts - checksum: 485bbd175cc95aff6c1c3c6b2904f92c3d4ea1272a056158a901da3eff9692d6 -- filename: packages/contentstack-import-setup/test/unit/common-helper.test.ts - checksum: ccbd8209d342bf651c2c38326cba13bc3e5c2af4200d7110fdd7c3de4824d21d -- filename: packages/contentstack-export/test/unit/utils/common-helper.test.ts - checksum: a4bfba19846e1075821521a202d856203f02a6bc0e5ec4f51b5265801cb4ddd9 -- filename: packages/contentstack-import/test/unit/import/modules/assets.test.ts - checksum: 259d5c325ec7de08d0f45099df9d3eb7c97374691c1c4d281221e112b9097191 -- filename: packages/contentstack-export/test/unit/export/modules/marketplace-apps.test.ts - checksum: 07eef22a3c471e8da12b1e7e51d45b76410725c4c160a0f35432d9aac5916974 -- filename: packages/contentstack-export/test/unit/utils/interactive.test.ts - checksum: 0ea47db305f576c8c9da8cb34ae915f6b01992208ff1c4380cb7ffd93f538e5d -- filename: packages/contentstack-bulk-operations/test/unit/utils/revert-retry-handler.test.ts - checksum: c34a4bdea186f4ce48171d90b8ab0f1c94162e441acb23e3a0e00cb9f9f9255f -- filename: packages/contentstack-bulk-operations/test/unit/utils/config-builder.test.ts - checksum: e5891257999e9e940956ca77f5a7834be35d259edccd41c06f77736194ad7454 -- filename: packages/contentstack-migrate-rte/test/commands/json-migration.test.js - checksum: 0d18641a32f7cf33d013a5a7c447c1067ba77022513b42304a727f873c741e99 -- filename: packages/contentstack-seed/test/commands/cm/stacks/seed.test.ts - checksum: e469a60f09a9a5fd3e2ce80dd6df8bf4f2c82acad1afebde00f458afa26d36c9 -- filename: packages/contentstack-migrate-rte/test/utils/index.js - checksum: f67235e607a446e5b2dd624046966a1ac5af7bce128aa080ec3c420c48b8bddc -- filename: packages/contentstack-query-export/test/unit/common-helper.test.ts - checksum: a0aa399a2ec15760fe25f7e952d64792b55d3c38d2281858a48e64f0f9081344 -- filename: packages/contentstack-seed/test/seed/contentstack/client.test.ts - checksum: 63bd3325e2717e5653f12e4afa362938e58eeaad5fbe07c1d41e2bd15e3451bd -- filename: packages/contentstack-import/test/unit/commands/cm/stacks/import.test.ts - checksum: d241111877a997f00702eaf171c1fde53a075a9c8f7971a8e6b1577c1c83279d -- filename: packages/contentstack-import/test/unit/import/modules/base-class.test.ts - checksum: 40c504d508d40b6416ccedb5a323365dd97f313b1dcc885e4fec3639e807b383 -- filename: packages/contentstack-import/test/unit/import/modules/content-types.test.ts - checksum: 662cb42217c12af2b4dad5d1355858095c5df062e42c89e09b2680fdbee80699 -- filename: packages/contentstack-import/test/unit/import/modules/entries.test.ts - checksum: a7311e3077fee52bfd23c46d51ebe9ce58d202dd735514a44ec230615f4cd917 -- filename: packages/contentstack-import/test/unit/import/modules/global-fields.test.ts - checksum: 2b4e0d5d11f825d21d45569f681acd886c5f84717873b26998b4dab2e91bb439 -- filename: packages/contentstack-seed/test/seed/interactive.test.ts - checksum: 8364557eb69b9a297281f868420c13c5b61b26b79bc2ceb0a9b548cfb0365d6d -- filename: packages/contentstack-variants/test/unit/export/variant-entries.test.ts - checksum: dd7018cd5cc8b5fab73004b2968afed7ce33abec0b20e1b17f15f2be23b117db -- filename: packages/contentstack-import-setup/test/unit/login-handler.test.ts - checksum: 2df43be75a96e1a3a00dd256628e191909aa9d7f192b672b56cb3772e074958c -- filename: packages/contentstack-export/test/unit/utils/export-config-handler.test.ts - checksum: f612661a8b6784b20ea62794b35192b340a34d8424a54a1a2cffec1878ab7528 -- filename: packages/contentstack-import/test/unit/utils/marketplace-app-helper.test.ts - checksum: de694e861560c4c242100eaf17a6d8e230247b99f94e4b428e55ef065084c10c -- filename: packages/contentstack-bulk-operations/src/commands/cm/stacks/bulk-assets.ts - checksum: 8bca423db4c3815c651ad922d986a53b6271cce3ea27f5987b66ee594151165e -- filename: packages/contentstack-bulk-operations/src/messages/index.ts - checksum: 07c2bf3f3130ad5e8b6a2971d76139e9b643c70a9ff5f7450adfb5c9bf3d7164 -- filename: packages/contentstack-bulk-operations/test/unit/utils/operation-flag-matrix.test.ts - checksum: 35451ca4c03359b06531a8461091f4a3a45c4dea1f8853081fb53e4ce28c1cc3 -- filename: packages/contentstack-bulk-operations/test/unit/commands/bulk-assets-init.test.ts - checksum: 590b1cfe42d46d0917ac90f363b1ccd05200b180bd9c58c770ffd1f12eb18327 -- filename: packages/contentstack-bulk-operations/src/utils/operation-flag-matrix.ts - checksum: 99a3c3eb422a17f73f4c8f15088004fa4c95df3545bdf510310c1f3a20e4c2c2 + checksum: 9756a3aa8a948bfd66a5fdc371f720ef380da007f0b8e6df348cafbd3d7d8a76 version: "" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b756676c8..5db55112a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,14 +30,14 @@ importers: specifier: ^3.14.1 version: 3.14.1(graphql@16.14.2) '@contentstack/cli-command': - specifier: ~2.0.0-beta.9 - version: 2.0.0-beta.9(@types/node@20.19.43) + specifier: ~2.0.0-beta.10 + version: 2.0.0-beta.10(@types/node@20.19.43) '@contentstack/cli-launch': specifier: ^1.11.1 version: 1.11.1(@types/node@20.19.43)(tslib@2.8.1)(typescript@5.9.3) '@contentstack/cli-utilities': - specifier: ~2.0.0-beta.10 - version: 2.0.0-beta.10(@types/node@20.19.43) + specifier: ~2.0.0-beta.11 + version: 2.0.0-beta.11(@types/node@20.19.43) adm-zip: specifier: ^0.5.18 version: 0.5.18 @@ -101,7 +101,7 @@ importers: version: 10.7.0 eslint-config-oclif: specifier: ^6.0.157 - version: 6.0.176(eslint@10.7.0)(typescript@5.9.3) + version: 6.0.177(eslint@10.7.0)(typescript@5.9.3) eslint-config-oclif-typescript: specifier: ^3.1.14 version: 3.1.14(eslint@10.7.0)(typescript@5.9.3) @@ -130,8 +130,8 @@ importers: packages/contentstack-asset-management: dependencies: '@contentstack/cli-utilities': - specifier: ~2.0.0-beta.10 - version: 2.0.0-beta.10(@types/node@20.19.43) + specifier: ~2.0.0-beta.11 + version: 2.0.0-beta.11(@types/node@20.19.43) lodash: specifier: 4.18.1 version: 4.18.1 @@ -159,7 +159,7 @@ importers: version: 10.7.0 eslint-config-oclif: specifier: ^6.0.68 - version: 6.0.176(eslint@10.7.0)(typescript@5.9.3) + version: 6.0.177(eslint@10.7.0)(typescript@5.9.3) mocha: specifier: ^10.8.2 version: 10.8.2 @@ -185,11 +185,11 @@ importers: packages/contentstack-audit: dependencies: '@contentstack/cli-command': - specifier: ~2.0.0-beta.9 - version: 2.0.0-beta.9(@types/node@20.19.43) - '@contentstack/cli-utilities': specifier: ~2.0.0-beta.10 version: 2.0.0-beta.10(@types/node@20.19.43) + '@contentstack/cli-utilities': + specifier: ~2.0.0-beta.11 + version: 2.0.0-beta.11(@types/node@20.19.43) '@oclif/core': specifier: ^4.11.4 version: 4.11.14 @@ -232,7 +232,7 @@ importers: version: 10.7.0 eslint-config-oclif: specifier: ^6.0.62 - version: 6.0.176(eslint@10.7.0)(typescript@5.9.3) + version: 6.0.177(eslint@10.7.0)(typescript@5.9.3) eslint-config-oclif-typescript: specifier: ^3.1.14 version: 3.1.14(eslint@10.7.0)(typescript@5.9.3) @@ -261,17 +261,17 @@ importers: packages/contentstack-bootstrap: dependencies: '@contentstack/cli-cm-seed': - specifier: ~2.0.0-beta.23 + specifier: ~2.0.0-beta.24 version: link:../contentstack-seed '@contentstack/cli-command': - specifier: ~2.0.0-beta.9 - version: 2.0.0-beta.9(@types/node@18.19.130) - '@contentstack/cli-config': - specifier: ~2.0.0-beta.12 - version: 2.0.0-beta.13(@types/node@18.19.130) - '@contentstack/cli-utilities': specifier: ~2.0.0-beta.10 version: 2.0.0-beta.10(@types/node@18.19.130) + '@contentstack/cli-config': + specifier: ~2.0.0-beta.14 + version: 2.0.0-beta.14(@types/node@18.19.130) + '@contentstack/cli-utilities': + specifier: ~2.0.0-beta.11 + version: 2.0.0-beta.11(@types/node@18.19.130) '@oclif/core': specifier: ^4.11.4 version: 4.11.14 @@ -328,11 +328,11 @@ importers: packages/contentstack-branches: dependencies: '@contentstack/cli-command': - specifier: ~2.0.0-beta.9 - version: 2.0.0-beta.9(@types/node@22.20.1) - '@contentstack/cli-utilities': specifier: ~2.0.0-beta.10 version: 2.0.0-beta.10(@types/node@22.20.1) + '@contentstack/cli-utilities': + specifier: ~2.0.0-beta.11 + version: 2.0.0-beta.11(@types/node@22.20.1) '@oclif/core': specifier: ^4.11.4 version: 4.11.14 @@ -360,7 +360,7 @@ importers: version: 10.7.0 eslint-config-oclif: specifier: ^6.0.62 - version: 6.0.176(eslint@10.7.0)(typescript@4.9.5) + version: 6.0.177(eslint@10.7.0)(typescript@4.9.5) mocha: specifier: 10.8.2 version: 10.8.2 @@ -383,17 +383,17 @@ importers: packages/contentstack-bulk-operations: dependencies: '@contentstack/cli-asset-management': - specifier: 1.0.0-beta.6 + specifier: 1.0.0-beta.7 version: link:../contentstack-asset-management '@contentstack/cli-command': - specifier: ~2.0.0-beta.9 - version: 2.0.0-beta.9(@types/node@20.19.43) - '@contentstack/cli-utilities': specifier: ~2.0.0-beta.10 version: 2.0.0-beta.10(@types/node@20.19.43) + '@contentstack/cli-utilities': + specifier: ~2.0.0-beta.11 + version: 2.0.0-beta.11(@types/node@20.19.43) '@contentstack/delivery-sdk': specifier: ^5.2.0 - version: 5.3.0 + version: 5.4.0 '@contentstack/management': specifier: ^1.30.2 version: 1.30.4(debug@4.4.3) @@ -442,7 +442,7 @@ importers: version: 10.7.0 eslint-config-oclif: specifier: ^6.0.162 - version: 6.0.176(eslint@10.7.0)(typescript@6.0.3) + version: 6.0.177(eslint@10.7.0)(typescript@6.0.3) eslint-config-oclif-typescript: specifier: ^3.1.14 version: 3.1.14(eslint@10.7.0)(typescript@6.0.3) @@ -457,7 +457,7 @@ importers: version: 9.1.7 lint-staged: specifier: ^17.0.2 - version: 17.0.8 + version: 17.1.0 mocha: specifier: ^11.7.5 version: 11.7.6 @@ -489,11 +489,11 @@ importers: packages/contentstack-cli-cm-regex-validate: dependencies: '@contentstack/cli-command': - specifier: ~2.0.0-beta.9 - version: 2.0.0-beta.9(@types/node@18.19.130) - '@contentstack/cli-utilities': specifier: ~2.0.0-beta.10 version: 2.0.0-beta.10(@types/node@18.19.130) + '@contentstack/cli-utilities': + specifier: ~2.0.0-beta.11 + version: 2.0.0-beta.11(@types/node@18.19.130) '@contentstack/management': specifier: ^1.30.2 version: 1.30.4(debug@4.4.3) @@ -548,7 +548,7 @@ importers: version: 10.7.0 eslint-config-oclif: specifier: ^6.0.62 - version: 6.0.176(eslint@10.7.0)(typescript@5.9.3) + version: 6.0.177(eslint@10.7.0)(typescript@5.9.3) eslint-config-oclif-typescript: specifier: ^3.1.14 version: 3.1.14(eslint@10.7.0)(typescript@5.9.3) @@ -580,11 +580,11 @@ importers: packages/contentstack-cli-tsgen: dependencies: '@contentstack/cli-command': - specifier: ~2.0.0-beta.9 - version: 2.0.0-beta.9(@types/node@22.20.1) - '@contentstack/cli-utilities': specifier: ~2.0.0-beta.10 version: 2.0.0-beta.10(@types/node@22.20.1) + '@contentstack/cli-utilities': + specifier: ~2.0.0-beta.11 + version: 2.0.0-beta.11(@types/node@22.20.1) '@contentstack/types-generator': specifier: ^3.10.2 version: 3.10.2(graphql@16.14.2) @@ -615,7 +615,7 @@ importers: version: 10.7.0 eslint-config-oclif: specifier: ^6.0.165 - version: 6.0.176(eslint@10.7.0)(typescript@5.9.3) + version: 6.0.177(eslint@10.7.0)(typescript@5.9.3) eslint-config-oclif-typescript: specifier: ^3.1.14 version: 3.1.14(eslint@10.7.0)(typescript@5.9.3) @@ -638,17 +638,17 @@ importers: specifier: ^1.6.0 version: 1.6.0 '@contentstack/cli-cm-export': - specifier: ~2.0.0-beta.23 + specifier: ~2.0.0-beta.24 version: link:../contentstack-export '@contentstack/cli-cm-import': - specifier: ~2.0.0-beta.23 + specifier: ~2.0.0-beta.24 version: link:../contentstack-import '@contentstack/cli-command': - specifier: ~2.0.0-beta.9 - version: 2.0.0-beta.9(@types/node@18.19.130) - '@contentstack/cli-utilities': specifier: ~2.0.0-beta.10 version: 2.0.0-beta.10(@types/node@18.19.130) + '@contentstack/cli-utilities': + specifier: ~2.0.0-beta.11 + version: 2.0.0-beta.11(@types/node@18.19.130) '@oclif/core': specifier: ^4.11.4 version: 4.11.14 @@ -700,7 +700,7 @@ importers: version: 10.7.0 eslint-config-oclif: specifier: ^6.0.62 - version: 6.0.176(eslint@10.7.0)(typescript@5.9.3) + version: 6.0.177(eslint@10.7.0)(typescript@5.9.3) mocha: specifier: ^10.8.2 version: 10.8.2 @@ -723,11 +723,11 @@ importers: packages/contentstack-content-type: dependencies: '@contentstack/cli-command': - specifier: ~2.0.0-beta.9 - version: 2.0.0-beta.9(@types/node@22.20.1) - '@contentstack/cli-utilities': specifier: ~2.0.0-beta.10 version: 2.0.0-beta.10(@types/node@22.20.1) + '@contentstack/cli-utilities': + specifier: ~2.0.0-beta.11 + version: 2.0.0-beta.11(@types/node@22.20.1) '@types/diff2html': specifier: ^3.0.3 version: 3.0.3 @@ -788,7 +788,7 @@ importers: version: 10.7.0 eslint-config-oclif: specifier: ^6.0.162 - version: 6.0.176(eslint@10.7.0)(typescript@5.9.3) + version: 6.0.177(eslint@10.7.0)(typescript@5.9.3) eslint-config-oclif-typescript: specifier: ^3.1.14 version: 3.1.14(eslint@10.7.0)(typescript@5.9.3) @@ -811,16 +811,16 @@ importers: packages/contentstack-export: dependencies: '@contentstack/cli-asset-management': - specifier: ~1.0.0-beta.6 + specifier: ~1.0.0-beta.7 version: link:../contentstack-asset-management '@contentstack/cli-command': - specifier: ~2.0.0-beta.9 - version: 2.0.0-beta.9(@types/node@22.20.1) - '@contentstack/cli-utilities': specifier: ~2.0.0-beta.10 version: 2.0.0-beta.10(@types/node@22.20.1) + '@contentstack/cli-utilities': + specifier: ~2.0.0-beta.11 + version: 2.0.0-beta.11(@types/node@22.20.1) '@contentstack/cli-variants': - specifier: ~2.0.0-beta.18 + specifier: ~2.0.0-beta.19 version: link:../contentstack-variants '@oclif/core': specifier: ^4.11.4 @@ -857,11 +857,11 @@ importers: version: 3.19.0 devDependencies: '@contentstack/cli-auth': - specifier: ~2.0.0-beta.14 - version: 2.0.0-beta.15(@types/node@22.20.1) + specifier: ~2.0.0-beta.16 + version: 2.0.0-beta.16(@types/node@22.20.1) '@contentstack/cli-config': - specifier: ~2.0.0-beta.12 - version: 2.0.0-beta.13(@types/node@22.20.1) + specifier: ~2.0.0-beta.14 + version: 2.0.0-beta.14(@types/node@22.20.1) '@contentstack/cli-dev-dependencies': specifier: ~2.0.0-beta.0 version: 2.0.0-beta.0 @@ -926,11 +926,11 @@ importers: packages/contentstack-export-to-csv: dependencies: '@contentstack/cli-command': - specifier: ~2.0.0-beta.9 - version: 2.0.0-beta.9(@types/node@20.19.43) - '@contentstack/cli-utilities': specifier: ~2.0.0-beta.10 version: 2.0.0-beta.10(@types/node@20.19.43) + '@contentstack/cli-utilities': + specifier: ~2.0.0-beta.11 + version: 2.0.0-beta.11(@types/node@20.19.43) '@inquirer/prompts': specifier: ^7.0.0 version: 7.10.1(@types/node@20.19.43) @@ -964,7 +964,7 @@ importers: version: 10.7.0 eslint-config-oclif: specifier: ^6.0.62 - version: 6.0.176(eslint@10.7.0)(typescript@5.9.3) + version: 6.0.177(eslint@10.7.0)(typescript@5.9.3) eslint-config-oclif-typescript: specifier: ^3.1.14 version: 3.1.14(eslint@10.7.0)(typescript@5.9.3) @@ -990,11 +990,11 @@ importers: packages/contentstack-external-migrate: dependencies: '@contentstack/cli-command': - specifier: ~2.0.0-beta.9 - version: 2.0.0-beta.9(@types/node@20.19.43) - '@contentstack/cli-utilities': specifier: ~2.0.0-beta.10 version: 2.0.0-beta.10(@types/node@20.19.43) + '@contentstack/cli-utilities': + specifier: ~2.0.0-beta.11 + version: 2.0.0-beta.11(@types/node@20.19.43) '@contentstack/json-rte-serializer': specifier: ~2.1.0 version: 2.1.0 @@ -1061,24 +1061,24 @@ importers: version: 5.9.3 vitest: specifier: ^4.1.9 - version: 4.1.10(@types/node@20.19.43)(jsdom@23.2.0)(vite@8.1.4(@types/node@20.19.43)(yaml@2.9.0)) + version: 4.1.10(@types/node@20.19.43)(jsdom@23.2.0)(vite@8.1.5(@types/node@20.19.43)(yaml@2.9.0)) packages/contentstack-import: dependencies: '@contentstack/cli-asset-management': - specifier: ~1.0.0-beta.6 + specifier: ~1.0.0-beta.7 version: link:../contentstack-asset-management '@contentstack/cli-audit': - specifier: ~2.0.0-beta.14 + specifier: ~2.0.0-beta.15 version: link:../contentstack-audit '@contentstack/cli-command': - specifier: ~2.0.0-beta.9 - version: 2.0.0-beta.9(@types/node@14.18.63)(debug@4.4.3) - '@contentstack/cli-utilities': specifier: ~2.0.0-beta.10 version: 2.0.0-beta.10(@types/node@14.18.63)(debug@4.4.3) + '@contentstack/cli-utilities': + specifier: ~2.0.0-beta.11 + version: 2.0.0-beta.11(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-variants': - specifier: ~2.0.0-beta.18 + specifier: ~2.0.0-beta.19 version: link:../contentstack-variants '@oclif/core': specifier: ^4.11.4 @@ -1146,7 +1146,7 @@ importers: version: 10.7.0 eslint-config-oclif: specifier: ^6.0.89 - version: 6.0.176(eslint@10.7.0)(typescript@4.9.5) + version: 6.0.177(eslint@10.7.0)(typescript@4.9.5) mocha: specifier: ^10.8.2 version: 10.8.2 @@ -1166,14 +1166,14 @@ importers: packages/contentstack-import-setup: dependencies: '@contentstack/cli-asset-management': - specifier: ~1.0.0-beta.6 + specifier: ~1.0.0-beta.7 version: link:../contentstack-asset-management '@contentstack/cli-command': - specifier: ~2.0.0-beta.9 - version: 2.0.0-beta.9(@types/node@14.18.63) - '@contentstack/cli-utilities': specifier: ~2.0.0-beta.10 - version: 2.0.0-beta.10(@types/node@14.18.63)(debug@4.4.3) + version: 2.0.0-beta.10(@types/node@14.18.63) + '@contentstack/cli-utilities': + specifier: ~2.0.0-beta.11 + version: 2.0.0-beta.11(@types/node@14.18.63)(debug@4.4.3) '@oclif/core': specifier: ^4.11.4 version: 4.11.14 @@ -1263,11 +1263,11 @@ importers: packages/contentstack-migrate-rte: dependencies: '@contentstack/cli-command': - specifier: ~2.0.0-beta.9 - version: 2.0.0-beta.9(@types/node@22.20.1) - '@contentstack/cli-utilities': specifier: ~2.0.0-beta.10 version: 2.0.0-beta.10(@types/node@22.20.1) + '@contentstack/cli-utilities': + specifier: ~2.0.0-beta.11 + version: 2.0.0-beta.11(@types/node@22.20.1) '@contentstack/json-rte-serializer': specifier: ~2.1.0 version: 2.1.0 @@ -1307,7 +1307,7 @@ importers: version: 10.7.0 eslint-config-oclif: specifier: ^6.0.164 - version: 6.0.176(eslint@10.7.0)(typescript@6.0.3) + version: 6.0.177(eslint@10.7.0)(typescript@6.0.3) husky: specifier: ^9.1.7 version: 9.1.7 @@ -1333,11 +1333,11 @@ importers: packages/contentstack-migration: dependencies: '@contentstack/cli-command': - specifier: ~2.0.0-beta.9 - version: 2.0.0-beta.9(@types/node@14.18.63) - '@contentstack/cli-utilities': specifier: ~2.0.0-beta.10 - version: 2.0.0-beta.10(@types/node@14.18.63)(debug@4.4.3) + version: 2.0.0-beta.10(@types/node@14.18.63) + '@contentstack/cli-utilities': + specifier: ~2.0.0-beta.11 + version: 2.0.0-beta.11(@types/node@14.18.63)(debug@4.4.3) '@oclif/core': specifier: ^4.11.4 version: 4.11.14 @@ -1383,7 +1383,7 @@ importers: version: 10.7.0 eslint-config-oclif: specifier: ^6.0.62 - version: 6.0.176(eslint@10.7.0)(typescript@4.9.5) + version: 6.0.177(eslint@10.7.0)(typescript@4.9.5) jsdoc-to-markdown: specifier: ^8.0.3 version: 8.0.3 @@ -1415,17 +1415,17 @@ importers: packages/contentstack-query-export: dependencies: '@contentstack/cli-asset-management': - specifier: ~1.0.0-beta.6 + specifier: ~1.0.0-beta.7 version: link:../contentstack-asset-management '@contentstack/cli-cm-export': - specifier: ~2.0.0-beta.23 + specifier: ~2.0.0-beta.24 version: link:../contentstack-export '@contentstack/cli-command': - specifier: ~2.0.0-beta.9 - version: 2.0.0-beta.9(@types/node@20.19.43) - '@contentstack/cli-utilities': specifier: ~2.0.0-beta.10 version: 2.0.0-beta.10(@types/node@20.19.43) + '@contentstack/cli-utilities': + specifier: ~2.0.0-beta.11 + version: 2.0.0-beta.11(@types/node@20.19.43) '@oclif/core': specifier: ^4.11.4 version: 4.11.14 @@ -1504,7 +1504,7 @@ importers: version: 10.7.0 eslint-config-oclif: specifier: ^6.0.157 - version: 6.0.176(eslint@10.7.0)(typescript@4.9.5) + version: 6.0.177(eslint@10.7.0)(typescript@4.9.5) husky: specifier: ^9.1.7 version: 9.1.7 @@ -1530,14 +1530,14 @@ importers: packages/contentstack-seed: dependencies: '@contentstack/cli-cm-import': - specifier: ~2.0.0-beta.23 + specifier: ~2.0.0-beta.24 version: link:../contentstack-import '@contentstack/cli-command': - specifier: ~2.0.0-beta.9 - version: 2.0.0-beta.9(@types/node@18.19.130) - '@contentstack/cli-utilities': specifier: ~2.0.0-beta.10 version: 2.0.0-beta.10(@types/node@18.19.130) + '@contentstack/cli-utilities': + specifier: ~2.0.0-beta.11 + version: 2.0.0-beta.11(@types/node@18.19.130) inquirer: specifier: 12.11.1 version: 12.11.1(@types/node@18.19.130) @@ -1577,7 +1577,7 @@ importers: version: 10.7.0 eslint-config-oclif: specifier: ^6.0.137 - version: 6.0.176(eslint@10.7.0)(typescript@5.9.3) + version: 6.0.177(eslint@10.7.0)(typescript@5.9.3) eslint-config-oclif-typescript: specifier: ^3.1.14 version: 3.1.14(eslint@10.7.0)(typescript@5.9.3) @@ -1600,8 +1600,8 @@ importers: packages/contentstack-variants: dependencies: '@contentstack/cli-utilities': - specifier: ~2.0.0-beta.10 - version: 2.0.0-beta.10(@types/node@20.19.43) + specifier: ~2.0.0-beta.11 + version: 2.0.0-beta.11(@types/node@20.19.43) '@oclif/core': specifier: ^4.11.4 version: 4.11.14 @@ -1667,12 +1667,12 @@ packages: resolution: {integrity: sha512-IImkbEyXdV6/uaF5r6Wkk+8718mQw1ll83j0a4a30R3JM/rHVFdWAiT4jtJpFjJiIwM/oJ6SxIxr0z2TaQUGqw==} engines: {node: '>=20.0.0'} - '@aws-sdk/client-cloudfront@3.1088.0': - resolution: {integrity: sha512-ljqqpLZZrkeWR5U4A42YstyQyRhbcZHfGnh28ovDALlZ24rq+yP2o+nV84OlObjxRoRYYSZUxNga0Qi8aXNJtg==} + '@aws-sdk/client-cloudfront@3.1090.0': + resolution: {integrity: sha512-dNo7RTDHKKKRT/d9O7jUtZR0d6Dz9LlMOu27eJ/B8ADZMDxDx3UbrihqI2y97CaqGhj6foIFfi4n7yu+hiOHrA==} engines: {node: '>=20.0.0'} - '@aws-sdk/client-s3@3.1088.0': - resolution: {integrity: sha512-9ryKKxnjtJRKLDI24P+2gQZki7k28BeV6gz1AySvFDWayhjAZuh4QZjCyx55tqR8Oz0IJxWutgJRO43dDOcXoQ==} + '@aws-sdk/client-s3@3.1090.0': + resolution: {integrity: sha512-R6GX9cd1jljwzZ8xFmgAI/hHCuX1MobIKBdsymv7WL9SENvO9Vgz9KOR6avTnu0Ao+w1LmxnTe+jqmZXEn7Q/Q==} engines: {node: '>=20.0.0'} '@aws-sdk/core@3.975.3': @@ -1687,16 +1687,16 @@ packages: resolution: {integrity: sha512-8jAjgStl5Ytq4+HF3X/9f+EmRinaRbGRRtQGktlPfBRVx73H+R1y48vIeXerQtYGFaUqkEp3fT6jP854rVO2yQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-ini@3.973.3': - resolution: {integrity: sha512-WpuqYX4gGkx++fCTSWE8+41JzkZVcrI50SH48Ml4CsG1pyuHKyMmpw/FixBHDrmjoQ553PmeCLa/fZIcst+WyA==} + '@aws-sdk/credential-provider-ini@3.973.4': + resolution: {integrity: sha512-e6ZvVsj90aRALf1kHP+J4iqC1496ZpVgqI/+u0LJ5HL7q7ATauGy4gdDvRCP13L1pN/fMiZLah162PGIYkbUVQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-login@3.972.65': - resolution: {integrity: sha512-xr9rgjYEdmC2Tpg2lwt9o+nOEaK9Qpd+dBjzrVCuWWyQfvhO91Ezu0Hh9ts2VUxOZxmS/k5T9msa34e4R1bnrQ==} + '@aws-sdk/credential-provider-login@3.972.66': + resolution: {integrity: sha512-g2fsqm87r/nKthLZ0VkkDBElkGg0PvSa8d97HQ6EilMbJTZ6hxa8FxkSZyJfgPfFdZn0TTmkOffQmTSUcAHIng==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-node@3.972.69': - resolution: {integrity: sha512-wbJGGesd0Tl18bmUcbj1xJ+e7CpuRJ6PIpMywLFuUttGy615lua87cJ0EA8pFpY/QgPuUXbnupWBtSPJ9tyZhg==} + '@aws-sdk/credential-provider-node@3.972.70': + resolution: {integrity: sha512-3xzvkGdykBunxqh8WudmUpSyLWvIhfI6aBQo1b5rb3mDO5mNLadK+0hiI0qBQBMVynJbfLO+Ajy9dztMwy9O8w==} engines: {node: '>=20.0.0'} '@aws-sdk/credential-provider-process@3.972.59': @@ -2332,20 +2332,20 @@ packages: resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} engines: {node: '>=0.1.90'} - '@contentstack/cli-auth@2.0.0-beta.15': - resolution: {integrity: sha512-rbfaUlpb8MABVuaPyK7MMNxNAx9ZRCJHYYydGJRo+i6352GOTympIexViy9VOMcsy1GTAv0QKfmBdnbIDTZjuA==} + '@contentstack/cli-auth@2.0.0-beta.16': + resolution: {integrity: sha512-N5Hk1fTQmxXnGIYJdKLXzi/0HPrKvvySrzNQM60bIoo40F8Tp6InRW9m33jcC30+J7jpDKcWw+calQbdYV48Pg==} engines: {node: '>=22.0.0'} '@contentstack/cli-command@1.8.4': resolution: {integrity: sha512-xo6d+KrwqGZakUKz6Uw9I3CsW6HC+NqwsMd5kc9IN5j/UhzLZujLAj6fotQY+cyJYG/Dz9D+tSIaL8ZAMRTkLg==} engines: {node: '>=22.0.0'} - '@contentstack/cli-command@2.0.0-beta.9': - resolution: {integrity: sha512-7hcHEpj6NL9KS5fuhWqC0U3vMHXOeTVJoZiIatJwpqY29Ov4SP620Pe5dcXZKBjuETiPNusBv2L9sVQ4UrLxoQ==} + '@contentstack/cli-command@2.0.0-beta.10': + resolution: {integrity: sha512-r5MMHBkOOtr3VGqHZX3+MF7a0fgwIJ1NgWX73C3tTm2YbFiN19/i1Uq3GSKsKLe7GkrNHnsXpWZxaZ19prgOkg==} engines: {node: '>=22.0.0'} - '@contentstack/cli-config@2.0.0-beta.13': - resolution: {integrity: sha512-/l7iCbUJnpAaof/7tPgHweqv7p/3uCw7AsaPqvS7StbiwEy2Q0RmH0Rw7bhDxcFv+5RjZtMIpPC2UOSrfViUKQ==} + '@contentstack/cli-config@2.0.0-beta.14': + resolution: {integrity: sha512-eQ0bQSwEV3wBzoes/03GMXHUdUhREoipQGoaHpzG64Xd/mCLVmkr1Ba6ph3y0/bsdz8QBE+wSZrjLK8CuW3VwA==} engines: {node: '>=22.0.0'} '@contentstack/cli-dev-dependencies@1.3.1': @@ -2362,14 +2362,14 @@ packages: '@contentstack/cli-utilities@1.18.5': resolution: {integrity: sha512-0qRZznIiU8jqYl7BTs84w9Ke2fVGRDCY22PSUg0DABR1nzrnTVwTTne/gjhuQUoQjMU7GG4rvAScY0SU/0mHAg==} - '@contentstack/cli-utilities@2.0.0-beta.10': - resolution: {integrity: sha512-u2fhvYR+P5AateT4+AaUHsdEDxeP/eJZUQvfA0xHZhrwOqN/WVkkXDu96j/g7U0hqdMKRHtXzrYpmdfjEeMtMA==} + '@contentstack/cli-utilities@2.0.0-beta.11': + resolution: {integrity: sha512-ZR8M47zFESQdi4uToHvgCJw8+I1MkLBC7TuEfrUqWA/vglr/RnGRoVg8pSJNfwYQKcRvLk3cZ6Z/h44QLhDelA==} '@contentstack/core@1.4.1': resolution: {integrity: sha512-QfLa8WUwquWSwvF8EltLyzQTkeNE2I9b9PBkPe21w0d5PnHOagxFzDNCYN4VO/zuJ52sNtKLFIFUcvLsOPk9ww==} - '@contentstack/delivery-sdk@5.3.0': - resolution: {integrity: sha512-jtEV/SOX4iqzQYM4zaWtGhttyl7sio09XMf28FiiJ/TkaneRQNBWK5u2B0CWKHxtxp/nEWYhH2sgUB/HdR56tw==} + '@contentstack/delivery-sdk@5.4.0': + resolution: {integrity: sha512-TqU2TMBGcpmxry/w00m1uL7gYENCxZHIR8GD0hwfl+d+bZbCrI9/AIz+verdjf4piJ9xGexN0N7ZHSOaTHq5Qg==} engines: {node: '>=18'} '@contentstack/json-rte-serializer@2.1.0': @@ -3339,8 +3339,8 @@ packages: resolution: {integrity: sha512-KxXvfapcixpz6rVEB6HPjOUZT22yN6v0vI0urQSk1L8MlEWPDFCZkhw2xmkyoTGYeFw7tWTZd7e3lVzRZRN/EA==} engines: {node: '>=18'} - '@sinclair/typebox@0.27.10': - resolution: {integrity: sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==} + '@sinclair/typebox@0.27.12': + resolution: {integrity: sha512-hhyNJ+nbR6ZR7pToHvllEFun9TL0sbL+tk/ON75lo+Xas054uez98qRbsuNt7MBCyZKK4+8Yli/OAGZhmfBZ/g==} '@sinclair/typebox@0.34.52': resolution: {integrity: sha512-XiMQh7qqVlxZzcVD+kkGMNGMzcTrDMLWI7S4x7z1MkCkbDPrekpZXEUK0eZqZFMuHQg2a2DZOcDIh9o5v3Gonw==} @@ -3373,24 +3373,24 @@ packages: Deprecated: no longer maintained and no longer used by Sinon packages. See https://github.com/sinonjs/nise/issues/243 for replacement details. - '@smithy/core@3.29.4': - resolution: {integrity: sha512-G1GRglAabzEhqghJMBAd54FkRS7SAFGHEwbhcI9r+O+LIMuFsLyXkLZkCoFSgAglRu8s/URVXJB0hglq3ZipIg==} + '@smithy/core@3.29.5': + resolution: {integrity: sha512-i0dk2t5B+CwV/dcJdUHILYkOQF5lof8f44dFCfDWToGCxjT9YQ+CgHqTAvJxzc3+zqQwm2QtVoJ5IqiNar/CnQ==} engines: {node: '>=18.0.0'} - '@smithy/credential-provider-imds@4.4.9': - resolution: {integrity: sha512-2nfV4qRKiYeXU4zD2vvSCfg5dfp/BuhrM73vt7q9gzBhxs4rbPxXY21wo+kyI3bRmXcEGRnCLTaW8O437jzHIg==} + '@smithy/credential-provider-imds@4.4.10': + resolution: {integrity: sha512-MJenAe4OKRZUo1LdYYFDCsSHxaHvInIU/z52GsheO9vl1/VSySVCr0zkyKD6TFiGkSUaWGxvKZ/70OvgUZR5HQ==} engines: {node: '>=18.0.0'} - '@smithy/fetch-http-handler@5.6.6': - resolution: {integrity: sha512-NHLgAlORUFZjn5ZfhYuyyKMlXA1WLYOdGxEhyNxrPpbJzoacGbl0chn1lN2KiZ8mpNVk0tV5607CSYlYs/OFgw==} + '@smithy/fetch-http-handler@5.6.7': + resolution: {integrity: sha512-3zpg8yqqyXzoK2TsRDdkqVOj2RDBFfLXwCczOZ5c7TWB4eiaebfSCsbMjDPYB3PJ9ihV62QaeadZ+wLadZtNGA==} engines: {node: '>=18.0.0'} - '@smithy/node-http-handler@4.9.6': - resolution: {integrity: sha512-odd+HYx3OLcXRSEz0ZeF3JQdSYdK8QnRgA2N87cPW7coWIbKfRk7a9VQjfeWQLqnzrDLk23KMEn46p8N7M/JFg==} + '@smithy/node-http-handler@4.9.7': + resolution: {integrity: sha512-wCU8HCLjAtAVqxxe0j2xff9LcEPw3yjBbg5IdQDIYFnxnPxbxcSLc7rgex7kqm9L/WYOnJEgaWQlfDkZleozMA==} engines: {node: '>=18.0.0'} - '@smithy/signature-v4@5.6.5': - resolution: {integrity: sha512-MO5VEhwVl0BN7xVoVeNrZfiUFoQtqxUbgl6/RwOTlMMxCSjblG8twSrVTwz3J4w9WZxd2rBfBAUXjH77agspBg==} + '@smithy/signature-v4@5.6.6': + resolution: {integrity: sha512-efP6DN3UTFrzIsGO42/xcabv8jU7+9nwEdphFUH7yL0k010ERyAWaO41KFQIDLcFZLZ8xzIQr4wplFxNzslSGQ==} engines: {node: '>=18.0.0'} '@smithy/types@4.16.1': @@ -4095,10 +4095,6 @@ packages: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} - ansi-escapes@7.3.0: - resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==} - engines: {node: '>=18'} - ansi-regex@2.1.1: resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} engines: {node: '>=0.10.0'} @@ -4583,10 +4579,6 @@ packages: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} - cli-cursor@5.0.0: - resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} - engines: {node: '>=18'} - cli-progress@3.12.0: resolution: {integrity: sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==} engines: {node: '>=4'} @@ -4607,10 +4599,6 @@ packages: resolution: {integrity: sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==} engines: {node: '>=0.10.0'} - cli-truncate@5.2.0: - resolution: {integrity: sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==} - engines: {node: '>=20'} - cli-width@2.2.1: resolution: {integrity: sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==} @@ -5117,8 +5105,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.392: - resolution: {integrity: sha512-1yQq3VQCZRwsnYc67Oc+1fge6Lwtn0hzi6zmEVkB61Zx21kTbwJAW4dFLadl5Rc1tKhG/kSpYXnfiAhu0f0a1g==} + electron-to-chromium@1.5.393: + resolution: {integrity: sha512-kiDJdIUawuEIcp9XoICKp1iTYDEbgguIPq526N1Q7jIQDeQ3CqoMx71025PI/7E48Ddtw2HuWsVjY7afEgNxmg==} elegant-spinner@1.0.1: resolution: {integrity: sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==} @@ -5128,9 +5116,6 @@ packages: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} - emoji-regex@10.6.0: - resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} - emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -5147,8 +5132,8 @@ packages: end-of-stream@1.4.5: resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} - enhanced-resolve@5.24.2: - resolution: {integrity: sha512-rpsZEGT1jFuve6QlpyRp9ckQ+kN61hvF9BzCPyMdaKTm8UJce96KBn3sorXOFXlzjPrs3Vc4T1NsSroZ3PxlFw==} + enhanced-resolve@5.24.3: + resolution: {integrity: sha512-PwKooW9JUzh5chmYfHM3IQl5OkK2u2Nm011MgeZrss3JmFraUx/fqrf78kk8GUMYoibx/14MdwTl/1WKkG7TpQ==} engines: {node: '>=10.13.0'} entities@4.5.0: @@ -5163,10 +5148,6 @@ packages: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} - environment@1.1.0: - resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} - engines: {node: '>=18'} - error-ex@1.3.4: resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} @@ -5241,8 +5222,8 @@ packages: engines: {node: '>=18.0.0'} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - eslint-config-oclif@6.0.176: - resolution: {integrity: sha512-lAwpOj/Y58WEGXC6wmIyRmT39rrSFQk/rHOlQOjnIeXWgI5Mx250n4MbLO8Ygc82ViXjgjvkaVVf76xH+W0cGw==} + eslint-config-oclif@6.0.177: + resolution: {integrity: sha512-DjeVJCF7Z/aiEwGUyqCaO0DZp9HrZJPdDts2KW2kELPsHihBpVMRgzl7rVj8ao0S4if9qpLoIZ5g18wUNNIjAg==} engines: {node: '>=18.18.0'} eslint-config-prettier@10.1.8: @@ -5501,9 +5482,6 @@ packages: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} - eventemitter3@5.0.4: - resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} - execa@1.0.0: resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} engines: {node: '>=6'} @@ -5773,10 +5751,6 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-east-asian-width@1.6.0: - resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} - engines: {node: '>=18'} - get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} @@ -6213,10 +6187,6 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-fullwidth-code-point@5.1.0: - resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} - engines: {node: '>=18'} - is-generator-fn@2.1.0: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} engines: {node: '>=6'} @@ -6806,74 +6776,74 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - lightningcss-android-arm64@1.32.0: - resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + lightningcss-android-arm64@1.33.0: + resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [android] - lightningcss-darwin-arm64@1.32.0: - resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + lightningcss-darwin-arm64@1.33.0: + resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - lightningcss-darwin-x64@1.32.0: - resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + lightningcss-darwin-x64@1.33.0: + resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] - lightningcss-freebsd-x64@1.32.0: - resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + lightningcss-freebsd-x64@1.33.0: + resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] - lightningcss-linux-arm-gnueabihf@1.32.0: - resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + lightningcss-linux-arm-gnueabihf@1.33.0: + resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] - lightningcss-linux-arm64-gnu@1.32.0: - resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + lightningcss-linux-arm64-gnu@1.33.0: + resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - lightningcss-linux-arm64-musl@1.32.0: - resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + lightningcss-linux-arm64-musl@1.33.0: + resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - lightningcss-linux-x64-gnu@1.32.0: - resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + lightningcss-linux-x64-gnu@1.33.0: + resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-linux-x64-musl@1.32.0: - resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + lightningcss-linux-x64-musl@1.33.0: + resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-win32-arm64-msvc@1.32.0: - resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + lightningcss-win32-arm64-msvc@1.33.0: + resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] - lightningcss-win32-x64-msvc@1.32.0: - resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + lightningcss-win32-x64-msvc@1.33.0: + resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] - lightningcss@1.32.0: - resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + lightningcss@1.33.0: + resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} engines: {node: '>= 12.0.0'} lilconfig@3.1.3: @@ -6886,8 +6856,8 @@ packages: linkify-it@5.0.2: resolution: {integrity: sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==} - lint-staged@17.0.8: - resolution: {integrity: sha512-B2P/d+jVW0UXOQ0MVMLrB/9ydA1P+zz6jYfdrbbEd9ur3S2rcbduFWKiUCC02Sm5hbC8nrm7y24WuYMG54HfxA==} + lint-staged@17.1.0: + resolution: {integrity: sha512-d7UQRu/9ZPgfu4+hu/k0wny5GEaIxo+2jb2LJqQDkE7cHRTm1HGqNUDq5UOwsGPpjpaNAFmgAsYo3TR+i9cSJw==} engines: {node: '>=22.22.1'} hasBin: true @@ -6905,10 +6875,6 @@ packages: resolution: {integrity: sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==} engines: {node: '>=4'} - listr2@10.2.2: - resolution: {integrity: sha512-JtNtbZj8q5BnDMR7trpwvwk3RIrANtIVzEUm8w7amp6xelLgyuq+4WZoTH913XaQAoH/cNdYhaNzBPA2U3xbDw==} - engines: {node: '>=22.13.0'} - listr@0.14.3: resolution: {integrity: sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==} engines: {node: '>=6'} @@ -7008,10 +6974,6 @@ packages: resolution: {integrity: sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==} engines: {node: '>=4'} - log-update@6.1.0: - resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} - engines: {node: '>=18'} - logform@2.7.0: resolution: {integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==} engines: {node: '>= 12.0.0'} @@ -7143,10 +7105,6 @@ packages: resolution: {integrity: sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==} engines: {node: '>=8'} - mimic-function@5.0.1: - resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} - engines: {node: '>=18'} - mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} @@ -7404,8 +7362,8 @@ packages: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} - obug@2.1.3: - resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==} + obug@2.1.4: + resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} engines: {node: '>=12.20.0'} oclif@4.23.27: @@ -7435,10 +7393,6 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} - onetime@7.0.0: - resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} - engines: {node: '>=18'} - open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} @@ -7639,8 +7593,8 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} - postcss@8.5.19: - resolution: {integrity: sha512-Mz8SaolMd8nB+G13WkORcxQKHZ/NE4xXevtkJHVuG+guo9/wYKlIMTKAqGdEmYOXR2ijPjTYNHssizdaVSUNdQ==} + postcss@8.5.20: + resolution: {integrity: sha512-lW616l85ucIQL+FocMmL7pQFPqBmwejrCMg+iPxyImlrANNJG9NHq/RkyCZopDhd8C3LA03PHRJDjkbGu8vvug==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -8001,10 +7955,6 @@ packages: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} - restore-cursor@5.1.0: - resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} - engines: {node: '>=18'} - retry@0.13.1: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} @@ -8020,9 +7970,6 @@ packages: rewire@9.0.1: resolution: {integrity: sha512-dnbLeTwHpXvWJjswC6CshXUUnnpE5AVhlayVRvDJhJx5ejbO4nbj1IXqN2urErgB7TpHUAMpf6iPDhQIxeSQOQ==} - rfdc@1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} deprecated: Rimraf versions prior to v4 are no longer supported @@ -8253,14 +8200,6 @@ packages: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} - slice-ansi@7.1.2: - resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} - engines: {node: '>=18'} - - slice-ansi@8.0.0: - resolution: {integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==} - engines: {node: '>=20'} - smartwrap@2.0.2: resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} engines: {node: '>=6'} @@ -8385,14 +8324,6 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} - string-width@7.2.0: - resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} - engines: {node: '>=18'} - - string-width@8.2.2: - resolution: {integrity: sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==} - engines: {node: '>=20'} - string.prototype.trim@1.2.11: resolution: {integrity: sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w==} engines: {node: '>= 0.4'} @@ -8914,8 +8845,8 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vite@8.1.4: - resolution: {integrity: sha512-bTT9PsdWO+MQMNG9ZXIP/qM9wGh37DFxTV/sPq9cFpHr3w4jkgef032PkAL9jAqhk3Nz8NQw3O8n6/xFkqO4QQ==} + vite@8.1.5: + resolution: {integrity: sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -9114,10 +9045,6 @@ packages: workerpool@9.3.4: resolution: {integrity: sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==} - wrap-ansi@10.0.0: - resolution: {integrity: sha512-SGcvg80f0wUy2/fXES19feHMz8E0JoXv2uNgHOu4Dgi2OrCy1lqwFYEJz1BLbDI0exjPMe/ZdzZ/YpGECBG/aQ==} - engines: {node: '>=20'} - wrap-ansi@3.0.1: resolution: {integrity: sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==} engines: {node: '>=4'} @@ -9134,10 +9061,6 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} - wrap-ansi@9.0.2: - resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} - engines: {node: '>=18'} - wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -9286,32 +9209,32 @@ snapshots: dependencies: '@aws-sdk/core': 3.975.3 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.4 + '@smithy/core': 3.29.5 '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/client-cloudfront@3.1088.0': + '@aws-sdk/client-cloudfront@3.1090.0': dependencies: '@aws-sdk/core': 3.975.3 - '@aws-sdk/credential-provider-node': 3.972.69 + '@aws-sdk/credential-provider-node': 3.972.70 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.4 - '@smithy/fetch-http-handler': 5.6.6 - '@smithy/node-http-handler': 4.9.6 + '@smithy/core': 3.29.5 + '@smithy/fetch-http-handler': 5.6.7 + '@smithy/node-http-handler': 4.9.7 '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/client-s3@3.1088.0': + '@aws-sdk/client-s3@3.1090.0': dependencies: '@aws-sdk/checksums': 3.1000.18 '@aws-sdk/core': 3.975.3 - '@aws-sdk/credential-provider-node': 3.972.69 + '@aws-sdk/credential-provider-node': 3.972.70 '@aws-sdk/middleware-sdk-s3': 3.972.64 '@aws-sdk/signature-v4-multi-region': 3.996.41 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.4 - '@smithy/fetch-http-handler': 5.6.6 - '@smithy/node-http-handler': 4.9.6 + '@smithy/core': 3.29.5 + '@smithy/fetch-http-handler': 5.6.7 + '@smithy/node-http-handler': 4.9.7 '@smithy/types': 4.16.1 tslib: 2.8.1 @@ -9320,8 +9243,8 @@ snapshots: '@aws-sdk/types': 3.974.2 '@aws-sdk/xml-builder': 3.972.36 '@aws/lambda-invoke-store': 0.3.0 - '@smithy/core': 3.29.4 - '@smithy/signature-v4': 5.6.5 + '@smithy/core': 3.29.5 + '@smithy/signature-v4': 5.6.6 '@smithy/types': 4.16.1 bowser: 2.14.1 tslib: 2.8.1 @@ -9330,7 +9253,7 @@ snapshots: dependencies: '@aws-sdk/core': 3.975.3 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.4 + '@smithy/core': 3.29.5 '@smithy/types': 4.16.1 tslib: 2.8.1 @@ -9338,48 +9261,48 @@ snapshots: dependencies: '@aws-sdk/core': 3.975.3 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.4 - '@smithy/fetch-http-handler': 5.6.6 - '@smithy/node-http-handler': 4.9.6 + '@smithy/core': 3.29.5 + '@smithy/fetch-http-handler': 5.6.7 + '@smithy/node-http-handler': 4.9.7 '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-ini@3.973.3': + '@aws-sdk/credential-provider-ini@3.973.4': dependencies: '@aws-sdk/core': 3.975.3 '@aws-sdk/credential-provider-env': 3.972.59 '@aws-sdk/credential-provider-http': 3.972.61 - '@aws-sdk/credential-provider-login': 3.972.65 + '@aws-sdk/credential-provider-login': 3.972.66 '@aws-sdk/credential-provider-process': 3.972.59 '@aws-sdk/credential-provider-sso': 3.973.3 '@aws-sdk/credential-provider-web-identity': 3.972.65 '@aws-sdk/nested-clients': 3.997.33 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.4 - '@smithy/credential-provider-imds': 4.4.9 + '@smithy/core': 3.29.5 + '@smithy/credential-provider-imds': 4.4.10 '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-login@3.972.65': + '@aws-sdk/credential-provider-login@3.972.66': dependencies: '@aws-sdk/core': 3.975.3 '@aws-sdk/nested-clients': 3.997.33 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.4 + '@smithy/core': 3.29.5 '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-node@3.972.69': + '@aws-sdk/credential-provider-node@3.972.70': dependencies: '@aws-sdk/credential-provider-env': 3.972.59 '@aws-sdk/credential-provider-http': 3.972.61 - '@aws-sdk/credential-provider-ini': 3.973.3 + '@aws-sdk/credential-provider-ini': 3.973.4 '@aws-sdk/credential-provider-process': 3.972.59 '@aws-sdk/credential-provider-sso': 3.973.3 '@aws-sdk/credential-provider-web-identity': 3.972.65 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.4 - '@smithy/credential-provider-imds': 4.4.9 + '@smithy/core': 3.29.5 + '@smithy/credential-provider-imds': 4.4.10 '@smithy/types': 4.16.1 tslib: 2.8.1 @@ -9387,7 +9310,7 @@ snapshots: dependencies: '@aws-sdk/core': 3.975.3 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.4 + '@smithy/core': 3.29.5 '@smithy/types': 4.16.1 tslib: 2.8.1 @@ -9397,7 +9320,7 @@ snapshots: '@aws-sdk/nested-clients': 3.997.33 '@aws-sdk/token-providers': 3.1088.0 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.4 + '@smithy/core': 3.29.5 '@smithy/types': 4.16.1 tslib: 2.8.1 @@ -9406,7 +9329,7 @@ snapshots: '@aws-sdk/core': 3.975.3 '@aws-sdk/nested-clients': 3.997.33 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.4 + '@smithy/core': 3.29.5 '@smithy/types': 4.16.1 tslib: 2.8.1 @@ -9415,7 +9338,7 @@ snapshots: '@aws-sdk/core': 3.975.3 '@aws-sdk/signature-v4-multi-region': 3.996.41 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.4 + '@smithy/core': 3.29.5 '@smithy/types': 4.16.1 tslib: 2.8.1 @@ -9424,16 +9347,16 @@ snapshots: '@aws-sdk/core': 3.975.3 '@aws-sdk/signature-v4-multi-region': 3.996.41 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.4 - '@smithy/fetch-http-handler': 5.6.6 - '@smithy/node-http-handler': 4.9.6 + '@smithy/core': 3.29.5 + '@smithy/fetch-http-handler': 5.6.7 + '@smithy/node-http-handler': 4.9.7 '@smithy/types': 4.16.1 tslib: 2.8.1 '@aws-sdk/signature-v4-multi-region@3.996.41': dependencies: '@aws-sdk/types': 3.974.2 - '@smithy/signature-v4': 5.6.5 + '@smithy/signature-v4': 5.6.6 '@smithy/types': 4.16.1 tslib: 2.8.1 @@ -9442,7 +9365,7 @@ snapshots: '@aws-sdk/core': 3.975.3 '@aws-sdk/nested-clients': 3.997.33 '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.4 + '@smithy/core': 3.29.5 '@smithy/types': 4.16.1 tslib: 2.8.1 @@ -10205,10 +10128,10 @@ snapshots: '@colors/colors@1.6.0': {} - '@contentstack/cli-auth@2.0.0-beta.15(@types/node@22.20.1)': + '@contentstack/cli-auth@2.0.0-beta.16(@types/node@22.20.1)': dependencies: - '@contentstack/cli-command': 2.0.0-beta.9(@types/node@22.20.1) - '@contentstack/cli-utilities': 2.0.0-beta.10(@types/node@22.20.1) + '@contentstack/cli-command': 2.0.0-beta.10(@types/node@22.20.1) + '@contentstack/cli-utilities': 2.0.0-beta.11(@types/node@22.20.1) '@oclif/core': 4.11.14 otplib: 12.0.1 transitivePeerDependencies: @@ -10226,9 +10149,9 @@ snapshots: - debug - supports-color - '@contentstack/cli-command@2.0.0-beta.9(@types/node@14.18.63)': + '@contentstack/cli-command@2.0.0-beta.10(@types/node@14.18.63)': dependencies: - '@contentstack/cli-utilities': 2.0.0-beta.10(@types/node@14.18.63) + '@contentstack/cli-utilities': 2.0.0-beta.11(@types/node@14.18.63) '@oclif/core': 4.11.14 contentstack: 3.27.0 transitivePeerDependencies: @@ -10236,9 +10159,9 @@ snapshots: - debug - supports-color - '@contentstack/cli-command@2.0.0-beta.9(@types/node@14.18.63)(debug@4.4.3)': + '@contentstack/cli-command@2.0.0-beta.10(@types/node@14.18.63)(debug@4.4.3)': dependencies: - '@contentstack/cli-utilities': 2.0.0-beta.10(@types/node@14.18.63)(debug@4.4.3) + '@contentstack/cli-utilities': 2.0.0-beta.11(@types/node@14.18.63)(debug@4.4.3) '@oclif/core': 4.11.14 contentstack: 3.27.0 transitivePeerDependencies: @@ -10246,9 +10169,9 @@ snapshots: - debug - supports-color - '@contentstack/cli-command@2.0.0-beta.9(@types/node@18.19.130)': + '@contentstack/cli-command@2.0.0-beta.10(@types/node@18.19.130)': dependencies: - '@contentstack/cli-utilities': 2.0.0-beta.10(@types/node@18.19.130) + '@contentstack/cli-utilities': 2.0.0-beta.11(@types/node@18.19.130) '@oclif/core': 4.11.14 contentstack: 3.27.0 transitivePeerDependencies: @@ -10256,9 +10179,9 @@ snapshots: - debug - supports-color - '@contentstack/cli-command@2.0.0-beta.9(@types/node@20.19.43)': + '@contentstack/cli-command@2.0.0-beta.10(@types/node@20.19.43)': dependencies: - '@contentstack/cli-utilities': 2.0.0-beta.10(@types/node@20.19.43) + '@contentstack/cli-utilities': 2.0.0-beta.11(@types/node@20.19.43) '@oclif/core': 4.11.14 contentstack: 3.27.0 transitivePeerDependencies: @@ -10266,9 +10189,9 @@ snapshots: - debug - supports-color - '@contentstack/cli-command@2.0.0-beta.9(@types/node@22.20.1)': + '@contentstack/cli-command@2.0.0-beta.10(@types/node@22.20.1)': dependencies: - '@contentstack/cli-utilities': 2.0.0-beta.10(@types/node@22.20.1) + '@contentstack/cli-utilities': 2.0.0-beta.11(@types/node@22.20.1) '@oclif/core': 4.11.14 contentstack: 3.27.0 transitivePeerDependencies: @@ -10276,10 +10199,10 @@ snapshots: - debug - supports-color - '@contentstack/cli-config@2.0.0-beta.13(@types/node@18.19.130)': + '@contentstack/cli-config@2.0.0-beta.14(@types/node@18.19.130)': dependencies: - '@contentstack/cli-command': 2.0.0-beta.9(@types/node@18.19.130) - '@contentstack/cli-utilities': 2.0.0-beta.10(@types/node@18.19.130) + '@contentstack/cli-command': 2.0.0-beta.10(@types/node@18.19.130) + '@contentstack/cli-utilities': 2.0.0-beta.11(@types/node@18.19.130) '@contentstack/utils': 1.9.1 '@oclif/core': 4.11.14 transitivePeerDependencies: @@ -10287,10 +10210,10 @@ snapshots: - debug - supports-color - '@contentstack/cli-config@2.0.0-beta.13(@types/node@22.20.1)': + '@contentstack/cli-config@2.0.0-beta.14(@types/node@22.20.1)': dependencies: - '@contentstack/cli-command': 2.0.0-beta.9(@types/node@22.20.1) - '@contentstack/cli-utilities': 2.0.0-beta.10(@types/node@22.20.1) + '@contentstack/cli-command': 2.0.0-beta.10(@types/node@22.20.1) + '@contentstack/cli-utilities': 2.0.0-beta.11(@types/node@22.20.1) '@contentstack/utils': 1.9.1 '@oclif/core': 4.11.14 transitivePeerDependencies: @@ -10391,7 +10314,7 @@ snapshots: - debug - supports-color - '@contentstack/cli-utilities@2.0.0-beta.10(@types/node@14.18.63)': + '@contentstack/cli-utilities@2.0.0-beta.11(@types/node@14.18.63)': dependencies: '@contentstack/management': 1.30.4(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.4(debug@4.4.3) @@ -10428,7 +10351,7 @@ snapshots: - debug - supports-color - '@contentstack/cli-utilities@2.0.0-beta.10(@types/node@14.18.63)(debug@4.4.3)': + '@contentstack/cli-utilities@2.0.0-beta.11(@types/node@14.18.63)(debug@4.4.3)': dependencies: '@contentstack/management': 1.30.4(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.4(debug@4.4.3) @@ -10465,7 +10388,7 @@ snapshots: - debug - supports-color - '@contentstack/cli-utilities@2.0.0-beta.10(@types/node@18.19.130)': + '@contentstack/cli-utilities@2.0.0-beta.11(@types/node@18.19.130)': dependencies: '@contentstack/management': 1.30.4(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.4(debug@4.4.3) @@ -10502,7 +10425,7 @@ snapshots: - debug - supports-color - '@contentstack/cli-utilities@2.0.0-beta.10(@types/node@20.19.43)': + '@contentstack/cli-utilities@2.0.0-beta.11(@types/node@20.19.43)': dependencies: '@contentstack/management': 1.30.4(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.4(debug@4.4.3) @@ -10539,7 +10462,7 @@ snapshots: - debug - supports-color - '@contentstack/cli-utilities@2.0.0-beta.10(@types/node@22.20.1)': + '@contentstack/cli-utilities@2.0.0-beta.11(@types/node@22.20.1)': dependencies: '@contentstack/management': 1.30.4(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.4(debug@4.4.3) @@ -10587,7 +10510,7 @@ snapshots: - debug - supports-color - '@contentstack/delivery-sdk@5.3.0': + '@contentstack/delivery-sdk@5.4.0': dependencies: '@contentstack/core': 1.4.1 '@contentstack/utils': 1.9.1 @@ -10638,7 +10561,7 @@ snapshots: '@contentstack/types-generator@3.10.2(graphql@16.14.2)': dependencies: - '@contentstack/delivery-sdk': 5.3.0 + '@contentstack/delivery-sdk': 5.4.0 '@gql2ts/from-schema': 2.0.0-4(graphql@16.14.2) async: 3.2.6 axios: 1.18.0 @@ -11718,7 +11641,7 @@ snapshots: '@jest/schemas@29.6.3': dependencies: - '@sinclair/typebox': 0.27.10 + '@sinclair/typebox': 0.27.12 '@jest/schemas@30.4.1': dependencies: @@ -12247,7 +12170,7 @@ snapshots: '@simple-libs/stream-utils@1.2.0': {} - '@sinclair/typebox@0.27.10': {} + '@sinclair/typebox@0.27.12': {} '@sinclair/typebox@0.34.52': {} @@ -12281,32 +12204,32 @@ snapshots: '@sinonjs/text-encoding@0.7.3': {} - '@smithy/core@3.29.4': + '@smithy/core@3.29.5': dependencies: '@smithy/types': 4.16.1 tslib: 2.8.1 - '@smithy/credential-provider-imds@4.4.9': + '@smithy/credential-provider-imds@4.4.10': dependencies: - '@smithy/core': 3.29.4 + '@smithy/core': 3.29.5 '@smithy/types': 4.16.1 tslib: 2.8.1 - '@smithy/fetch-http-handler@5.6.6': + '@smithy/fetch-http-handler@5.6.7': dependencies: - '@smithy/core': 3.29.4 + '@smithy/core': 3.29.5 '@smithy/types': 4.16.1 tslib: 2.8.1 - '@smithy/node-http-handler@4.9.6': + '@smithy/node-http-handler@4.9.7': dependencies: - '@smithy/core': 3.29.4 + '@smithy/core': 3.29.5 '@smithy/types': 4.16.1 tslib: 2.8.1 - '@smithy/signature-v4@5.6.5': + '@smithy/signature-v4@5.6.6': dependencies: - '@smithy/core': 3.29.4 + '@smithy/core': 3.29.5 '@smithy/types': 4.16.1 tslib: 2.8.1 @@ -13338,13 +13261,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.10(vite@8.1.4(@types/node@20.19.43)(yaml@2.9.0))': + '@vitest/mocker@4.1.10(vite@8.1.5(@types/node@20.19.43)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.1.4(@types/node@20.19.43)(yaml@2.9.0) + vite: 8.1.5(@types/node@20.19.43)(yaml@2.9.0) '@vitest/pretty-format@4.1.10': dependencies: @@ -13455,10 +13378,6 @@ snapshots: dependencies: type-fest: 0.21.3 - ansi-escapes@7.3.0: - dependencies: - environment: 1.1.0 - ansi-regex@2.1.1: {} ansi-regex@3.0.1: {} @@ -13826,7 +13745,7 @@ snapshots: dependencies: baseline-browser-mapping: 2.10.43 caniuse-lite: 1.0.30001806 - electron-to-chromium: 1.5.392 + electron-to-chromium: 1.5.393 node-releases: 2.0.51 update-browserslist-db: 1.2.3(browserslist@4.28.6) @@ -14030,10 +13949,6 @@ snapshots: dependencies: restore-cursor: 3.1.0 - cli-cursor@5.0.0: - dependencies: - restore-cursor: 5.1.0 - cli-progress@3.12.0: dependencies: string-width: 4.2.3 @@ -14055,11 +13970,6 @@ snapshots: slice-ansi: 0.0.4 string-width: 1.0.2 - cli-truncate@5.2.0: - dependencies: - slice-ansi: 8.0.0 - string-width: 8.2.2 - cli-width@2.2.1: {} cli-width@3.0.0: {} @@ -14584,14 +14494,12 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.392: {} + electron-to-chromium@1.5.393: {} elegant-spinner@1.0.1: {} emittery@0.13.1: {} - emoji-regex@10.6.0: {} - emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} @@ -14604,7 +14512,7 @@ snapshots: dependencies: once: 1.4.0 - enhanced-resolve@5.24.2: + enhanced-resolve@5.24.3: dependencies: graceful-fs: 4.2.11 tapable: 2.3.3 @@ -14615,8 +14523,6 @@ snapshots: env-paths@2.2.1: {} - environment@1.1.0: {} - error-ex@1.3.4: dependencies: is-arrayish: 0.2.1 @@ -14776,7 +14682,7 @@ snapshots: - typescript - vue-eslint-parser - eslint-config-oclif@6.0.176(eslint@10.7.0)(typescript@4.9.5): + eslint-config-oclif@6.0.177(eslint@10.7.0)(typescript@4.9.5): dependencies: '@eslint/compat': 1.4.1(eslint@10.7.0) '@eslint/eslintrc': 3.3.6 @@ -14801,7 +14707,7 @@ snapshots: - supports-color - typescript - eslint-config-oclif@6.0.176(eslint@10.7.0)(typescript@5.9.3): + eslint-config-oclif@6.0.177(eslint@10.7.0)(typescript@5.9.3): dependencies: '@eslint/compat': 1.4.1(eslint@10.7.0) '@eslint/eslintrc': 3.3.6 @@ -14826,7 +14732,7 @@ snapshots: - supports-color - typescript - eslint-config-oclif@6.0.176(eslint@10.7.0)(typescript@6.0.3): + eslint-config-oclif@6.0.177(eslint@10.7.0)(typescript@6.0.3): dependencies: '@eslint/compat': 1.4.1(eslint@10.7.0) '@eslint/eslintrc': 3.3.6 @@ -15108,7 +15014,7 @@ snapshots: eslint-plugin-n@17.24.0(eslint@10.7.0)(typescript@4.9.5): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0) - enhanced-resolve: 5.24.2 + enhanced-resolve: 5.24.3 eslint: 10.7.0 eslint-plugin-es-x: 7.8.0(eslint@10.7.0) get-tsconfig: 4.14.0 @@ -15123,7 +15029,7 @@ snapshots: eslint-plugin-n@17.24.0(eslint@10.7.0)(typescript@5.9.3): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0) - enhanced-resolve: 5.24.2 + enhanced-resolve: 5.24.3 eslint: 10.7.0 eslint-plugin-es-x: 7.8.0(eslint@10.7.0) get-tsconfig: 4.14.0 @@ -15138,7 +15044,7 @@ snapshots: eslint-plugin-n@17.24.0(eslint@10.7.0)(typescript@6.0.3): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0) - enhanced-resolve: 5.24.2 + enhanced-resolve: 5.24.3 eslint: 10.7.0 eslint-plugin-es-x: 7.8.0(eslint@10.7.0) get-tsconfig: 4.14.0 @@ -15375,8 +15281,6 @@ snapshots: etag@1.8.1: {} - eventemitter3@5.0.4: {} - execa@1.0.0: dependencies: cross-spawn: 6.0.6 @@ -15703,8 +15607,6 @@ snapshots: get-caller-file@2.0.5: {} - get-east-asian-width@1.6.0: {} - get-func-name@2.0.2: {} get-intrinsic@1.3.0: @@ -16235,10 +16137,6 @@ snapshots: is-fullwidth-code-point@3.0.0: {} - is-fullwidth-code-point@5.1.0: - dependencies: - get-east-asian-width: 1.6.0 - is-generator-fn@2.1.0: {} is-generator-function@1.1.2: @@ -17396,54 +17294,54 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - lightningcss-android-arm64@1.32.0: + lightningcss-android-arm64@1.33.0: optional: true - lightningcss-darwin-arm64@1.32.0: + lightningcss-darwin-arm64@1.33.0: optional: true - lightningcss-darwin-x64@1.32.0: + lightningcss-darwin-x64@1.33.0: optional: true - lightningcss-freebsd-x64@1.32.0: + lightningcss-freebsd-x64@1.33.0: optional: true - lightningcss-linux-arm-gnueabihf@1.32.0: + lightningcss-linux-arm-gnueabihf@1.33.0: optional: true - lightningcss-linux-arm64-gnu@1.32.0: + lightningcss-linux-arm64-gnu@1.33.0: optional: true - lightningcss-linux-arm64-musl@1.32.0: + lightningcss-linux-arm64-musl@1.33.0: optional: true - lightningcss-linux-x64-gnu@1.32.0: + lightningcss-linux-x64-gnu@1.33.0: optional: true - lightningcss-linux-x64-musl@1.32.0: + lightningcss-linux-x64-musl@1.33.0: optional: true - lightningcss-win32-arm64-msvc@1.32.0: + lightningcss-win32-arm64-msvc@1.33.0: optional: true - lightningcss-win32-x64-msvc@1.32.0: + lightningcss-win32-x64-msvc@1.33.0: optional: true - lightningcss@1.32.0: + lightningcss@1.33.0: dependencies: detect-libc: 2.1.2 optionalDependencies: - lightningcss-android-arm64: 1.32.0 - lightningcss-darwin-arm64: 1.32.0 - lightningcss-darwin-x64: 1.32.0 - lightningcss-freebsd-x64: 1.32.0 - lightningcss-linux-arm-gnueabihf: 1.32.0 - lightningcss-linux-arm64-gnu: 1.32.0 - lightningcss-linux-arm64-musl: 1.32.0 - lightningcss-linux-x64-gnu: 1.32.0 - lightningcss-linux-x64-musl: 1.32.0 - lightningcss-win32-arm64-msvc: 1.32.0 - lightningcss-win32-x64-msvc: 1.32.0 + lightningcss-android-arm64: 1.33.0 + lightningcss-darwin-arm64: 1.33.0 + lightningcss-darwin-x64: 1.33.0 + lightningcss-freebsd-x64: 1.33.0 + lightningcss-linux-arm-gnueabihf: 1.33.0 + lightningcss-linux-arm64-gnu: 1.33.0 + lightningcss-linux-arm64-musl: 1.33.0 + lightningcss-linux-x64-gnu: 1.33.0 + lightningcss-linux-x64-musl: 1.33.0 + lightningcss-win32-arm64-msvc: 1.33.0 + lightningcss-win32-x64-msvc: 1.33.0 lilconfig@3.1.3: {} @@ -17453,9 +17351,8 @@ snapshots: dependencies: uc.micro: 2.1.0 - lint-staged@17.0.8: + lint-staged@17.1.0: dependencies: - listr2: 10.2.2 picomatch: 4.0.5 string-argv: 0.3.2 tinyexec: 1.2.4 @@ -17483,14 +17380,6 @@ snapshots: date-fns: 1.30.1 figures: 2.0.0 - listr2@10.2.2: - dependencies: - cli-truncate: 5.2.0 - eventemitter3: 5.0.4 - log-update: 6.1.0 - rfdc: 1.4.1 - wrap-ansi: 10.0.0 - listr@0.14.3: dependencies: '@samverschueren/stream-to-observable': 0.3.1(rxjs@6.6.7) @@ -17580,14 +17469,6 @@ snapshots: cli-cursor: 2.1.0 wrap-ansi: 3.0.1 - log-update@6.1.0: - dependencies: - ansi-escapes: 7.3.0 - cli-cursor: 5.0.0 - slice-ansi: 7.1.2 - strip-ansi: 7.2.0 - wrap-ansi: 9.0.2 - logform@2.7.0: dependencies: '@colors/colors': 1.6.0 @@ -17696,8 +17577,6 @@ snapshots: mimic-fn@3.1.0: {} - mimic-function@5.0.1: {} - mimic-response@3.1.0: {} mimic-response@4.0.0: {} @@ -18013,12 +17892,12 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.2 - obug@2.1.3: {} + obug@2.1.4: {} oclif@4.23.27(@types/node@14.18.63): dependencies: - '@aws-sdk/client-cloudfront': 3.1088.0 - '@aws-sdk/client-s3': 3.1088.0 + '@aws-sdk/client-cloudfront': 3.1090.0 + '@aws-sdk/client-s3': 3.1090.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 @@ -18046,8 +17925,8 @@ snapshots: oclif@4.23.27(@types/node@18.19.130): dependencies: - '@aws-sdk/client-cloudfront': 3.1088.0 - '@aws-sdk/client-s3': 3.1088.0 + '@aws-sdk/client-cloudfront': 3.1090.0 + '@aws-sdk/client-s3': 3.1090.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 @@ -18075,8 +17954,8 @@ snapshots: oclif@4.23.27(@types/node@20.19.43): dependencies: - '@aws-sdk/client-cloudfront': 3.1088.0 - '@aws-sdk/client-s3': 3.1088.0 + '@aws-sdk/client-cloudfront': 3.1090.0 + '@aws-sdk/client-s3': 3.1090.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 @@ -18104,8 +17983,8 @@ snapshots: oclif@4.23.27(@types/node@22.20.1): dependencies: - '@aws-sdk/client-cloudfront': 3.1088.0 - '@aws-sdk/client-s3': 3.1088.0 + '@aws-sdk/client-cloudfront': 3.1090.0 + '@aws-sdk/client-s3': 3.1090.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 @@ -18155,10 +18034,6 @@ snapshots: dependencies: mimic-fn: 2.1.0 - onetime@7.0.0: - dependencies: - mimic-function: 5.0.1 - open@8.4.2: dependencies: define-lazy-prop: 2.0.0 @@ -18358,7 +18233,7 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss@8.5.19: + postcss@8.5.20: dependencies: nanoid: 3.3.16 picocolors: 1.1.1 @@ -18722,11 +18597,6 @@ snapshots: onetime: 5.1.2 signal-exit: 3.0.7 - restore-cursor@5.1.0: - dependencies: - onetime: 7.0.0 - signal-exit: 4.1.0 - retry@0.13.1: {} reusify@1.1.0: {} @@ -18741,8 +18611,6 @@ snapshots: - jiti - supports-color - rfdc@1.4.1: {} - rimraf@3.0.2: dependencies: glob: 7.2.3 @@ -19063,16 +18931,6 @@ snapshots: astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - slice-ansi@7.1.2: - dependencies: - ansi-styles: 6.2.3 - is-fullwidth-code-point: 5.1.0 - - slice-ansi@8.0.0: - dependencies: - ansi-styles: 6.2.3 - is-fullwidth-code-point: 5.1.0 - smartwrap@2.0.2: dependencies: array.prototype.flat: 1.3.3 @@ -19217,17 +19075,6 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.2.0 - string-width@7.2.0: - dependencies: - emoji-regex: 10.6.0 - get-east-asian-width: 1.6.0 - strip-ansi: 7.2.0 - - string-width@8.2.2: - dependencies: - get-east-asian-width: 1.6.0 - strip-ansi: 7.2.0 - string.prototype.trim@1.2.11: dependencies: call-bind: 1.0.9 @@ -19975,11 +19822,11 @@ snapshots: vary@1.1.2: {} - vite@8.1.4(@types/node@20.19.43)(yaml@2.9.0): + vite@8.1.5(@types/node@20.19.43)(yaml@2.9.0): dependencies: - lightningcss: 1.32.0 + lightningcss: 1.33.0 picomatch: 4.0.5 - postcss: 8.5.19 + postcss: 8.5.20 rolldown: 1.1.5 tinyglobby: 0.2.17 optionalDependencies: @@ -19987,10 +19834,10 @@ snapshots: fsevents: 2.3.3 yaml: 2.9.0 - vitest@4.1.10(@types/node@20.19.43)(jsdom@23.2.0)(vite@8.1.4(@types/node@20.19.43)(yaml@2.9.0)): + vitest@4.1.10(@types/node@20.19.43)(jsdom@23.2.0)(vite@8.1.5(@types/node@20.19.43)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(vite@8.1.4(@types/node@20.19.43)(yaml@2.9.0)) + '@vitest/mocker': 4.1.10(vite@8.1.5(@types/node@20.19.43)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.10 '@vitest/runner': 4.1.10 '@vitest/snapshot': 4.1.10 @@ -19999,7 +19846,7 @@ snapshots: es-module-lexer: 2.3.1 expect-type: 1.4.0 magic-string: 0.30.21 - obug: 2.1.3 + obug: 2.1.4 pathe: 2.0.3 picomatch: 4.0.5 std-env: 4.2.0 @@ -20007,7 +19854,7 @@ snapshots: tinyexec: 1.2.4 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vite: 8.1.4(@types/node@20.19.43)(yaml@2.9.0) + vite: 8.1.5(@types/node@20.19.43)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 20.19.43 @@ -20155,12 +20002,6 @@ snapshots: workerpool@9.3.4: {} - wrap-ansi@10.0.0: - dependencies: - ansi-styles: 6.2.3 - string-width: 8.2.2 - strip-ansi: 7.2.0 - wrap-ansi@3.0.1: dependencies: string-width: 2.1.1 @@ -20184,12 +20025,6 @@ snapshots: string-width: 5.1.2 strip-ansi: 7.2.0 - wrap-ansi@9.0.2: - dependencies: - ansi-styles: 6.2.3 - string-width: 7.2.0 - strip-ansi: 7.2.0 - wrappy@1.0.2: {} write-file-atomic@3.0.3: