diff --git a/apps/angular-example/CHANGELOG.md b/apps/angular-example/CHANGELOG.md index 4fd4d2e4..d2e7407e 100644 --- a/apps/angular-example/CHANGELOG.md +++ b/apps/angular-example/CHANGELOG.md @@ -1,5 +1,12 @@ # angular-example +## 0.0.20 + +### Patch Changes + +- @tryabby/angular@2.0.10 +- @tryabby/devtools@5.0.1 + ## 0.0.19 ### Patch Changes diff --git a/apps/angular-example/package.json b/apps/angular-example/package.json index d96c7f2d..5726f0a3 100644 --- a/apps/angular-example/package.json +++ b/apps/angular-example/package.json @@ -1,6 +1,6 @@ { "name": "angular-example", - "version": "0.0.19", + "version": "0.0.20", "private": true, "scripts": { "ng": "ng", diff --git a/apps/web/CHANGELOG.md b/apps/web/CHANGELOG.md index 5f1aa96e..8a519b06 100644 --- a/apps/web/CHANGELOG.md +++ b/apps/web/CHANGELOG.md @@ -1,5 +1,14 @@ # web +## 0.2.38 + +### Patch Changes + +- Updated dependencies + - @tryabby/core@5.4.0 + - @tryabby/devtools@5.0.1 + - @tryabby/next@5.1.3 + ## 0.2.37 ### Patch Changes diff --git a/apps/web/package.json b/apps/web/package.json index 8acd01c0..aaef9635 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,6 @@ { "name": "web", - "version": "0.2.37", + "version": "0.2.38", "private": true, "scripts": { "build": "next build", diff --git a/packages/angular/CHANGELOG.md b/packages/angular/CHANGELOG.md index c12acf85..67a6530d 100644 --- a/packages/angular/CHANGELOG.md +++ b/packages/angular/CHANGELOG.md @@ -1,5 +1,12 @@ # @tryabby/angular +## 2.0.10 + +### Patch Changes + +- Updated dependencies + - @tryabby/core@5.4.0 + ## 2.0.9 ### Patch Changes diff --git a/packages/angular/package.json b/packages/angular/package.json index d963fe62..510620af 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -1,6 +1,6 @@ { "name": "@tryabby/angular", - "version": "2.0.9", + "version": "2.0.10", "scripts": { "ng": "ng", "start": "ng serve", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index c3ebede7..5ef894ac 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,11 @@ # @tryabby/cli +## 1.2.0 + +### Minor Changes + +- update ai command + ## 1.1.1 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index c9cc0af2..b13ae935 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@tryabby/cli", - "version": "1.1.1", + "version": "1.2.0", "private": false, "main": "./dist/index.js", "bin": { @@ -28,9 +28,10 @@ "esbuild": "0.18.17", "figlet": "^1.6.0", "globby": "^14.0.2", - "magicast": "^0.3.2", + "magicast": "^0.3.4", "msw": "^1.2.2", "node-fetch": "^3.3.1", + "ora": "^8.0.1", "polka": "^0.5.2", "portfinder": "^1.0.32", "prettier": "^3.0.0", diff --git a/packages/cli/src/add-flag.ts b/packages/cli/src/add-flag.ts index 570d70b5..caa555de 100644 --- a/packages/cli/src/add-flag.ts +++ b/packages/cli/src/add-flag.ts @@ -6,9 +6,9 @@ import { push } from "./push"; import { updateConfigFile } from "./update-config-file"; export async function addFlag(options: { apiKey: string; host?: string; configPath?: string }) { - const { mutableConfig, saveMutableConfig, restoreConfig } = await loadLocalConfig( - options.configPath - ); + const { mutableConfig, saveMutableConfig, restoreConfig } = await loadLocalConfig({ + configPath: options.configPath, + }); const { flagName } = await prompts({ type: "text", diff --git a/packages/cli/src/add-remote-config.ts b/packages/cli/src/add-remote-config.ts index c325ddec..b95c50dc 100644 --- a/packages/cli/src/add-remote-config.ts +++ b/packages/cli/src/add-remote-config.ts @@ -9,9 +9,9 @@ export async function addRemoteConfig(options: { host?: string; configPath?: string; }) { - const { mutableConfig, saveMutableConfig, restoreConfig } = await loadLocalConfig( - options.configPath - ); + const { mutableConfig, saveMutableConfig, restoreConfig } = await loadLocalConfig({ + configPath: options.configPath, + }); const { remoteConfigName, remoteConfigType } = await prompts([ { diff --git a/packages/cli/src/ai.ts b/packages/cli/src/ai.ts index db0a9e70..12d2db87 100644 --- a/packages/cli/src/ai.ts +++ b/packages/cli/src/ai.ts @@ -4,6 +4,7 @@ import { getUseFeatureFlagRegex } from "@tryabby/core"; import { readFile } from "fs/promises"; import chalk from "chalk"; import { HttpService } from "./http"; +import * as path from "path"; export async function removeFlagInstance(options: { flagName: string; @@ -13,8 +14,7 @@ export async function removeFlagInstance(options: { configPath?: string; }) { const files = await globby("**/*.tsx", { - cwd: options.path ?? process.cwd(), - absolute: true, + cwd: options.path, gitignore: true, onlyFiles: true, }); @@ -23,7 +23,8 @@ export async function removeFlagInstance(options: { const filesToUse = ( await Promise.all( - files.flatMap(async (filePath) => { + files.flatMap(async (fp) => { + const filePath = path.join(options.path, fp); const content = await readFile(filePath, "utf-8").then((content) => { const matches = content.match(regex); return matches ? content : null; @@ -45,14 +46,26 @@ export async function removeFlagInstance(options: { apiUrl: options.host, }); + let updatedFileCount = filesToUse.length; try { - const { mutableConfig, saveMutableConfig } = await loadLocalConfig( - options.configPath + const { mutableConfig, saveMutableConfig } = await loadLocalConfig({ + configPath: options.configPath, + cwd: options.path, + }); + + if (mutableConfig.flags === undefined) { + console.error("No flags found in the config file"); + return; + } + + mutableConfig.flags = Array.from(mutableConfig.flags).filter( + (flag) => flag !== options.flagName ); - mutableConfig.flags = mutableConfig.flags.filter((flag: string) => flag !== options.flagName); + updatedFileCount++; await saveMutableConfig(); } catch (e) { + console.error(e); // fail silently } - console.log(chalk.green("Flag removed successfully")); + return updatedFileCount; } diff --git a/packages/cli/src/check.ts b/packages/cli/src/check.ts index 430c8b02..0b17215a 100644 --- a/packages/cli/src/check.ts +++ b/packages/cli/src/check.ts @@ -16,7 +16,7 @@ export async function verifyLocalConfig({ apiUrl?: string; configPath?: string; }) { - const { config: localConfig } = await loadLocalConfig(configPath); + const { config: localConfig } = await loadLocalConfig({ configPath }); const remoteConfig = await HttpService.getConfigFromServer({ projectId: localConfig.projectId, diff --git a/packages/cli/src/http.ts b/packages/cli/src/http.ts index 2eb72e7f..20e7bf21 100644 --- a/packages/cli/src/http.ts +++ b/packages/cli/src/http.ts @@ -104,9 +104,7 @@ export abstract class HttpService { if (!Array.isArray(res)) { throw new Error("Invalid response from server"); } - console.log({ res, files }); await Promise.all(res.map((file) => writeFile(file.filePath, file.fileContent))); - console.log(chalk.green("All files have been updated successfully")); } else if (status === 500) { throw new Error("Internal server error trying to update files"); } else if (status === 401) { diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index 4fd3cee3..d2efd59b 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -14,6 +14,7 @@ import { addCommandTypeSchema } from "./schemas"; import { addFlag } from "./add-flag"; import { addRemoteConfig } from "./add-remote-config"; import { removeFlagInstance } from "./ai"; +import ora from "ora"; const program = new Command(); @@ -195,14 +196,17 @@ aiCommand .addOption(ConfigOption) .addOption(HostOption) .action(async (dir: string, flagName: string, options: { config?: string; host?: string }) => { - const files = await removeFlagInstance({ + const spinner = ora("Removing feature flag with ✨AI✨").start(); + const updatedFileCount = await removeFlagInstance({ apiKey: await getToken(), flagName, path: dir, configPath: options.config, host: options.host, }); - console.log(files); + spinner.succeed(); + console.log(chalk.green("\nFlag removed successfully")); + console.log(chalk.green("Files updated:", updatedFileCount)); }); program.parse(process.argv); diff --git a/packages/cli/src/pull.ts b/packages/cli/src/pull.ts index c08262f1..0bebd210 100644 --- a/packages/cli/src/pull.ts +++ b/packages/cli/src/pull.ts @@ -24,7 +24,7 @@ export async function pullAndMerge({ apiUrl?: string; configPath?: string; }): Promise { - const { config: localConfig, configFilePath } = await loadLocalConfig(configPath); + const { config: localConfig, configFilePath } = await loadLocalConfig({ configPath }); const configFileContents = await fs.readFile(configFilePath, "utf-8"); diff --git a/packages/cli/src/push.ts b/packages/cli/src/push.ts index 41b91e9b..314be580 100644 --- a/packages/cli/src/push.ts +++ b/packages/cli/src/push.ts @@ -10,7 +10,7 @@ export async function push({ apiUrl?: string; configPath?: string; }) { - const { config } = await loadLocalConfig(configPath); + const { config } = await loadLocalConfig({ configPath }); await HttpService.updateConfigOnServer({ apiKey, diff --git a/packages/cli/src/util.ts b/packages/cli/src/util.ts index 1be56e0e..4b09843c 100644 --- a/packages/cli/src/util.ts +++ b/packages/cli/src/util.ts @@ -1,4 +1,4 @@ -import { abbyConfigSchema } from "@tryabby/core"; +import { AbbyConfig, abbyConfigSchema } from "@tryabby/core"; import { loadConfig } from "unconfig"; import { config as loadEnv } from "dotenv"; import path from "path"; @@ -8,11 +8,18 @@ import { ABBY_BASE_URL } from "./consts"; import cors from "cors"; import fs from "fs/promises"; import { writeFile, loadFile, parseModule } from "magicast"; +import { chownSync } from "fs"; -export async function loadLocalConfig(configPath?: string) { - loadEnv(); +export async function loadLocalConfig({ + configPath, + cwd: initialCwd, +}: { + configPath?: string; + cwd?: string; +}) { + loadEnv({ path: initialCwd ? path.resolve(initialCwd, ".env") : "" }); - let cwd = process.cwd(); + let cwd = initialCwd ?? process.cwd(); let fileName = "abby.config"; let extensions = ["ts", "js", "mjs", "cjs"]; @@ -49,7 +56,7 @@ export async function loadLocalConfig(configPath?: string) { return { config: result.data, configFilePath: sources[0], - mutableConfig: mod.exports.default.$args[1], + mutableConfig: mod.exports.default.$args[1] as AbbyConfig, saveMutableConfig: () => writeFile(mod, sources[0]), restoreConfig: () => { const mod = parseModule(originalConfig); diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index 31802c7f..09278790 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,5 +1,11 @@ # @tryabby/core +## 5.4.0 + +### Minor Changes + +- update ai command + ## 5.3.1 ### Patch Changes diff --git a/packages/core/package.json b/packages/core/package.json index 8fdac9fe..96e36ae7 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@tryabby/core", - "version": "5.3.1", + "version": "5.4.0", "description": "", "main": "dist/index.js", "files": [ diff --git a/packages/core/src/shared/schemas.ts b/packages/core/src/shared/schemas.ts index 7471ae7b..3cf9560a 100644 --- a/packages/core/src/shared/schemas.ts +++ b/packages/core/src/shared/schemas.ts @@ -1,5 +1,6 @@ import { z } from "zod"; import { AbbyEventType } from "./types"; +import { AbbyConfig } from ".."; export const abbyEventSchema = z.object({ type: z.nativeEnum(AbbyEventType), @@ -25,7 +26,7 @@ export const remoteConfigValueStringSchema = z.union([ export const abbyConfigSchema = z.object({ projectId: z.string(), apiUrl: z.string().optional(), - currentEnvironment: z.string().optional(), + currentEnvironment: z.string(), environments: z.array(z.string()), tests: z .record( @@ -59,7 +60,14 @@ export const abbyConfigSchema = z.object({ }) .optional(), debug: z.boolean().optional(), -}); + cookies: z + .object({ + disableByDefault: z.boolean().optional(), + expiresInDays: z.number().optional(), + }) + .optional(), + __experimentalCdnUrl: z.string().optional(), +}) satisfies z.ZodType; export type AbbyConfigFile = z.infer; @@ -75,7 +83,7 @@ export type RemoteConfigValueString = z.infer = T extends "String" ? string : T extends "Number" - ? number - : T extends "JSON" - ? Record - : never; + ? number + : T extends "JSON" + ? Record + : never; diff --git a/packages/next/CHANGELOG.md b/packages/next/CHANGELOG.md index d9976f8d..e07c5d10 100644 --- a/packages/next/CHANGELOG.md +++ b/packages/next/CHANGELOG.md @@ -1,5 +1,11 @@ # @tryabby/next +## 5.1.3 + +### Patch Changes + +- @tryabby/react@5.2.2 + ## 5.1.2 ### Patch Changes diff --git a/packages/next/package.json b/packages/next/package.json index f98ad345..59ae573b 100644 --- a/packages/next/package.json +++ b/packages/next/package.json @@ -1,6 +1,6 @@ { "name": "@tryabby/next", - "version": "5.1.2", + "version": "5.1.3", "description": "", "main": "dist/index.js", "files": [ diff --git a/packages/node/CHANGELOG.md b/packages/node/CHANGELOG.md index 9b90bdf7..50424999 100644 --- a/packages/node/CHANGELOG.md +++ b/packages/node/CHANGELOG.md @@ -1,5 +1,12 @@ # @tryabby/node +## 5.1.8 + +### Patch Changes + +- Updated dependencies + - @tryabby/core@5.4.0 + ## 5.1.7 ### Patch Changes diff --git a/packages/node/package.json b/packages/node/package.json index 952cdaf9..5bbbc22e 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,6 +1,6 @@ { "name": "@tryabby/node", - "version": "5.1.7", + "version": "5.1.8", "description": "", "main": "dist/index.js", "files": [ diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index 285481e3..ceb50a81 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -1,5 +1,12 @@ # @tryabby/react +## 5.2.2 + +### Patch Changes + +- Updated dependencies + - @tryabby/core@5.4.0 + ## 5.2.1 ### Patch Changes diff --git a/packages/react/package.json b/packages/react/package.json index 925a13af..4638718b 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@tryabby/react", - "version": "5.2.1", + "version": "5.2.2", "description": "", "main": "dist/index.js", "files": [ diff --git a/packages/remix/CHANGELOG.md b/packages/remix/CHANGELOG.md index 1e402f41..647fd645 100644 --- a/packages/remix/CHANGELOG.md +++ b/packages/remix/CHANGELOG.md @@ -1,5 +1,11 @@ # @tryabby/next +## 1.0.4 + +### Patch Changes + +- @tryabby/react@5.2.2 + ## 1.0.3 ### Patch Changes diff --git a/packages/remix/package.json b/packages/remix/package.json index f4847f96..8cb67bea 100644 --- a/packages/remix/package.json +++ b/packages/remix/package.json @@ -1,6 +1,6 @@ { "name": "@tryabby/remix", - "version": "1.0.3", + "version": "1.0.4", "description": "", "main": "dist/index.js", "files": [ diff --git a/packages/svelte/CHANGELOG.md b/packages/svelte/CHANGELOG.md index b7b86d8b..a7bfacc7 100644 --- a/packages/svelte/CHANGELOG.md +++ b/packages/svelte/CHANGELOG.md @@ -1,5 +1,12 @@ # @tryabby/svelte +## 2.2.2 + +### Patch Changes + +- Updated dependencies + - @tryabby/core@5.4.0 + ## 2.2.1 ### Patch Changes diff --git a/packages/svelte/package.json b/packages/svelte/package.json index e73b9009..1086ccd2 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@tryabby/svelte", - "version": "2.2.1", + "version": "2.2.2", "main": "dist/index.umd.cjs", "homepage": "https://docs.tryabby.dev", "type": "module", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6773e962..913e89ff 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -695,14 +695,17 @@ importers: specifier: ^14.0.2 version: 14.0.2 magicast: - specifier: ^0.3.2 - version: 0.3.2 + specifier: ^0.3.4 + version: 0.3.4 msw: specifier: ^1.2.2 version: 1.2.2(typescript@5.3.3) node-fetch: specifier: ^3.3.1 version: 3.3.1 + ora: + specifier: ^8.0.1 + version: 8.0.1 polka: specifier: ^0.5.2 version: 0.5.2 @@ -1893,10 +1896,10 @@ packages: '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.21.8) '@babel/helpers': 7.24.4 - '@babel/parser': 7.24.4 + '@babel/parser': 7.24.7 '@babel/template': 7.24.0 '@babel/traverse': 7.24.1 - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 convert-source-map: 1.9.0 debug: 4.3.5 gensync: 1.0.0-beta.2 @@ -1916,10 +1919,10 @@ packages: '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) '@babel/helpers': 7.23.6 - '@babel/parser': 7.23.6 + '@babel/parser': 7.24.7 '@babel/template': 7.22.15 '@babel/traverse': 7.23.6 - '@babel/types': 7.23.6 + '@babel/types': 7.24.7 convert-source-map: 2.0.0 debug: 4.3.5 gensync: 1.0.0-beta.2 @@ -1985,7 +1988,7 @@ packages: resolution: {integrity: sha512-F3fZga2uv09wFdEjEQIJxXALXfz0+JaOb7SabvVMmjHxeVTuGW8wgE8Vp1Hd7O+zMTYtcfEISGRzPkeiaPPsvg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.7 '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.20 jsesc: 2.5.2 @@ -2013,7 +2016,7 @@ packages: resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 @@ -2037,7 +2040,7 @@ packages: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.7 /@babel/helper-builder-binary-assignment-operator-visitor@7.22.5: resolution: {integrity: sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==} @@ -2258,7 +2261,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/types': 7.23.6 + '@babel/types': 7.24.7 /@babel/helper-function-name@7.23.0: resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} @@ -2278,7 +2281,7 @@ packages: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.7 /@babel/helper-hoist-variables@7.24.7: resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} @@ -2296,13 +2299,13 @@ packages: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.7 /@babel/helper-module-imports@7.22.5: resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.7 /@babel/helper-module-imports@7.24.7: resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} @@ -2339,7 +2342,7 @@ packages: '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-validator-identifier': 7.24.7 /@babel/helper-module-transforms@7.23.3(@babel/core@7.21.8): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} @@ -2352,7 +2355,7 @@ packages: '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-validator-identifier': 7.24.7 dev: true /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.6): @@ -2366,7 +2369,7 @@ packages: '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-validator-identifier': 7.24.7 /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.4): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} @@ -2379,7 +2382,7 @@ packages: '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-validator-identifier': 7.24.7 /@babel/helper-module-transforms@7.24.7(@babel/core@7.20.12): resolution: {integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==} @@ -2468,7 +2471,7 @@ packages: '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.5 - '@babel/types': 7.23.6 + '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color @@ -2482,7 +2485,7 @@ packages: '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.5 - '@babel/types': 7.23.6 + '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color dev: true @@ -2497,7 +2500,7 @@ packages: '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.5 - '@babel/types': 7.23.6 + '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color dev: true @@ -2519,7 +2522,7 @@ packages: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.7 /@babel/helper-simple-access@7.24.7: resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} @@ -2534,7 +2537,7 @@ packages: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.7 /@babel/helper-split-export-declaration@7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} @@ -2546,13 +2549,13 @@ packages: resolution: {integrity: sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.7 /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.7 /@babel/helper-split-export-declaration@7.24.7: resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} @@ -2599,7 +2602,7 @@ packages: '@babel/helper-function-name': 7.23.0 '@babel/template': 7.22.15 '@babel/traverse': 7.23.6 - '@babel/types': 7.23.6 + '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color @@ -2629,7 +2632,7 @@ packages: dependencies: '@babel/template': 7.24.0 '@babel/traverse': 7.24.1 - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color @@ -2680,7 +2683,7 @@ packages: engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.7 dev: true /@babel/parser@7.23.6: @@ -2695,7 +2698,7 @@ packages: engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.7 /@babel/parser@7.24.7: resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} @@ -4722,7 +4725,7 @@ packages: '@babel/helper-module-imports': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.6) - '@babel/types': 7.23.6 + '@babel/types': 7.24.7 dev: true /@babel/plugin-transform-regenerator@7.22.5(@babel/core@7.20.12): @@ -5210,7 +5213,7 @@ packages: '@babel/plugin-transform-unicode-escapes': 7.22.5(@babel/core@7.21.8) '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.21.8) '@babel/preset-modules': 0.1.5(@babel/core@7.21.8) - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.21.8) babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.21.8) babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.21.8) @@ -5301,7 +5304,7 @@ packages: '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.24.7) '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.24.7) '@babel/preset-modules': 0.1.5(@babel/core@7.24.7) - '@babel/types': 7.23.6 + '@babel/types': 7.24.7 babel-plugin-polyfill-corejs2: 0.4.3(@babel/core@7.24.7) babel-plugin-polyfill-corejs3: 0.8.1(@babel/core@7.24.7) babel-plugin-polyfill-regenerator: 0.5.0(@babel/core@7.24.7) @@ -5441,8 +5444,8 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.24.2 - '@babel/parser': 7.24.4 - '@babel/types': 7.24.0 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 /@babel/template@7.24.7: resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} @@ -5462,8 +5465,8 @@ packages: '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 debug: 4.3.5 globals: 11.12.0 transitivePeerDependencies: @@ -5497,8 +5500,8 @@ packages: '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 debug: 4.3.5 globals: 11.12.0 transitivePeerDependencies: @@ -5542,8 +5545,8 @@ packages: resolution: {integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-string-parser': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 dev: true @@ -11777,8 +11780,8 @@ packages: /@types/babel__core@7.20.1: resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} dependencies: - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.20.1 @@ -11797,39 +11800,39 @@ packages: /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.7 dev: true /@types/babel__generator@7.6.8: resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 dev: true /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 dev: true /@types/babel__template@7.4.4: resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: - '@babel/parser': 7.24.4 - '@babel/types': 7.24.0 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 dev: true /@types/babel__traverse@7.20.1: resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.7 dev: true /@types/babel__traverse@7.20.5: resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 dev: true /@types/body-parser@1.19.2: @@ -12696,7 +12699,7 @@ packages: /@vue/compiler-core@3.4.24: resolution: {integrity: sha512-vbW/tgbwJYj62N/Ww99x0zhFTkZDTcGh3uwJEuadZ/nF9/xuFMC4693P9r+3sxGXISABpDKvffY5ApH9pmdd1A==} dependencies: - '@babel/parser': 7.24.4 + '@babel/parser': 7.24.7 '@vue/shared': 3.4.24 entities: 4.5.0 estree-walker: 2.0.2 @@ -13209,7 +13212,6 @@ packages: /ansi-regex@6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} - dev: true /ansi-sequence-parser@1.1.1: resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==} @@ -14311,6 +14313,11 @@ packages: engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: false + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: false + /character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} dev: false @@ -14409,10 +14416,22 @@ packages: dependencies: restore-cursor: 3.1.0 + /cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + restore-cursor: 4.0.0 + dev: false + /cli-spinners@2.9.0: resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} engines: {node: '>=6'} + /cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + dev: false + /cli-table3@0.6.3: resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} engines: {node: 10.* || >= 12.*} @@ -15855,6 +15874,10 @@ packages: resolution: {integrity: sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==} dev: false + /emoji-regex@10.3.0: + resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} + dev: false + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -17963,6 +17986,11 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} + /get-east-asian-width@1.2.0: + resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} + engines: {node: '>=18'} + dev: false + /get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} dev: true @@ -19257,6 +19285,11 @@ packages: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} + /is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + dev: false + /is-lambda@1.0.1: resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} dev: true @@ -19433,6 +19466,16 @@ packages: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} + /is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + dev: false + + /is-unicode-supported@2.0.0: + resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==} + engines: {node: '>=18'} + dev: false + /is-weakmap@2.0.1: resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} @@ -19790,7 +19833,7 @@ packages: '@babel/preset-env': ^7.1.6 dependencies: '@babel/core': 7.24.4 - '@babel/parser': 7.23.6 + '@babel/parser': 7.24.7 '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.4) '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.4) '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.4) @@ -19820,7 +19863,7 @@ packages: '@babel/preset-env': ^7.1.6 dependencies: '@babel/core': 7.24.4 - '@babel/parser': 7.23.6 + '@babel/parser': 7.24.7 '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.4) '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.4) '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.4) @@ -20541,6 +20584,14 @@ packages: chalk: 4.1.2 is-unicode-supported: 0.1.0 + /log-symbols@6.0.0: + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} + engines: {node: '>=18'} + dependencies: + chalk: 5.3.0 + is-unicode-supported: 1.3.0 + dev: false + /log4js@6.9.1: resolution: {integrity: sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==} engines: {node: '>=8.0'} @@ -20657,12 +20708,12 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /magicast@0.3.2: - resolution: {integrity: sha512-Fjwkl6a0syt9TFN0JSYpOybxiMCkYNEeOTnOTNRbjphirLakznZXAqrXgj/7GG3D1dvETONNwrBfinvAbpunDg==} + /magicast@0.3.4: + resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==} dependencies: - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 - source-map-js: 1.0.2 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + source-map-js: 1.2.0 dev: false /make-dir@2.1.0: @@ -23195,6 +23246,21 @@ packages: strip-ansi: 6.0.1 wcwidth: 1.0.1 + /ora@8.0.1: + resolution: {integrity: sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==} + engines: {node: '>=18'} + dependencies: + chalk: 5.3.0 + cli-cursor: 4.0.0 + cli-spinners: 2.9.2 + is-interactive: 2.0.0 + is-unicode-supported: 2.0.0 + log-symbols: 6.0.0 + stdin-discarder: 0.2.2 + string-width: 7.2.0 + strip-ansi: 7.1.0 + dev: false + /orderedmap@2.1.1: resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==} dev: false @@ -24930,6 +24996,14 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 + /restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: false + /retry@0.12.0: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} @@ -25923,6 +25997,11 @@ packages: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} dev: true + /stdin-discarder@0.2.2: + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} + engines: {node: '>=18'} + dev: false + /stop-iteration-iterator@1.0.0: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} @@ -26016,6 +26095,15 @@ packages: strip-ansi: 7.1.0 dev: true + /string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + dependencies: + emoji-regex: 10.3.0 + get-east-asian-width: 1.2.0 + strip-ansi: 7.1.0 + dev: false + /string.prototype.matchall@4.0.11: resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} engines: {node: '>= 0.4'} @@ -26123,7 +26211,6 @@ packages: engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 - dev: true /strip-bom-string@1.0.0: resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==}