From 8640c104ea363d51a509efce821260166a7a03b5 Mon Sep 17 00:00:00 2001 From: fzn0x Date: Sun, 21 Jul 2024 14:52:55 +0700 Subject: [PATCH] chore(init): first commit reacti18n --- .eslintignore | 1 + .eslintrc.cjs | 6 + .gitattributes | 2 + .gitignore | 177 ++ .prettierrc | 9 + LICENSE | 9 + README.md | 185 ++ browser/reacti18n-browser.min.js | 2 + browser/reacti18n-browser.min.js.map | 1 + build.ts | 80 + bun.lockb | Bin 0 -> 228103 bytes bunfig.toml | 2 + jsr.json | 22 + lang-admin.json | 8 + lang.json | 8 + package.cjs.json | 3 + package.json | 75 + src/index.test.ts | 38 + src/index.ts | 140 + tsconfig.build.json | 5 + tsconfig.json | 41 + vitest.config.ts | 9 + webpack.config.ts | 32 + yarn.lock | 4069 ++++++++++++++++++++++++++ 24 files changed, 4924 insertions(+) create mode 100644 .eslintignore create mode 100644 .eslintrc.cjs create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .prettierrc create mode 100644 LICENSE create mode 100644 README.md create mode 100644 browser/reacti18n-browser.min.js create mode 100644 browser/reacti18n-browser.min.js.map create mode 100644 build.ts create mode 100644 bun.lockb create mode 100644 bunfig.toml create mode 100644 jsr.json create mode 100644 lang-admin.json create mode 100644 lang.json create mode 100644 package.cjs.json create mode 100644 package.json create mode 100644 src/index.test.ts create mode 100644 src/index.ts create mode 100644 tsconfig.build.json create mode 100644 tsconfig.json create mode 100644 vitest.config.ts create mode 100644 webpack.config.ts create mode 100644 yarn.lock diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..544edd9 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +.eslintrc.cjs \ No newline at end of file diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..cbcd27a --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,6 @@ +module.exports = { + extends: ['@hono/eslint-config'], + parserOptions: { + project: ['./tsconfig.json'], + }, +} diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8c440f4 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +**/**.js linguist-vendored +**/**.cjs linguist-vendored \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4b59b66 --- /dev/null +++ b/.gitignore @@ -0,0 +1,177 @@ +# Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore + +# Logs + +logs +_.log +npm-debug.log_ +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Caches + +.cache + +# Diagnostic reports (https://nodejs.org/api/report.html) + +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# Runtime data + +pids +_.pid +_.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover + +lib-cov + +# Coverage directory used by tools like istanbul + +coverage +*.lcov + +# nyc test coverage + +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) + +.grunt + +# Bower dependency directory (https://bower.io/) + +bower_components + +# node-waf configuration + +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) + +build/Release + +# Dependency directories + +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) + +web_modules/ + +# TypeScript cache + +*.tsbuildinfo + +# Optional npm cache directory + +.npm + +# Optional eslint cache + +.eslintcache + +# Optional stylelint cache + +.stylelintcache + +# Microbundle cache + +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history + +.node_repl_history + +# Output of 'npm pack' + +*.tgz + +# Yarn Integrity file + +.yarn-integrity + +# dotenv environment variable files + +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) + +.parcel-cache + +# Next.js build output + +.next +out + +# Nuxt.js build / generate output + +.nuxt +dist + +# Gatsby files + +# Comment in the public line in if your project uses Gatsby and not Next.js + +# https://nextjs.org/blog/next-9-1#public-directory-support + +# public + +# vuepress build output + +.vuepress/dist + +# vuepress v2.x temp and cache directory + +.temp + +# Docusaurus cache and generated files + +.docusaurus + +# Serverless directories + +.serverless/ + +# FuseBox cache + +.fusebox/ + +# DynamoDB Local files + +.dynamodb/ + +# TernJS port file + +.tern-port + +# Stores VSCode versions used for testing VSCode extensions + +.vscode-test + +# yarn v2 + +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +# IntelliJ based IDEs +.idea + +# Finder (MacOS) folder config +.DS_Store + +/dist \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..a456dc9 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,9 @@ +{ + "printWidth": 100, + "trailingComma": "es5", + "tabWidth": 2, + "semi": false, + "singleQuote": true, + "jsxSingleQuote": true, + "endOfLine": "lf" +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..2404169 --- /dev/null +++ b/LICENSE @@ -0,0 +1,9 @@ +The MIT License (MIT) + +Copyright (c) 2024 Muhammad Fauzan (https://fzn0x.dev) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..6e4029e --- /dev/null +++ b/README.md @@ -0,0 +1,185 @@ +# 𝓡𝓮𝓪𝓬𝓽i18𝓷 + +Straightforward & less effort React i18n library. + +## Get to Know + +- [Installation](#installation) +- [Usage](#usage) + - [JavaScript](#javascript) + - [TypeScript](#typescript) + - [React](#react) +- [License](#license) + +## Installation + +```sh +bun install reacti18n +npm install reacti18n +yarn add reacti18n +pnpm install reacti18n +``` + +## Usage + +Creates `lang.json` and `lang-admin.json` files: + +**`lang.json` :** + +```json +{ + "en": { + "hello": "hello world" + }, + "de": { + "hello": "Guten Morgen" + }, + "id": { + "hello": "Hallo bang" + } +} +``` + +**`lang-admin.json` :** + +```json +{ + "en": { + "hello": "hello world from admin" + }, + "de": { + "hello": "Guten Morgen from admin" + }, + "id": { + "hello": "Hallo bang from admin" + } +} +``` + +### JavaScript + +```js +// lang.js +const i18n = require('reacti18n') + +const t = i18n.init({ + namespace: { + default: { + // user pages + load: `/lang.json`, // multiple files loads also + // supported: [`lang.json`, `lang-2.json`] + type: 'json', // json, sqlite + storage: 'path', + }, + admin: { + // admin pages + load: `/lang-admin.json`, // multiple files loads also + // supported: [`lang-admin.json`, `lang-admin-2.json`] + type: 'json', + storage: 'cookie', + }, + // otherCustomNamespace: { + // load: `/lang.db`, + // type: 'sqlite', // json, sqlite + // } + }, + detection: { + order: ['cookie', 'path', 'query'], // use defaultLang if not found + defaultLang: 'en', + }, +}) + +console.log(t('hello')) // "hello" from default namespace +console.log(t('admin.hello')) // "hello" from admin namespace, +// defaultLang: en if no language detected in cookie, path or query +// for path: url must includes /en/ path or similar lang names like /de/ path to be recognized +// for query: url must includes query params `?lang=en` to work, +// or other similar lang names like `?lang=de` or `?lang=id` to work. +// for cookie: you need to store cookie with name `lang` and with the value of current lang +// name, for example: en, de, id + +// You can export for reusability +// module.exports = t; +``` + +### TypeScript + +```js +// lang.ts +import i18n from 'reacti18n' + +const t = i18n.init({ + namespace: { + default: { + // user pages + load: `/lang.json`, + type: 'json', // json, sqlite + storage: 'path', + }, + admin: { + // admin pages + load: `/lang-admin.json`, + type: 'json', + storage: 'cookie', + }, + // otherCustomNamespace: { + // load: `/lang.db`, + // type: 'sqlite', // json, sqlite + // } + }, + detection: { + order: ['cookie', 'path', 'query'], // use defaultLang if not found + defaultLang: 'en', + }, +}) + +console.log(t('hello')) // "hello" from default namespace +console.log(t('admin.hello')) // "hello" from admin namespace, + +// You can export for reusability +// export default t; +``` + +### React + +```jsx +import i18n from 'reacti18n' + +const t = i18n.init({ + namespace: { + default: { + // user pages + load: `/lang.json`, + type: 'json', // json, sqlite + storage: 'path', + }, + admin: { + // admin pages + load: `/lang-admin.json`, + type: 'json', + storage: 'cookie', + }, + // otherCustomNamespace: { + // load: `/lang.db`, + // type: 'sqlite', // json, sqlite + // } + }, + detection: { + order: ['cookie', 'path', 'query'], // use defaultLang if not found + defaultLang: 'en', + }, +}) + +// Creates a function LanguageSwitch to change defaultLang +export default function LanguageSwitch({ lang, ns }) { + // t.switch is to change the defaultLang + return
t.switch(lang, ns)}>Switch Language for {ns}
+} + +; +; +``` + +## License + +Reacti18n is [MIT Licensed](./LICENSE) and Open Source Software by [@fzn0x](https://github.com/fzn0x) diff --git a/browser/reacti18n-browser.min.js b/browser/reacti18n-browser.min.js new file mode 100644 index 0000000..a52305c --- /dev/null +++ b/browser/reacti18n-browser.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("{}")):"function"==typeof define&&define.amd?define("reacti18n",["{}"],t):"object"==typeof exports?exports.reacti18n=t(require("{}")):e.reacti18n=t(e["{}"])}(self,(e=>(()=>{"use strict";var t={324:t=>{t.exports=e}},n={};function o(e){var r=n[e];if(void 0!==r)return r.exports;var i=n[e]={exports:{}};return t[e](i,i.exports,o),i.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};o.r(r),o.d(r,{default:()=>u});var i=o(324);function a(e){const t=function(e){const t={};return e?(e.split(";").forEach((e=>{const[n,...o]=e.split("=");n&&(t[n.trim()]=decodeURIComponent(o.join("=")))})),t):t}(e);return t.lang||null}function c(e){const t=function(e){const t={};return e?(e.replace(/^\?/,"").split("&").forEach((e=>{const[n,o]=e.split("=");n&&o&&(t[n]=decodeURIComponent(o))})),t):t}(e);return t.lang||null}const u={init:function(e){const t={};for(const o in e.namespace){const r=e.namespace[o];if(!r)throw new Error("Invalid namespace configuration");t[o]=(n=r.load,JSON.parse(function(e){return(0,i.readFileSync)(e,"utf-8")}(n)))}var n;const o=function(e){const{order:t,defaultLang:n}=e;return e=>{for(const n of t){let t=null;if("cookie"===n?t=a(e.headers.cookie):"path"===n?t=e.url.split("/").find((e=>/^[a-z]{2}$/.test(e)))||null:"query"===n&&(t=c(e.url)),t)return t}return n}}(e.detection);function r(n,r){var i,a;const[c,u]=n.split("."),l=r&&Object.keys(r).length?o(r):c&&(null===(a=null===(i=null==e?void 0:e.namespace)||void 0===i?void 0:i[c])||void 0===a?void 0:a.defaultLang)||e.detection.defaultLang;return c&&u&&c in t&&l in t[c]?t[c][l][u]||n:t.default[l][n]||n}return r.switch=(t,n)=>{if(e.detection.defaultLang=t,n){if(!e.namespace[n])throw new Error(`Namespace ${n} not found`);e.namespace[n].defaultLang=t}},r}};return r})())); +//# sourceMappingURL=reacti18n-browser.min.js.map \ No newline at end of file diff --git a/browser/reacti18n-browser.min.js.map b/browser/reacti18n-browser.min.js.map new file mode 100644 index 0000000..3c9e56b --- /dev/null +++ b/browser/reacti18n-browser.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"reacti18n-browser.min.js","mappings":"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","sources":["webpack://reacti18n/webpack/universalModuleDefinition","webpack://reacti18n/external umd \"{}\"","webpack://reacti18n/webpack/bootstrap","webpack://reacti18n/webpack/runtime/compat get default export","webpack://reacti18n/webpack/runtime/define property getters","webpack://reacti18n/webpack/runtime/hasOwnProperty shorthand","webpack://reacti18n/webpack/runtime/make namespace object","webpack://reacti18n/./src/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"{}\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"reacti18n\", [\"{}\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"reacti18n\"] = factory(require(\"{}\"));\n\telse\n\t\troot[\"reacti18n\"] = factory(root[\"{}\"]);\n})(self, (__WEBPACK_EXTERNAL_MODULE__324__) => {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__324__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { readFileSync } from 'node:fs'\r\n\r\n// Helper function to read files\r\nfunction readFile(filePath: string): string {\r\n return readFileSync(filePath, 'utf-8')\r\n}\r\n\r\nfunction parseCookies(cookieHeader: string | undefined): Record {\r\n const cookies: Record = {}\r\n if (!cookieHeader) return cookies\r\n\r\n cookieHeader.split(';').forEach((cookie) => {\r\n const [name, ...rest] = cookie.split('=')\r\n if (name) {\r\n cookies[name.trim()] = decodeURIComponent(rest.join('='))\r\n }\r\n })\r\n\r\n return cookies\r\n}\r\n\r\nfunction parseQueryString(queryString: string): Record {\r\n const query: Record = {}\r\n if (!queryString) return query\r\n\r\n queryString\r\n .replace(/^\\?/, '')\r\n .split('&')\r\n .forEach((param) => {\r\n const [key, value] = param.split('=')\r\n if (key && value) {\r\n query[key] = decodeURIComponent(value)\r\n }\r\n })\r\n\r\n return query\r\n}\r\n\r\nfunction loadJSON(filePath: string): Promise> {\r\n return JSON.parse(readFile(filePath))\r\n}\r\n\r\ninterface I18nConfig {\r\n namespace: Record<\r\n string,\r\n {\r\n load: string\r\n type?: string\r\n storage?: string\r\n defaultLang?: string\r\n }\r\n >\r\n detection: {\r\n order: string[]\r\n defaultLang: string\r\n }\r\n}\r\n\r\nfunction fromCookie(cookies: string | undefined): string | null {\r\n const parsedCookies = parseCookies(cookies)\r\n return parsedCookies['lang'] || null\r\n}\r\n\r\nfunction fromPath(reqPath: string): string | null {\r\n const pathParts = reqPath.split('/')\r\n const lang = pathParts.find((part) => /^[a-z]{2}$/.test(part))\r\n return lang || null\r\n}\r\n\r\nfunction fromQuery(queryString: string): string | null {\r\n const parsedQuery = parseQueryString(queryString)\r\n return parsedQuery['lang'] || null\r\n}\r\n\r\nfunction detectLanguage(detectionConfig: I18nConfig['detection']) {\r\n const { order, defaultLang } = detectionConfig\r\n\r\n return (req: { headers: { cookie?: string }; url: string }) => {\r\n for (const method of order) {\r\n let lang: string | null = null\r\n if (method === 'cookie') {\r\n lang = fromCookie(req.headers.cookie)\r\n } else if (method === 'path') {\r\n lang = fromPath(req.url)\r\n } else if (method === 'query') {\r\n lang = fromQuery(req.url)\r\n }\r\n if (lang) {\r\n return lang\r\n }\r\n }\r\n return defaultLang\r\n }\r\n}\r\n\r\nfunction i18nInit(config: I18nConfig) {\r\n const languages: Record = {}\r\n for (const ns in config.namespace) {\r\n const namespaceConfig = config.namespace[ns]\r\n\r\n if (namespaceConfig) languages[ns] = loadJSON(namespaceConfig.load)\r\n else throw new Error('Invalid namespace configuration')\r\n }\r\n\r\n const detectLang = detectLanguage(config.detection)\r\n\r\n function t(key: string, req?: { headers: { cookie?: string }; url: string }): string {\r\n const [ns, langKey] = key.split('.')\r\n const lang =\r\n req && Object.keys(req).length\r\n ? detectLang(req)\r\n : ns\r\n ? config?.namespace?.[ns]?.defaultLang || config.detection.defaultLang\r\n : config.detection.defaultLang\r\n\r\n if (ns && langKey && ns in languages && lang in languages[ns]) {\r\n return languages[ns][lang][langKey] || key\r\n }\r\n\r\n return languages['default'][lang][key] || key\r\n }\r\n\r\n t.switch = (newLang: string, ns: string) => {\r\n config.detection.defaultLang = newLang\r\n\r\n if (ns) {\r\n if (config.namespace[ns]) {\r\n config.namespace[ns].defaultLang = newLang\r\n } else {\r\n throw new Error(`Namespace ${ns} not found`)\r\n }\r\n }\r\n }\r\n\r\n return t\r\n}\r\n\r\nexport default {\r\n init: i18nInit,\r\n}\r\n"],"names":["root","factory","exports","module","require","define","amd","self","__WEBPACK_EXTERNAL_MODULE__324__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","fromCookie","cookies","parsedCookies","cookieHeader","split","forEach","cookie","name","rest","trim","decodeURIComponent","join","parseCookies","fromQuery","queryString","parsedQuery","query","replace","param","parseQueryString","init","config","languages","ns","namespace","namespaceConfig","Error","filePath","load","JSON","parse","readFileSync","readFile","detectLang","detectionConfig","order","defaultLang","req","method","lang","headers","url","find","part","test","detectLanguage","detection","t","langKey","keys","length","switch","newLang"],"sourceRoot":""} \ No newline at end of file diff --git a/build.ts b/build.ts new file mode 100644 index 0000000..18445e8 --- /dev/null +++ b/build.ts @@ -0,0 +1,80 @@ +/* + This script is heavily inspired by `built.ts` used in @kaze-style/react and hono. + https://github.com/taishinaritomi/kaze-style/blob/main/scripts/build.ts and https://github.com/honojs/hono/blob/main/build.ts + MIT License + Copyright (c) 2022 Taishi Naritomi +*/ + +import { exec } from 'child_process' +import fs from 'fs' +import path from 'path' +import arg from 'arg' +import { build } from 'esbuild' +import type { Plugin, PluginBuild, BuildOptions } from 'esbuild' +import { glob } from 'glob' + +const args = arg({ + '--watch': Boolean, +}) + +const isWatch = args['--watch'] || false + +const entryPoints = glob.sync('./src/**/*.ts', { + ignore: ['./src/**/*.test.ts', './src/mod.ts', './src/deno/**/*.ts'], +}) + +/* + This plugin is inspired by the following. + https://github.com/evanw/esbuild/issues/622#issuecomment-769462611 +*/ +const addExtension = (extension: string = '.js', fileExtension: string = '.ts'): Plugin => ({ + name: 'add-extension', + setup(build: PluginBuild) { + build.onResolve({ filter: /.*/ }, (args) => { + if (args.importer) { + const p = path.join(args.resolveDir, args.path) + let tsPath = `${p}${fileExtension}` + + let importPath = '' + if (fs.existsSync(tsPath)) { + importPath = args.path + extension + } else { + tsPath = path.join(args.resolveDir, args.path, `index${fileExtension}`) + if (fs.existsSync(tsPath)) { + importPath = `${args.path}/index${extension}` + } + } + return { path: importPath, external: true } + } + }) + }, +}) + +const commonOptions: BuildOptions = { + watch: isWatch, + entryPoints, + logLevel: 'info', + platform: 'node', +} + +const cjsBuild = () => + build({ + ...commonOptions, + outbase: './src', + outdir: './dist/cjs', + format: 'cjs', + }) + +const esmBuild = () => + build({ + ...commonOptions, + bundle: true, + outbase: './src', + outdir: './dist', + format: 'esm', + plugins: [addExtension('.js')], + }) + +Promise.all([esmBuild(), cjsBuild()]) + +exec(`tsc ${isWatch ? '-w' : ''} --emitDeclarationOnly --declaration --project tsconfig.build.json`) diff --git a/bun.lockb b/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000..fb8a6713a41bd8fb6e77933d42f1ee4a88f1d644 GIT binary patch literal 228103 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 EfBX+w_y7O^ literal 0 HcmV?d00001 diff --git a/bunfig.toml b/bunfig.toml new file mode 100644 index 0000000..1fe9003 --- /dev/null +++ b/bunfig.toml @@ -0,0 +1,2 @@ +[install.lockfile] +print = "yarn" \ No newline at end of file diff --git a/jsr.json b/jsr.json new file mode 100644 index 0000000..78b6c0c --- /dev/null +++ b/jsr.json @@ -0,0 +1,22 @@ +{ + "name": "@fzn0x/reacti18n", + "version": "0.0.0", + "compilerOptions": { + "lib": ["dom", "dom.iterable", "deno.ns"] + }, + "unstable": ["sloppy-imports"], + "exports": { + ".": "./src/index.ts" + }, + "publish": { + "include": [ + "jsr.json", + "LICENSE", + "README.md", + "docs/CODE_OF_CONDUCT.md", + "docs/CONTRIBUTING.md", + "src/**/*.ts" + ], + "exclude": ["src/**/*.test.ts"] + } +} diff --git a/lang-admin.json b/lang-admin.json new file mode 100644 index 0000000..40feacc --- /dev/null +++ b/lang-admin.json @@ -0,0 +1,8 @@ +{ + "en": { + "hello": "hello world from admin" + }, + "de": { + "hello": "Guten morgen from admin" + } +} diff --git a/lang.json b/lang.json new file mode 100644 index 0000000..88bd282 --- /dev/null +++ b/lang.json @@ -0,0 +1,8 @@ +{ + "en": { + "hello": "hello world" + }, + "de": { + "hello": "Guten morgen" + } +} diff --git a/package.cjs.json b/package.cjs.json new file mode 100644 index 0000000..5bbefff --- /dev/null +++ b/package.cjs.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..e0c0d9b --- /dev/null +++ b/package.json @@ -0,0 +1,75 @@ +{ + "name": "reacti18n", + "version": "0.0.1", + "description": "Straightforward & less effort React i18n library.", + "main": "./dist/index.js", + "repository": { + "type": "git", + "url": "https://github.com/fzn0x/reacti18n.git" + }, + "type": "module", + "sideEffects": false, + "files": [ + "browser", + "dist", + "LICENSE", + "package.json", + "README.md" + ], + "author": { + "name": "Muhammad Fauzan", + "email": "developerfauzan@gmail.com", + "url": "https://fzn0x.dev/" + }, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/cjs/index.js" + } + }, + "types": "./dist/index.d.ts", + "engines": { + "node": ">=18" + }, + "scripts": { + "format:fix": "prettier --check --cache --write \"src/**/*.{js,ts,tsx}\"", + "format": "prettier --check --cache \"src/**/*.{js,ts,tsx}\"", + "lint": "eslint --ext js,ts,tsx src", + "lint:fix": "eslint --ext js,ts,tsx src --fix", + "copy:package.cjs.json": "cp ./package.cjs.json ./dist/cjs/package.json && cp ./package.cjs.json ./dist/types/package.json ", + "vitest:watch": "vitest --watch", + "test": "vitest", + "build": "rimraf dist && tsx ./build.ts && bun run copy:package.cjs.json && webpack", + "watch": "rimraf dist && tsx ./build.ts --watch && bun run copy:package.cjs.json", + "postbuild": "publint", + "release": "np", + "test:build": "bun run build && bun run test" + }, + "devDependencies": { + "@types/bun": "latest", + "@types/node": "^20.14.4", + "arg": "^5.0.2", + "esbuild": "^0.15.12", + "esbuild-register": "^3.5.0", + "eslint": "8.55.0", + "glob": "^10.4.1", + "np": "^10.0.5", + "prettier": "^3.3.3", + "publint": "^0.2.8", + "rimraf": "^5.0.5", + "ts-loader": "^9.5.1", + "tsx": "^4.15.6", + "typescript": "5.3.3", + "webpack": "^5.90.3", + "webpack-cli": "^5.1.4", + "vitest": "^1.6.0" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "license": "MIT", + "publishConfig": { + "registry": "https://registry.npmjs.org" + } +} diff --git a/src/index.test.ts b/src/index.test.ts new file mode 100644 index 0000000..012eef1 --- /dev/null +++ b/src/index.test.ts @@ -0,0 +1,38 @@ +import reacti18n from '../dist' + +describe('init', () => { + const t = reacti18n.init({ + namespace: { + default: { + load: './lang.json', + type: 'json', + storage: 'cookie', + defaultLang: 'en', + }, + admin: { + load: './lang-admin.json', + type: 'json', + storage: 'cookie', + defaultLang: 'en', + }, + }, + detection: { + order: ['cookie', 'path'], + defaultLang: 'en', + }, + }) + + it('switch language correctly', async () => { + t.switch('de', 'default') // Switched to de in default namespace + t.switch('de', 'admin') // Switched to de in admin namespace + + expect(t('hello')).toBe('Guten morgen') + expect(t('admin.hello')).toBe('Guten morgen from admin') + + t.switch('en', 'default') // Switched to en in default namespace + t.switch('en', 'admin') // Switched to en in admin namespace + + expect(t('hello')).toBe('hello world') + expect(t('admin.hello')).toBe('hello world from admin') + }) +}) diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..e9bce22 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,140 @@ +import { readFileSync } from 'node:fs' + +// Helper function to read files +function readFile(filePath: string): string { + return readFileSync(filePath, 'utf-8') +} + +function parseCookies(cookieHeader: string | undefined): Record { + const cookies: Record = {} + if (!cookieHeader) return cookies + + cookieHeader.split(';').forEach((cookie) => { + const [name, ...rest] = cookie.split('=') + if (name) { + cookies[name.trim()] = decodeURIComponent(rest.join('=')) + } + }) + + return cookies +} + +function parseQueryString(queryString: string): Record { + const query: Record = {} + if (!queryString) return query + + queryString + .replace(/^\?/, '') + .split('&') + .forEach((param) => { + const [key, value] = param.split('=') + if (key && value) { + query[key] = decodeURIComponent(value) + } + }) + + return query +} + +function loadJSON(filePath: string): Promise> { + return JSON.parse(readFile(filePath)) +} + +interface I18nConfig { + namespace: Record< + string, + { + load: string + type?: string + storage?: string + defaultLang?: string + } + > + detection: { + order: string[] + defaultLang: string + } +} + +function fromCookie(cookies: string | undefined): string | null { + const parsedCookies = parseCookies(cookies) + return parsedCookies['lang'] || null +} + +function fromPath(reqPath: string): string | null { + const pathParts = reqPath.split('/') + const lang = pathParts.find((part) => /^[a-z]{2}$/.test(part)) + return lang || null +} + +function fromQuery(queryString: string): string | null { + const parsedQuery = parseQueryString(queryString) + return parsedQuery['lang'] || null +} + +function detectLanguage(detectionConfig: I18nConfig['detection']) { + const { order, defaultLang } = detectionConfig + + return (req: { headers: { cookie?: string }; url: string }) => { + for (const method of order) { + let lang: string | null = null + if (method === 'cookie') { + lang = fromCookie(req.headers.cookie) + } else if (method === 'path') { + lang = fromPath(req.url) + } else if (method === 'query') { + lang = fromQuery(req.url) + } + if (lang) { + return lang + } + } + return defaultLang + } +} + +function i18nInit(config: I18nConfig) { + const languages: Record = {} + for (const ns in config.namespace) { + const namespaceConfig = config.namespace[ns] + + if (namespaceConfig) languages[ns] = loadJSON(namespaceConfig.load) + else throw new Error('Invalid namespace configuration') + } + + const detectLang = detectLanguage(config.detection) + + function t(key: string, req?: { headers: { cookie?: string }; url: string }): string { + const [ns, langKey] = key.split('.') + const lang = + req && Object.keys(req).length + ? detectLang(req) + : ns + ? config?.namespace?.[ns]?.defaultLang || config.detection.defaultLang + : config.detection.defaultLang + + if (ns && langKey && ns in languages && lang in languages[ns]) { + return languages[ns][lang][langKey] || key + } + + return languages['default'][lang][key] || key + } + + t.switch = (newLang: string, ns: string) => { + config.detection.defaultLang = newLang + + if (ns) { + if (config.namespace[ns]) { + config.namespace[ns].defaultLang = newLang + } else { + throw new Error(`Namespace ${ns} not found`) + } + } + } + + return t +} + +export default { + init: i18nInit, +} diff --git a/tsconfig.build.json b/tsconfig.build.json new file mode 100644 index 0000000..b3b0f71 --- /dev/null +++ b/tsconfig.build.json @@ -0,0 +1,5 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["types", "examples", "src/*.test.ts"], + "include": ["src/**/*"] +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..26a259a --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,41 @@ +{ + "compilerOptions": { + "target": "es2016", + "lib": ["es2015", "es2016", "es2017", "es2022", "DOM", "DOM.Iterable"], + "moduleDetection": "force", + "jsx": "react", + "rootDir": "./src", + "stripInternal": true, + "newLine": "lf", + "moduleResolution": "Bundler", + "baseUrl": "src", + "resolveJsonModule": false, + "declaration": true, + "sourceMap": true, + "outDir": "./dist", + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "strict": true, + "skipLibCheck": true, + "module": "ESNext", + "noImplicitReturns": true, + "noImplicitOverride": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedIndexedAccess": true, + "noPropertyAccessFromIndexSignature": true, + "noEmitOnError": true, + "useDefineForClassFields": true, + "forceConsistentCasingInFileNames": false, + + "declarationMap": true, + "types": ["vitest/globals"], + "paths": { + "reacti18n": ["dist"], + "*": ["*", "utils/*"] + } + }, + "exclude": ["dist"], + "include": ["src/**/*"] +} diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 0000000..f69f3cb --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,9 @@ +// vitest.config.ts +import { defineConfig } from 'vitest/config' + +export default defineConfig({ + test: { + include: ['**/src/**/*.test.ts'], + globals: true, + }, +}) diff --git a/webpack.config.ts b/webpack.config.ts new file mode 100644 index 0000000..30fdebe --- /dev/null +++ b/webpack.config.ts @@ -0,0 +1,32 @@ +// @ts-check +const path = require('path') + +module.exports = /** @type { import('webpack').Configuration } */ { + mode: 'production', + entry: './src/index.ts', + devtool: 'source-map', + output: { + library: { + name: 'reacti18n', + type: 'umd', + umdNamedDefine: true, + }, + path: path.resolve(__dirname, 'browser'), + filename: 'reacti18n-browser.min.js', + }, + externals: { + 'node:fs': '{}', + }, + resolve: { + extensionAlias: { + '.js': ['.js', '.ts'], + }, + extensions: ['.ts', '.js'], + }, + module: { + rules: [ + // all files with a `.ts`, `.cts`, `.mts` or `.tsx` extension will be handled by `ts-loader` + { test: /\.([cm]?ts|tsx)$/, loader: 'ts-loader' }, + ], + }, +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..f0bf2ae --- /dev/null +++ b/yarn.lock @@ -0,0 +1,4069 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 +# bun ./bun.lockb --hash: AF6D8856FFFE9274-57a4794eeac869b5-F41CF898CC4E23E2-314354f627cde315 + + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.22.13": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz" + integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== + dependencies: + picocolors "^1.0.0" + "@babel/highlight" "^7.24.7" + +"@babel/helper-validator-identifier@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz" + integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== + +"@babel/highlight@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz" + integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== + dependencies: + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + "@babel/helper-validator-identifier" "^7.24.7" + +"@discoveryjs/json-ext@^0.5.0": + version "0.5.7" + resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + +"@esbuild/aix-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz" + integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== + +"@esbuild/android-arm@0.15.18": + version "0.15.18" + resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz" + integrity sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw== + +"@esbuild/android-arm@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz" + integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== + +"@esbuild/android-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz" + integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== + +"@esbuild/android-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz" + integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== + +"@esbuild/darwin-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz" + integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== + +"@esbuild/darwin-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz" + integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== + +"@esbuild/freebsd-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz" + integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== + +"@esbuild/freebsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz" + integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== + +"@esbuild/linux-arm@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz" + integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== + +"@esbuild/linux-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz" + integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== + +"@esbuild/linux-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz" + integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== + +"@esbuild/linux-loong64@0.15.18": + version "0.15.18" + resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz" + integrity sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ== + +"@esbuild/linux-loong64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz" + integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== + +"@esbuild/linux-mips64el@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz" + integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== + +"@esbuild/linux-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz" + integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== + +"@esbuild/linux-riscv64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz" + integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== + +"@esbuild/linux-s390x@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz" + integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== + +"@esbuild/linux-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz" + integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== + +"@esbuild/netbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz" + integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== + +"@esbuild/openbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz" + integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== + +"@esbuild/sunos-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz" + integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== + +"@esbuild/win32-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz" + integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== + +"@esbuild/win32-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz" + integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== + +"@esbuild/win32-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz" + integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== + +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.0" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.6.1": + version "4.11.0" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz" + integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.55.0": + version "8.55.0" + resolved "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz" + integrity sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA== + +"@humanwhocodes/config-array@^0.11.13": + version "0.11.14" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== + dependencies: + debug "^4.3.1" + minimatch "^3.0.5" + "@humanwhocodes/object-schema" "^2.0.2" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.3" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== + +"@inquirer/figures@^1.0.3": + version "1.0.4" + resolved "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.4.tgz" + integrity sha512-R7Gsg6elpuqdn55fBH2y9oYzrU/yKrSmIsDX4ROT51vohrECFzTf2zw9BfUbOW8xjfmM2QbVoVYdTwhrtEKWSQ== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/trace-mapping" "^0.3.24" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/source-map@^0.3.3": + version "0.3.6" + resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz" + integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": + version "1.5.0" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@pnpm/config.env-replace@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz" + integrity sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w== + +"@pnpm/network.ca-file@^1.0.1": + version "1.0.2" + resolved "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz" + integrity sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA== + dependencies: + graceful-fs "4.2.10" + +"@pnpm/npm-conf@^2.1.0": + version "2.2.2" + resolved "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz" + integrity sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA== + dependencies: + "@pnpm/config.env-replace" "^1.1.0" + "@pnpm/network.ca-file" "^1.0.1" + config-chain "^1.1.11" + +"@rollup/rollup-android-arm-eabi@4.19.0": + version "4.19.0" + resolved "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.19.0.tgz" + integrity sha512-JlPfZ/C7yn5S5p0yKk7uhHTTnFlvTgLetl2VxqE518QgyM7C9bSfFTYvB/Q/ftkq0RIPY4ySxTz+/wKJ/dXC0w== + +"@rollup/rollup-android-arm64@4.19.0": + version "4.19.0" + resolved "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.19.0.tgz" + integrity sha512-RDxUSY8D1tWYfn00DDi5myxKgOk6RvWPxhmWexcICt/MEC6yEMr4HNCu1sXXYLw8iAsg0D44NuU+qNq7zVWCrw== + +"@rollup/rollup-darwin-arm64@4.19.0": + version "4.19.0" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.19.0.tgz" + integrity sha512-emvKHL4B15x6nlNTBMtIaC9tLPRpeA5jMvRLXVbl/W9Ie7HhkrE7KQjvgS9uxgatL1HmHWDXk5TTS4IaNJxbAA== + +"@rollup/rollup-darwin-x64@4.19.0": + version "4.19.0" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.19.0.tgz" + integrity sha512-fO28cWA1dC57qCd+D0rfLC4VPbh6EOJXrreBmFLWPGI9dpMlER2YwSPZzSGfq11XgcEpPukPTfEVFtw2q2nYJg== + +"@rollup/rollup-linux-arm-gnueabihf@4.19.0": + version "4.19.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.19.0.tgz" + integrity sha512-2Rn36Ubxdv32NUcfm0wB1tgKqkQuft00PtM23VqLuCUR4N5jcNWDoV5iBC9jeGdgS38WK66ElncprqgMUOyomw== + +"@rollup/rollup-linux-arm-musleabihf@4.19.0": + version "4.19.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.19.0.tgz" + integrity sha512-gJuzIVdq/X1ZA2bHeCGCISe0VWqCoNT8BvkQ+BfsixXwTOndhtLUpOg0A1Fcx/+eA6ei6rMBzlOz4JzmiDw7JQ== + +"@rollup/rollup-linux-arm64-gnu@4.19.0": + version "4.19.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.19.0.tgz" + integrity sha512-0EkX2HYPkSADo9cfeGFoQ7R0/wTKb7q6DdwI4Yn/ULFE1wuRRCHybxpl2goQrx4c/yzK3I8OlgtBu4xvted0ug== + +"@rollup/rollup-linux-arm64-musl@4.19.0": + version "4.19.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.19.0.tgz" + integrity sha512-GlIQRj9px52ISomIOEUq/IojLZqzkvRpdP3cLgIE1wUWaiU5Takwlzpz002q0Nxxr1y2ZgxC2obWxjr13lvxNQ== + +"@rollup/rollup-linux-powerpc64le-gnu@4.19.0": + version "4.19.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.19.0.tgz" + integrity sha512-N6cFJzssruDLUOKfEKeovCKiHcdwVYOT1Hs6dovDQ61+Y9n3Ek4zXvtghPPelt6U0AH4aDGnDLb83uiJMkWYzQ== + +"@rollup/rollup-linux-riscv64-gnu@4.19.0": + version "4.19.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.19.0.tgz" + integrity sha512-2DnD3mkS2uuam/alF+I7M84koGwvn3ZVD7uG+LEWpyzo/bq8+kKnus2EVCkcvh6PlNB8QPNFOz6fWd5N8o1CYg== + +"@rollup/rollup-linux-s390x-gnu@4.19.0": + version "4.19.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.19.0.tgz" + integrity sha512-D6pkaF7OpE7lzlTOFCB2m3Ngzu2ykw40Nka9WmKGUOTS3xcIieHe82slQlNq69sVB04ch73thKYIWz/Ian8DUA== + +"@rollup/rollup-linux-x64-gnu@4.19.0": + version "4.19.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.19.0.tgz" + integrity sha512-HBndjQLP8OsdJNSxpNIN0einbDmRFg9+UQeZV1eiYupIRuZsDEoeGU43NQsS34Pp166DtwQOnpcbV/zQxM+rWA== + +"@rollup/rollup-linux-x64-musl@4.19.0": + version "4.19.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.19.0.tgz" + integrity sha512-HxfbvfCKJe/RMYJJn0a12eiOI9OOtAUF4G6ozrFUK95BNyoJaSiBjIOHjZskTUffUrB84IPKkFG9H9nEvJGW6A== + +"@rollup/rollup-win32-arm64-msvc@4.19.0": + version "4.19.0" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.19.0.tgz" + integrity sha512-HxDMKIhmcguGTiP5TsLNolwBUK3nGGUEoV/BO9ldUBoMLBssvh4J0X8pf11i1fTV7WShWItB1bKAKjX4RQeYmg== + +"@rollup/rollup-win32-ia32-msvc@4.19.0": + version "4.19.0" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.19.0.tgz" + integrity sha512-xItlIAZZaiG/u0wooGzRsx11rokP4qyc/79LkAOdznGRAbOFc+SfEdfUOszG1odsHNgwippUJavag/+W/Etc6Q== + +"@rollup/rollup-win32-x64-msvc@4.19.0": + version "4.19.0" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.19.0.tgz" + integrity sha512-xNo5fV5ycvCCKqiZcpB65VMR11NJB+StnxHz20jdqRAktfdfzhgjTiJ2doTDQE/7dqGaV5I7ZGqKpgph6lCIag== + +"@samverschueren/stream-to-observable@^0.3.0": + version "0.3.1" + resolved "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz" + integrity sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ== + dependencies: + any-observable "^0.3.0" + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@types/bun@latest": + version "1.1.6" + resolved "https://registry.npmjs.org/@types/bun/-/bun-1.1.6.tgz" + integrity sha512-uJgKjTdX0GkWEHZzQzFsJkWp5+43ZS7HC8sZPFnOwnSo1AsNl2q9o2bFeS23disNDqbggEgyFkKCHl/w8iZsMA== + dependencies: + bun-types "1.1.17" + +"@types/eslint@*": + version "8.56.10" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz" + integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/eslint-scope@^3.7.3": + version "3.7.7" + resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz" + integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/estree@*", "@types/estree@1.0.5", "@types/estree@^1.0.0", "@types/estree@^1.0.5": + version "1.0.5" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + +"@types/json-schema@*", "@types/json-schema@^7.0.8": + version "7.0.15" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/node@~20.12.8": + version "20.12.14" + resolved "https://registry.npmjs.org/@types/node/-/node-20.12.14.tgz" + integrity sha512-scnD59RpYD91xngrQQLGkE+6UrHUPzeKZWhhjBSa3HSkwjbQc38+q3RoIVEwxQGRw3M+j5hpNAM+lgV3cVormg== + dependencies: + undici-types "~5.26.4" + +"@types/node@*", "@types/node@^20.14.4": + version "20.14.11" + resolved "https://registry.npmjs.org/@types/node/-/node-20.14.11.tgz" + integrity sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA== + dependencies: + undici-types "~5.26.4" + +"@types/normalize-package-data@^2.4.3": + version "2.4.4" + resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz" + integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== + +"@types/ws@~8.5.10": + version "8.5.11" + resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.11.tgz" + integrity sha512-4+q7P5h3SpJxaBft0Dzpbr6lmMaqh0Jr2tbhJZ/luAwvD7ohSCniYkwz/pLxuT2h0EOa6QADgJj1Ko+TzRfZ+w== + dependencies: + "@types/node" "*" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +"@vitest/expect@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.0.tgz" + integrity sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ== + dependencies: + chai "^4.3.10" + "@vitest/spy" "1.6.0" + "@vitest/utils" "1.6.0" + +"@vitest/runner@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.0.tgz" + integrity sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg== + dependencies: + pathe "^1.1.1" + p-limit "^5.0.0" + "@vitest/utils" "1.6.0" + +"@vitest/snapshot@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.0.tgz" + integrity sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ== + dependencies: + pathe "^1.1.1" + magic-string "^0.30.5" + pretty-format "^29.7.0" + +"@vitest/spy@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.0.tgz" + integrity sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw== + dependencies: + tinyspy "^2.2.0" + +"@vitest/utils@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.0.tgz" + integrity sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw== + dependencies: + loupe "^2.3.7" + estree-walker "^3.0.3" + pretty-format "^29.7.0" + diff-sequences "^29.6.3" + +"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": + version "1.12.1" + resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz" + integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + +"@webassemblyjs/floating-point-hex-parser@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz" + integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== + +"@webassemblyjs/helper-api-error@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz" + integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== + +"@webassemblyjs/helper-buffer@1.12.1": + version "1.12.1" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz" + integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== + +"@webassemblyjs/helper-numbers@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz" + integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz" + integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== + +"@webassemblyjs/helper-wasm-section@1.12.1": + version "1.12.1" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz" + integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/wasm-gen" "1.12.1" + +"@webassemblyjs/ieee754@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz" + integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz" + integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz" + integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== + +"@webassemblyjs/wasm-edit@^1.12.1": + version "1.12.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz" + integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.12.1" + "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/wasm-opt" "1.12.1" + "@webassemblyjs/wasm-parser" "1.12.1" + "@webassemblyjs/wast-printer" "1.12.1" + +"@webassemblyjs/wasm-gen@1.12.1": + version "1.12.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz" + integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wasm-opt@1.12.1": + version "1.12.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz" + integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" + "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/wasm-parser" "1.12.1" + +"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": + version "1.12.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz" + integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wast-printer@1.12.1": + version "1.12.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz" + integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@xtuc/long" "4.2.2" + +"@webpack-cli/configtest@^2.1.1": + version "2.1.1" + resolved "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz" + integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== + +"@webpack-cli/info@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz" + integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== + +"@webpack-cli/serve@^2.0.5": + version "2.0.5" + resolved "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz" + integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.11.0, acorn@^8.11.3, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: + version "8.12.1" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz" + integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== + +acorn-import-attributes@^1.9.5: + version "1.9.5" + resolved "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz" + integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.3.2: + version "8.3.3" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz" + integrity sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw== + dependencies: + acorn "^8.11.0" + +aggregate-error@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz" + integrity sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w== + dependencies: + clean-stack "^4.0.0" + indent-string "^5.0.0" + +ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + uri-js "^4.2.2" + fast-deep-equal "^3.1.1" + json-schema-traverse "^0.4.1" + fast-json-stable-stringify "^2.0.0" + +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ansi-align@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== + dependencies: + string-width "^4.1.0" + +ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-escapes@^4.2.1, ansi-escapes@^4.3.2: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-escapes@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz" + integrity sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA== + dependencies: + type-fest "^1.0.2" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== + +ansi-regex@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== + +ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +any-observable@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz" + integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== + +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +boxen@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz" + integrity sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog== + dependencies: + chalk "^5.2.0" + camelcase "^7.0.1" + cli-boxes "^3.0.0" + type-fest "^2.13.0" + wrap-ansi "^8.1.0" + ansi-align "^3.0.1" + widest-line "^4.0.1" + string-width "^5.1.2" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +"browserslist@>= 4.21.0", browserslist@^4.21.10: + version "4.23.2" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz" + integrity sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA== + dependencies: + caniuse-lite "^1.0.30001640" + electron-to-chromium "^1.4.820" + node-releases "^2.0.14" + update-browserslist-db "^1.1.0" + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +bun-types@1.1.17: + version "1.1.17" + resolved "https://registry.npmjs.org/bun-types/-/bun-types-1.1.17.tgz" + integrity sha512-Z4+OplcSd/YZq7ZsrfD00DKJeCwuNY96a1IDJyR73+cTBaFIS7SC6LhpY/W3AMEXO9iYq5NJ58WAwnwL1p5vKg== + dependencies: + "@types/ws" "~8.5.10" + "@types/node" "~20.12.8" + +bundle-name@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz" + integrity sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q== + dependencies: + run-applescript "^7.0.0" + +cac@^6.7.14: + version "6.7.14" + resolved "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz" + integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz" + integrity sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== + +caniuse-lite@^1.0.30001640: + version "1.0.30001642" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz" + integrity sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA== + +chai@^4.3.10: + version "4.4.1" + resolved "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz" + integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.3" + deep-eql "^4.1.3" + get-func-name "^2.0.2" + loupe "^2.3.6" + pathval "^1.1.1" + type-detect "^4.0.8" + +chalk@^1.0.0, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== + dependencies: + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + ansi-styles "^2.2.1" + supports-color "^2.0.0" + escape-string-regexp "^1.0.2" + +chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + supports-color "^5.3.0" + escape-string-regexp "^1.0.5" + +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^5.2.0, chalk@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + +chalk-template@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/chalk-template/-/chalk-template-1.1.0.tgz" + integrity sha512-T2VJbcDuZQ0Tb2EWwSotMPJjgpy1/tGee1BTpUNsGZ/qgNjV2t7Mvu+d4600U564nbLesN1x2dPL+xii174Ekg== + dependencies: + chalk "^5.2.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +check-error@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz" + integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== + dependencies: + get-func-name "^2.0.2" + +chrome-trace-event@^1.0.2: + version "1.0.4" + resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz" + integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== + +clean-stack@^4.0.0: + version "4.2.0" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz" + integrity sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg== + dependencies: + escape-string-regexp "5.0.0" + +cli-boxes@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz" + integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== + +cli-cursor@^2.0.0, cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz" + integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== + dependencies: + restore-cursor "^2.0.0" + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.5.0: + version "2.9.2" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + +cli-truncate@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz" + integrity sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg== + dependencies: + slice-ansi "0.0.4" + string-width "^1.0.1" + +cli-width@^2.0.0: + version "2.2.1" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + +cli-width@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz" + integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ== + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz" + integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colorette@^2.0.14: + version "2.0.20" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^10.0.1: + version "10.0.1" + resolved "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +confbox@^0.1.7: + version "0.1.7" + resolved "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz" + integrity sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA== + +config-chain@^1.1.11: + version "1.1.13" + resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== + dependencies: + proto-list "~1.2.1" + ini "^1.3.4" + +configstore@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz" + integrity sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA== + dependencies: + dot-prop "^6.0.1" + graceful-fs "^4.2.6" + xdg-basedir "^5.0.1" + unique-string "^3.0.0" + write-file-atomic "^3.0.3" + +cosmiconfig@^8.3.6: + version "8.3.6" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== + dependencies: + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + path-type "^4.0.0" + +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-random-string@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz" + integrity sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA== + dependencies: + type-fest "^1.0.1" + +date-fns@^1.27.2: + version "1.30.1" + resolved "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz" + integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== + +debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.5" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz" + integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== + dependencies: + ms "2.1.2" + +deep-eql@^4.1.3: + version "4.1.4" + resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz" + integrity sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg== + dependencies: + type-detect "^4.0.0" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +default-browser@^5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz" + integrity sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg== + dependencies: + bundle-name "^4.1.0" + default-browser-id "^5.0.0" + +default-browser-id@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz" + integrity sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA== + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +define-lazy-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz" + integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== + +del@^7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/del/-/del-7.1.0.tgz" + integrity sha512-v2KyNk7efxhlyHpjEvfyxaAihKKK0nWCuf6ZtqZcFFpQRG0bJ12Qsr0RpvsICMjAAZ8DOVCxrlqpxISlMHC4Kg== + dependencies: + globby "^13.1.2" + graceful-fs "^4.2.10" + is-glob "^4.0.3" + is-path-cwd "^3.0.0" + is-path-inside "^4.0.0" + p-map "^5.5.0" + rimraf "^3.0.2" + slash "^4.0.0" + +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dot-prop@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz" + integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== + dependencies: + is-obj "^2.0.0" + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +electron-to-chromium@^1.4.820: + version "1.4.832" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.832.tgz" + integrity sha512-cTen3SB0H2SGU7x467NRe1eVcQgcuS6jckKfWJHia2eo0cHIGOqHoAxevIYZD4eRHcWjkvFzo93bi3vJ9W+1lA== + +elegant-spinner@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz" + integrity sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +enhanced-resolve@^5.0.0, enhanced-resolve@^5.17.0: + version "5.17.0" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz" + integrity sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +envinfo@^7.7.3: + version "7.13.0" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz" + integrity sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-module-lexer@^1.2.1: + version "1.5.4" + resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz" + integrity sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw== + +esbuild@^0.15.12: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz" + integrity sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q== + optionalDependencies: + esbuild-linux-32 "0.15.18" + esbuild-linux-64 "0.15.18" + esbuild-sunos-64 "0.15.18" + esbuild-darwin-64 "0.15.18" + esbuild-linux-arm "0.15.18" + esbuild-netbsd-64 "0.15.18" + esbuild-android-64 "0.15.18" + esbuild-freebsd-64 "0.15.18" + esbuild-openbsd-64 "0.15.18" + esbuild-windows-32 "0.15.18" + esbuild-windows-64 "0.15.18" + esbuild-linux-arm64 "0.15.18" + esbuild-linux-s390x "0.15.18" + "@esbuild/android-arm" "0.15.18" + esbuild-darwin-arm64 "0.15.18" + esbuild-android-arm64 "0.15.18" + esbuild-freebsd-arm64 "0.15.18" + esbuild-linux-ppc64le "0.15.18" + esbuild-linux-riscv64 "0.15.18" + esbuild-windows-arm64 "0.15.18" + "@esbuild/linux-loong64" "0.15.18" + esbuild-linux-mips64le "0.15.18" + +"esbuild@>=0.12 <1", esbuild@^0.21.3, esbuild@~0.21.5: + version "0.21.5" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz" + integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw== + optionalDependencies: + "@esbuild/aix-ppc64" "0.21.5" + "@esbuild/linux-arm" "0.21.5" + "@esbuild/linux-x64" "0.21.5" + "@esbuild/sunos-x64" "0.21.5" + "@esbuild/win32-x64" "0.21.5" + "@esbuild/darwin-x64" "0.21.5" + "@esbuild/linux-ia32" "0.21.5" + "@esbuild/netbsd-x64" "0.21.5" + "@esbuild/win32-ia32" "0.21.5" + "@esbuild/android-arm" "0.21.5" + "@esbuild/android-x64" "0.21.5" + "@esbuild/freebsd-x64" "0.21.5" + "@esbuild/linux-arm64" "0.21.5" + "@esbuild/linux-ppc64" "0.21.5" + "@esbuild/linux-s390x" "0.21.5" + "@esbuild/openbsd-x64" "0.21.5" + "@esbuild/win32-arm64" "0.21.5" + "@esbuild/darwin-arm64" "0.21.5" + "@esbuild/android-arm64" "0.21.5" + "@esbuild/freebsd-arm64" "0.21.5" + "@esbuild/linux-loong64" "0.21.5" + "@esbuild/linux-riscv64" "0.21.5" + "@esbuild/linux-mips64el" "0.21.5" + +esbuild-android-64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz" + integrity sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA== + +esbuild-android-arm64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz" + integrity sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ== + +esbuild-darwin-64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz" + integrity sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg== + +esbuild-darwin-arm64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz" + integrity sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA== + +esbuild-freebsd-64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz" + integrity sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA== + +esbuild-freebsd-arm64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz" + integrity sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA== + +esbuild-linux-32@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz" + integrity sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg== + +esbuild-linux-64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz" + integrity sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw== + +esbuild-linux-arm@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz" + integrity sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA== + +esbuild-linux-arm64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz" + integrity sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug== + +esbuild-linux-mips64le@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz" + integrity sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ== + +esbuild-linux-ppc64le@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz" + integrity sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w== + +esbuild-linux-riscv64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz" + integrity sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg== + +esbuild-linux-s390x@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz" + integrity sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ== + +esbuild-netbsd-64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz" + integrity sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg== + +esbuild-openbsd-64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz" + integrity sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ== + +esbuild-register@^3.5.0: + version "3.5.0" + resolved "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.5.0.tgz" + integrity sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A== + dependencies: + debug "^4.3.4" + +esbuild-sunos-64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz" + integrity sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw== + +esbuild-windows-32@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz" + integrity sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ== + +esbuild-windows-64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz" + integrity sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw== + +esbuild-windows-arm64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz" + integrity sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ== + +escalade@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + +escape-goat@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz" + integrity sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg== + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escape-string-regexp@5.0.0, escape-string-regexp@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz" + integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== + +eslint@8.55.0, "eslint@^6.0.0 || ^7.0.0 || >=8.0.0": + version "8.55.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz" + integrity sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA== + dependencies: + ajv "^6.12.4" + levn "^0.4.1" + chalk "^4.0.0" + debug "^4.3.2" + espree "^9.6.1" + ignore "^5.2.0" + esquery "^1.4.2" + esutils "^2.0.2" + find-up "^5.0.0" + globals "^13.19.0" + is-glob "^4.0.0" + js-yaml "^4.1.0" + doctrine "^3.0.0" + graphemer "^1.4.0" + minimatch "^3.1.2" + "@eslint/js" "8.55.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + cross-spawn "^7.0.2" + glob-parent "^6.0.2" + imurmurhash "^0.1.4" + eslint-scope "^7.2.2" + lodash.merge "^4.6.2" + is-path-inside "^3.0.3" + fast-deep-equal "^3.1.3" + natural-compare "^1.4.0" + "@eslint/eslintrc" "^2.1.4" + "@nodelib/fs.walk" "^1.2.8" + file-entry-cache "^6.0.1" + eslint-visitor-keys "^3.4.3" + escape-string-regexp "^4.0.0" + "@ungap/structured-clone" "^1.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@humanwhocodes/config-array" "^0.11.13" + "@eslint-community/eslint-utils" "^4.2.0" + "@humanwhocodes/module-importer" "^1.0.1" + json-stable-stringify-without-jsonify "^1.0.1" + +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esquery@^1.4.2: + version "1.6.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz" + integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== + dependencies: + "@types/estree" "^1.0.0" + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +execa@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz" + integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== + dependencies: + onetime "^6.0.0" + is-stream "^3.0.0" + get-stream "^8.0.1" + cross-spawn "^7.0.3" + signal-exit "^4.1.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + human-signals "^5.0.0" + strip-final-newline "^3.0.0" + +exit-hook@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/exit-hook/-/exit-hook-4.0.0.tgz" + integrity sha512-Fqs7ChZm72y40wKjOFXBKg7nJZvQJmewP5/7LtePDdnah/+FH9Hp5sgMujSCMPXlxOAW2//1jrW9pnsY7o20vQ== + +external-editor@^3.0.3, external-editor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.3.0: + version "3.3.2" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastest-levenshtein@^1.0.12: + version "1.0.16" + resolved "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + +figures@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz" + integrity sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ== + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz" + integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== + dependencies: + escape-string-regexp "^1.0.5" + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +find-up-simple@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz" + integrity sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw== + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flatted@^3.2.9: + version "3.3.1" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== + +foreground-child@^3.1.0: + version "3.2.1" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz" + integrity sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +get-func-name@^2.0.1, get-func-name@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== + +get-stream@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz" + integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== + +get-tsconfig@^4.7.5: + version "4.7.6" + resolved "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.6.tgz" + integrity sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA== + dependencies: + resolve-pkg-maps "^1.0.0" + +github-url-from-git@^1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/github-url-from-git/-/github-url-from-git-1.5.0.tgz" + integrity sha512-WWOec4aRI7YAykQ9+BHmzjyNlkfJFG8QLXnDTsLz/kZefq7qkzdfo4p6fkYYMIq1aj+gZcQs/1HQhQh3DPPxlQ== + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + once "^1.3.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + fs.realpath "^1.0.0" + path-is-absolute "^1.0.0" + +glob@^8.0.1: + version "8.1.0" + resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + once "^1.3.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + fs.realpath "^1.0.0" + +glob@^10.3.7, glob@^10.4.1: + version "10.4.5" + resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + minipass "^7.1.2" + jackspeak "^3.1.2" + minimatch "^9.0.4" + path-scurry "^1.11.1" + foreground-child "^3.1.0" + package-json-from-dist "^1.0.0" + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +global-directory@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz" + integrity sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q== + dependencies: + ini "4.1.1" + +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globby@^13.1.2: + version "13.2.2" + resolved "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz" + integrity sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w== + dependencies: + slash "^4.0.0" + ignore "^5.2.4" + merge2 "^1.4.1" + dir-glob "^3.0.1" + fast-glob "^3.3.0" + +graceful-fs@4.2.10: + version "4.2.10" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +graceful-fs@^4.1.2, graceful-fs@^4.2.10, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6: + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== + dependencies: + ansi-regex "^2.0.0" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +hosted-git-info@^7.0.0, hosted-git-info@^7.0.1: + version "7.0.2" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz" + integrity sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w== + dependencies: + lru-cache "^10.0.1" + +human-signals@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz" + integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== + +iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.2.0, ignore@^5.2.4: + version "5.3.1" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== + +ignore-walk@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz" + integrity sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw== + dependencies: + minimatch "^5.0.1" + +ignore-walk@^6.0.4: + version "6.0.5" + resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz" + integrity sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A== + dependencies: + minimatch "^9.0.0" + +import-fresh@^3.2.1, import-fresh@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-lazy@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz" + integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== + +import-local@^3.0.2, import-local@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^3.0.0: + version "3.2.0" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz" + integrity sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ== + +indent-string@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz" + integrity sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg== + +index-to-position@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/index-to-position/-/index-to-position-0.1.2.tgz" + integrity sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3, inherits@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@^1.3.4, ini@~1.3.0: + version "1.3.8" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +ini@4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz" + integrity sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g== + +inquirer@^6.2.1: + version "6.5.2" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz" + integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== + dependencies: + rxjs "^6.4.0" + chalk "^2.4.2" + lodash "^4.17.12" + figures "^2.0.0" + through "^2.3.6" + cli-width "^2.0.0" + run-async "^2.2.0" + cli-cursor "^2.1.0" + strip-ansi "^5.1.0" + mute-stream "0.0.7" + ansi-escapes "^3.2.0" + string-width "^2.1.0" + external-editor "^3.0.3" + +inquirer@^7.0.0: + version "7.3.3" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz" + integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== + dependencies: + rxjs "^6.6.0" + chalk "^4.1.0" + lodash "^4.17.19" + figures "^3.0.0" + through "^2.3.6" + cli-width "^3.0.0" + run-async "^2.4.0" + cli-cursor "^3.1.0" + strip-ansi "^6.0.0" + mute-stream "0.0.8" + ansi-escapes "^4.2.1" + string-width "^4.1.0" + external-editor "^3.0.3" + +inquirer@^9.2.15: + version "9.3.6" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-9.3.6.tgz" + integrity sha512-riK/iQB2ctwkpWYgjjWIRv3MBLt2gzb2Sj0JNQNbyTXgyXsLWcDPJ5WS5ZDTCx7BRFnJsARtYh+58fjP5M2Y0Q== + dependencies: + ora "^5.4.1" + rxjs "^7.8.1" + cli-width "^4.1.0" + run-async "^3.0.0" + wrap-ansi "^6.2.0" + strip-ansi "^6.0.1" + mute-stream "1.0.0" + ansi-escapes "^4.3.2" + string-width "^4.2.3" + external-editor "^3.1.0" + yoctocolors-cjs "^2.1.2" + "@inquirer/figures" "^1.0.3" + +inquirer-autosubmit-prompt@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/inquirer-autosubmit-prompt/-/inquirer-autosubmit-prompt-0.2.0.tgz" + integrity sha512-mzNrusCk5L6kSzlN0Ioddn8yzrhYNLli+Sn2ZxMuLechMYAzakiFCIULxsxlQb5YKzthLGfrFACcWoAvM7p04Q== + dependencies: + chalk "^2.4.1" + inquirer "^6.2.1" + rxjs "^6.3.3" + +interpret@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz" + integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-core-module@^2.13.0: + version "2.15.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz" + integrity sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA== + dependencies: + hasown "^2.0.2" + +is-docker@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz" + integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" + integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-in-ci@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/is-in-ci/-/is-in-ci-0.1.0.tgz" + integrity sha512-d9PXLEY0v1iJ64xLiQMJ51J128EYHAaOR4yZqQi8aHGfw6KgifM3/Viw1oZZ1GCVmb3gBuyhLyHj0HgR2DhSXQ== + +is-inside-container@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz" + integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== + dependencies: + is-docker "^3.0.0" + +is-installed-globally@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-1.0.0.tgz" + integrity sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ== + dependencies: + global-directory "^4.0.1" + is-path-inside "^4.0.0" + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-interactive@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz" + integrity sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ== + +is-npm@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz" + integrity sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-observable@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz" + integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== + dependencies: + symbol-observable "^1.1.0" + +is-path-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-3.0.0.tgz" + integrity sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-path-inside@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz" + integrity sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-promise@^2.1.0: + version "2.2.2" + resolved "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + +is-scoped@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-scoped/-/is-scoped-3.0.0.tgz" + integrity sha512-ezxLUq30kiTvP0w/5n9tj4qTOKlrA07Oty1hwTQ+lcqw11x6uc8sp7VRb2OVGRzKfCHZ2A22T5Zsau/Q2Akb0g== + dependencies: + scoped-regex "^3.0.0" + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-unicode-supported@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz" + integrity sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ== + +is-url-superb@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/is-url-superb/-/is-url-superb-6.1.0.tgz" + integrity sha512-LXdhGlYqUPdvEyIhWPEEwYYK3yrUiPcBjmFGlZNv1u5GtIL5qQRf7ddDyPNAvsMFqdzS923FROpTQU97tLe3JQ== + +is-wsl@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz" + integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== + dependencies: + is-inside-container "^1.0.0" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +issue-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/issue-regex/-/issue-regex-4.1.0.tgz" + integrity sha512-X3HBmm7+Th+l4/kMtqwcHHgELD0Lfl0Ina6S3+grr+mKmTxsrM84NAO1UuRPIxIbGLIl3TCEu45S1kdu21HYbQ== + +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-tokens@^9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz" + integrity sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +ky@^1.2.0: + version "1.4.0" + resolved "https://registry.npmjs.org/ky/-/ky-1.4.0.tgz" + integrity sha512-tPhhoGUiEiU/WXR4rt8klIoLdnTtyu+9jVKHd/wauEjYud32jyn63mzKWQweaQrHWxBQtYoVtdcEnYX1LosnFQ== + +latest-version@^9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/latest-version/-/latest-version-9.0.0.tgz" + integrity sha512-7W0vV3rqv5tokqkBAFV1LbR7HPOWzXQDpDgEuib/aJ1jsZZx6x3c2mBI+TJhJzOhkGeaLbCKEHXEXLfirtG2JA== + dependencies: + package-json "^10.0.0" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +listr@^0.14.2, listr@^0.14.3: + version "0.14.3" + resolved "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz" + integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== + dependencies: + "@samverschueren/stream-to-observable" "^0.3.0" + is-observable "^1.1.0" + is-promise "^2.1.0" + is-stream "^1.1.0" + listr-silent-renderer "^1.1.1" + listr-update-renderer "^0.5.0" + listr-verbose-renderer "^0.5.0" + p-map "^2.0.0" + rxjs "^6.3.3" + +listr-input@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/listr-input/-/listr-input-0.2.1.tgz" + integrity sha512-oa8iVG870qJq+OuuMK3DjGqFcwsK1SDu+kULp9kEq09TY231aideIZenr3lFOQdASpAr6asuyJBbX62/a3IIhg== + dependencies: + inquirer "^7.0.0" + inquirer-autosubmit-prompt "^0.2.0" + rxjs "^6.5.3" + through "^2.3.8" + +listr-silent-renderer@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz" + integrity sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA== + +listr-update-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz" + integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + elegant-spinner "^1.0.1" + figures "^1.7.0" + indent-string "^3.0.0" + log-symbols "^1.0.2" + log-update "^2.3.0" + strip-ansi "^3.0.1" + +listr-verbose-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz" + integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== + dependencies: + chalk "^2.4.1" + cli-cursor "^2.1.0" + date-fns "^1.27.2" + figures "^2.0.0" + +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + +local-pkg@^0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz" + integrity sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg== + dependencies: + mlly "^1.4.2" + pkg-types "^1.0.3" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash@^4.17.12, lodash@^4.17.19: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.zip@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz" + integrity sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg== + +log-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz" + integrity sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ== + dependencies: + chalk "^1.0.0" + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +log-symbols@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz" + integrity sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw== + dependencies: + chalk "^5.3.0" + is-unicode-supported "^1.3.0" + +log-update@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz" + integrity sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg== + dependencies: + ansi-escapes "^3.0.0" + cli-cursor "^2.0.0" + wrap-ansi "^3.0.1" + +loupe@^2.3.6, loupe@^2.3.7: + version "2.3.7" + resolved "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz" + integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== + dependencies: + get-func-name "^2.0.1" + +lru-cache@^10.0.1, lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + +magic-string@^0.30.5: + version "0.30.10" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz" + integrity sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + +meow@^13.2.0: + version "13.2.0" + resolved "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz" + integrity sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.0, micromatch@^4.0.4: + version "4.0.7" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz" + integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.27: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + +mimic-function@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz" + integrity sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA== + +minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.0, minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.0: + version "1.2.8" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +mlly@^1.4.2, mlly@^1.7.1: + version "1.7.1" + resolved "https://registry.npmjs.org/mlly/-/mlly-1.7.1.tgz" + integrity sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA== + dependencies: + acorn "^8.11.3" + pathe "^1.1.2" + pkg-types "^1.1.1" + ufo "^1.5.3" + +mri@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz" + integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +mute-stream@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz" + integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== + +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +new-github-release-url@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/new-github-release-url/-/new-github-release-url-2.0.0.tgz" + integrity sha512-NHDDGYudnvRutt/VhKFlX26IotXe1w0cmkDm6JGquh5bz/bDTw0LufSmH/GxTjEdpHEO+bVKFTwdrcGa/9XlKQ== + dependencies: + type-fest "^2.5.1" + +node-releases@^2.0.14: + version "2.0.17" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.17.tgz" + integrity sha512-Ww6ZlOiEQfPfXM45v17oabk77Z7mg5bOt7AjDyzy7RjK9OrLrLC8dyZQoAPEOtFX9SaNf1Tdvr5gRJWdTJj7GA== + +normalize-package-data@^6.0.0: + version "6.0.2" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz" + integrity sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g== + dependencies: + hosted-git-info "^7.0.0" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + +np@^10.0.5: + version "10.0.7" + resolved "https://registry.npmjs.org/np/-/np-10.0.7.tgz" + integrity sha512-vIPKQwOYKpQU40PU5x/vLfN2haj8ObxMvR1QGt7EZnBPWdm4WEbHdumYAnMV7AeR9kACsMqcqAP37sAo5cW5jA== + dependencies: + chalk "^5.3.0" + chalk-template "^1.1.0" + cosmiconfig "^8.3.6" + del "^7.1.0" + escape-goat "^4.0.0" + escape-string-regexp "^5.0.0" + execa "^8.0.1" + exit-hook "^4.0.0" + github-url-from-git "^1.5.0" + hosted-git-info "^7.0.1" + ignore-walk "^6.0.4" + import-local "^3.1.0" + inquirer "^9.2.15" + is-installed-globally "^1.0.0" + is-interactive "^2.0.0" + is-scoped "^3.0.0" + issue-regex "^4.1.0" + listr "^0.14.3" + listr-input "^0.2.1" + log-symbols "^6.0.0" + meow "^13.2.0" + new-github-release-url "^2.0.0" + npm-name "^8.0.0" + onetime "^7.0.0" + open "^10.0.4" + p-memoize "^7.1.1" + p-timeout "^6.1.2" + path-exists "^5.0.0" + pkg-dir "^8.0.0" + read-package-up "^11.0.0" + read-pkg "^9.0.1" + rxjs "^7.8.1" + semver "^7.6.0" + symbol-observable "^4.0.0" + terminal-link "^3.0.0" + update-notifier "^7.0.0" + +npm-bundled@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz" + integrity sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw== + dependencies: + npm-normalize-package-bin "^2.0.0" + +npm-name@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/npm-name/-/npm-name-8.0.0.tgz" + integrity sha512-DIuCGcKYYhASAZW6Xh/tiaGMko8IHOHe0n3zOA7SzTi0Yvy00x8L7sa5yNiZ75Ny58O/KeRtNouy8Ut6gPbKiw== + dependencies: + is-scoped "^3.0.0" + is-url-superb "^6.1.0" + ky "^1.2.0" + lodash.zip "^4.2.0" + org-regex "^1.0.0" + p-map "^7.0.1" + registry-auth-token "^5.0.2" + registry-url "^6.0.1" + validate-npm-package-name "^5.0.0" + +npm-normalize-package-bin@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz" + integrity sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ== + +npm-packlist@^5.1.3: + version "5.1.3" + resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz" + integrity sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg== + dependencies: + glob "^8.0.1" + ignore-walk "^5.0.1" + npm-bundled "^2.0.0" + npm-normalize-package-bin "^2.0.0" + +npm-run-path@^5.1.0: + version "5.3.0" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz" + integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== + dependencies: + path-key "^4.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== + +object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz" + integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== + dependencies: + mimic-fn "^1.0.0" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + +onetime@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz" + integrity sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ== + dependencies: + mimic-function "^5.0.0" + +open@^10.0.4: + version "10.1.0" + resolved "https://registry.npmjs.org/open/-/open-10.1.0.tgz" + integrity sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw== + dependencies: + default-browser "^5.2.1" + define-lazy-prop "^3.0.0" + is-inside-container "^1.0.0" + is-wsl "^3.1.0" + +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + dependencies: + prelude-ls "^1.2.1" + deep-is "^0.1.3" + word-wrap "^1.2.5" + type-check "^0.4.0" + levn "^0.4.1" + fast-levenshtein "^2.0.6" + +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + wcwidth "^1.0.1" + cli-cursor "^3.1.0" + strip-ansi "^6.0.0" + log-symbols "^4.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + +org-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/org-regex/-/org-regex-1.0.0.tgz" + integrity sha512-7bqkxkEJwzJQUAlyYniqEZ3Ilzjh0yoa62c7gL6Ijxj5bEpPL+8IE1Z0PFj0ywjjXQcdrwR51g9MIcLezR0hKQ== + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-limit@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz" + integrity sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ== + dependencies: + yocto-queue "^1.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^5.5.0: + version "5.5.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz" + integrity sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg== + dependencies: + aggregate-error "^4.0.0" + +p-map@^7.0.1: + version "7.0.2" + resolved "https://registry.npmjs.org/p-map/-/p-map-7.0.2.tgz" + integrity sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q== + +p-memoize@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/p-memoize/-/p-memoize-7.1.1.tgz" + integrity sha512-DZ/bONJILHkQ721hSr/E9wMz5Am/OTJ9P6LhLFo2Tu+jL8044tgc9LwHO8g4PiaYePnlVVRAJcKmgy8J9MVFrA== + dependencies: + mimic-fn "^4.0.0" + type-fest "^3.0.0" + +p-timeout@^6.1.2: + version "6.1.2" + resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.2.tgz" + integrity sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ== + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +package-json@^10.0.0: + version "10.0.1" + resolved "https://registry.npmjs.org/package-json/-/package-json-10.0.1.tgz" + integrity sha512-ua1L4OgXSBdsu1FPb7F3tYH0F48a6kxvod4pLUlGY9COeJAJQNX/sNH2IiEmsxw7lqYiAwrdHMjz1FctOsyDQg== + dependencies: + ky "^1.2.0" + registry-auth-token "^5.0.2" + registry-url "^6.0.1" + semver "^7.6.0" + +package-json-from-dist@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz" + integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse-json@^8.0.0: + version "8.1.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz" + integrity sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA== + dependencies: + "@babel/code-frame" "^7.22.13" + index-to-position "^0.1.2" + type-fest "^4.7.1" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-exists@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz" + integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + lru-cache "^10.2.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pathe@^1.1.1, pathe@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz" + integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + +picocolors@^1.0.0, picocolors@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz" + integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== + +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-dir@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-8.0.0.tgz" + integrity sha512-4peoBq4Wks0riS0z8741NVv+/8IiTvqnZAr8QGgtdifrtpdXbNw/FxRS1l6NFqm4EMzuS0EDqNNx4XGaz8cuyQ== + dependencies: + find-up-simple "^1.0.0" + +pkg-types@^1.0.3, pkg-types@^1.1.1: + version "1.1.3" + resolved "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.3.tgz" + integrity sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA== + dependencies: + confbox "^0.1.7" + mlly "^1.7.1" + pathe "^1.1.2" + +postcss@^8.4.39: + version "8.4.39" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz" + integrity sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.1" + source-map-js "^1.2.0" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier@^3.3.3: + version "3.3.3" + resolved "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz" + integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== + +pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + react-is "^18.0.0" + ansi-styles "^5.0.0" + "@jest/schemas" "^29.6.3" + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz" + integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== + +publint@^0.2.8: + version "0.2.9" + resolved "https://registry.npmjs.org/publint/-/publint-0.2.9.tgz" + integrity sha512-nITKS1NSwD68PQlts0ntryhxrWObep6P0CCycwi1lgXI+K7uKyacMYRRCQi7hTae8imkI3FCi0FlgnwLxjM8yA== + dependencies: + npm-packlist "^5.1.3" + picocolors "^1.0.1" + sade "^1.8.1" + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +pupa@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz" + integrity sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug== + dependencies: + escape-goat "^4.0.0" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +rc@1.2.8: + version "1.2.8" + resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-is@^18.0.0: + version "18.3.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== + +read-package-up@^11.0.0: + version "11.0.0" + resolved "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz" + integrity sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ== + dependencies: + find-up-simple "^1.0.0" + read-pkg "^9.0.0" + type-fest "^4.6.0" + +read-pkg@^9.0.0, read-pkg@^9.0.1: + version "9.0.1" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz" + integrity sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA== + dependencies: + "@types/normalize-package-data" "^2.4.3" + normalize-package-data "^6.0.0" + parse-json "^8.0.0" + type-fest "^4.6.0" + unicorn-magic "^0.1.0" + +readable-stream@^3.4.0: + version "3.6.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== + dependencies: + resolve "^1.20.0" + +registry-auth-token@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz" + integrity sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ== + dependencies: + "@pnpm/npm-conf" "^2.1.0" + +registry-url@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz" + integrity sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q== + dependencies: + rc "1.2.8" + +resolve@^1.20.0: + version "1.22.8" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz" + integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rimraf@^5.0.5: + version "5.0.9" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-5.0.9.tgz" + integrity sha512-3i7b8OcswU6CpU8Ej89quJD4O98id7TtVM5U4Mybh84zQXdrFmDLouWBEEaD/QfO3gDDfH+AGFCGsR7kngzQnA== + dependencies: + glob "^10.3.7" + +rollup@^4.13.0: + version "4.19.0" + resolved "https://registry.npmjs.org/rollup/-/rollup-4.19.0.tgz" + integrity sha512-5r7EYSQIowHsK4eTZ0Y81qpZuJz+MUuYeqmmYmRMl1nwhdmbiYqt5jwzf6u7wyOzJgYqtCRMtVRKOtHANBz7rA== + dependencies: + "@types/estree" "1.0.5" + optionalDependencies: + fsevents "~2.3.2" + "@rollup/rollup-darwin-arm64" "4.19.0" + "@rollup/rollup-android-arm64" "4.19.0" + "@rollup/rollup-win32-arm64-msvc" "4.19.0" + "@rollup/rollup-linux-arm64-gnu" "4.19.0" + "@rollup/rollup-linux-arm64-musl" "4.19.0" + "@rollup/rollup-android-arm-eabi" "4.19.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.19.0" + "@rollup/rollup-linux-arm-musleabihf" "4.19.0" + "@rollup/rollup-win32-ia32-msvc" "4.19.0" + "@rollup/rollup-linux-riscv64-gnu" "4.19.0" + "@rollup/rollup-linux-powerpc64le-gnu" "4.19.0" + "@rollup/rollup-linux-s390x-gnu" "4.19.0" + "@rollup/rollup-darwin-x64" "4.19.0" + "@rollup/rollup-win32-x64-msvc" "4.19.0" + "@rollup/rollup-linux-x64-gnu" "4.19.0" + "@rollup/rollup-linux-x64-musl" "4.19.0" + +run-applescript@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz" + integrity sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A== + +run-async@^2.2.0, run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-async@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz" + integrity sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.5.3, rxjs@^6.6.0: + version "6.6.7" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== + dependencies: + tslib "^1.9.0" + +rxjs@^7.8.1: + version "7.8.1" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +sade@^1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz" + integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== + dependencies: + mri "^1.1.0" + +safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +schema-utils@^3.1.1, schema-utils@^3.2.0: + version "3.3.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +scoped-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/scoped-regex/-/scoped-regex-3.0.0.tgz" + integrity sha512-yEsN6TuxZhZ1Tl9iB81frTNS292m0I/IG7+w8lTvfcJQP2x3vnpOoevjBoE3Np5A6KnZM2+RtVenihj9t6NiYg== + +semver@^7.3.4, semver@^7.3.5, semver@^7.6.0, semver@^7.6.2: + version "7.6.3" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + +semver-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz" + integrity sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA== + dependencies: + semver "^7.3.5" + +serialize-javascript@^6.0.1: + version "6.0.2" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +siginfo@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz" + integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== + +signal-exit@^3.0.2: + version "3.0.7" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.0.1, signal-exit@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz" + integrity sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw== + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.4: + version "0.7.4" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +source-map-js@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz" + integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== + +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +spdx-correct@^3.0.0: + version "3.2.0" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.5.0" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz" + integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.18" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz" + integrity sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ== + +stackback@0.0.2: + version "0.0.2" + resolved "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz" + integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== + +std-env@^3.5.0: + version "3.7.0" + resolved "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz" + integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" + integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== + dependencies: + strip-ansi "^3.0.0" + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + +string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + strip-ansi "^4.0.0" + is-fullwidth-code-point "^2.0.0" + +string-width@^4.1.0, string-width@^4.2.3, "string-width@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + strip-ansi "^6.0.1" + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + strip-ansi "^7.0.1" + emoji-regex "^9.2.2" + eastasianwidth "^0.2.0" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz" + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.1.0: + version "5.2.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strip-literal@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz" + integrity sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw== + dependencies: + js-tokens "^9.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz" + integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +symbol-observable@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + +symbol-observable@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz" + integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== + +tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +terminal-link@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/terminal-link/-/terminal-link-3.0.0.tgz" + integrity sha512-flFL3m4wuixmf6IfhFJd1YPiLiMuxEc8uHRM1buzIeZPm22Au2pDqBJQgdo7n1WfPU1ONFGv7YDwpFBmHGF6lg== + dependencies: + ansi-escapes "^5.0.0" + supports-hyperlinks "^2.2.0" + +terser@^5.26.0: + version "5.31.3" + resolved "https://registry.npmjs.org/terser/-/terser-5.31.3.tgz" + integrity sha512-pAfYn3NIZLyZpa83ZKigvj6Rn9c/vd5KfYGX7cN1mnzqgDcxWvrU5ZtAfIKhEXz9nRecw4z3LXkjaq96/qZqAA== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + +terser-webpack-plugin@^5.3.10: + version "5.3.10" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz" + integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== + dependencies: + "@jridgewell/trace-mapping" "^0.3.20" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.1" + terser "^5.26.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +through@^2.3.6, through@^2.3.8: + version "2.3.8" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +tinybench@^2.5.1: + version "2.8.0" + resolved "https://registry.npmjs.org/tinybench/-/tinybench-2.8.0.tgz" + integrity sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw== + +tinypool@^0.8.3: + version "0.8.4" + resolved "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz" + integrity sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ== + +tinyspy@^2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz" + integrity sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A== + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +ts-loader@^9.5.1: + version "9.5.1" + resolved "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz" + integrity sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg== + dependencies: + chalk "^4.1.0" + enhanced-resolve "^5.0.0" + micromatch "^4.0.0" + semver "^7.3.4" + source-map "^0.7.4" + +tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.1.0: + version "2.6.3" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + +tsx@^4.15.6: + version "4.16.2" + resolved "https://registry.npmjs.org/tsx/-/tsx-4.16.2.tgz" + integrity sha512-C1uWweJDgdtX2x600HjaFaucXTilT7tgUZHbOE4+ypskZ1OP8CRCSDkCxG6Vya9EwaFIVagWwpaVAn5wzypaqQ== + dependencies: + esbuild "~0.21.5" + get-tsconfig "^4.7.5" + optionalDependencies: + fsevents "~2.3.3" + +type-check@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-detect@^4.0.0, type-detect@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^1.0.1, type-fest@^1.0.2: + version "1.4.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz" + integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== + +type-fest@^2.13.0, type-fest@^2.5.1: + version "2.19.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz" + integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== + +type-fest@^3.0.0: + version "3.13.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz" + integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g== + +type-fest@^4.6.0, type-fest@^4.7.1: + version "4.22.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.22.1.tgz" + integrity sha512-9tHNEa0Ov81YOopiVkcCJVz5TM6AEQ+CHHjFIktqPnE3NV0AHIkx+gh9tiCl58m/66wWxkOC9eltpa75J4lQPA== + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typescript@5.3.3: + version "5.3.3" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz" + integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== + +typescript@*, typescript@^5.0.0: + version "5.5.3" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz" + integrity sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ== + +ufo@^1.5.3: + version "1.5.4" + resolved "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz" + integrity sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ== + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +unicorn-magic@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz" + integrity sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ== + +unique-string@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz" + integrity sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ== + dependencies: + crypto-random-string "^4.0.0" + +update-browserslist-db@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz" + integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== + dependencies: + escalade "^3.1.2" + picocolors "^1.0.1" + +update-notifier@^7.0.0: + version "7.1.0" + resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-7.1.0.tgz" + integrity sha512-8SV3rIqVY6EFC1WxH6L0j55s0MO79MFBS1pivmInRJg3pCEDgWHBj1Q6XByTtCLOZIFA0f6zoG9ZWf2Ks9lvTA== + dependencies: + boxen "^7.1.1" + chalk "^5.3.0" + configstore "^6.0.0" + import-lazy "^4.0.0" + is-in-ci "^0.1.0" + is-installed-globally "^1.0.0" + is-npm "^6.0.0" + latest-version "^9.0.0" + pupa "^3.1.0" + semver "^7.6.2" + semver-diff "^4.0.0" + xdg-basedir "^5.1.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +validate-npm-package-license@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +validate-npm-package-name@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz" + integrity sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ== + +vite@^5.0.0: + version "5.3.4" + resolved "https://registry.npmjs.org/vite/-/vite-5.3.4.tgz" + integrity sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA== + dependencies: + esbuild "^0.21.3" + postcss "^8.4.39" + rollup "^4.13.0" + optionalDependencies: + fsevents "~2.3.3" + +vite-node@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/vite-node/-/vite-node-1.6.0.tgz" + integrity sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw== + dependencies: + cac "^6.7.14" + vite "^5.0.0" + debug "^4.3.4" + pathe "^1.1.1" + picocolors "^1.0.0" + +vitest@^1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/vitest/-/vitest-1.6.0.tgz" + integrity sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA== + dependencies: + chai "^4.3.10" + vite "^5.0.0" + debug "^4.3.4" + execa "^8.0.1" + pathe "^1.1.1" + std-env "^3.5.0" + tinypool "^0.8.3" + local-pkg "^0.5.0" + tinybench "^2.5.1" + vite-node "1.6.0" + acorn-walk "^8.3.2" + picocolors "^1.0.0" + "@vitest/spy" "1.6.0" + magic-string "^0.30.5" + "@vitest/utils" "1.6.0" + strip-literal "^2.0.0" + "@vitest/expect" "1.6.0" + "@vitest/runner" "1.6.0" + "@vitest/snapshot" "1.6.0" + why-is-node-running "^2.2.2" + +watchpack@^2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz" + integrity sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +webpack@5.x.x, webpack@^5.0.0, webpack@^5.1.0, webpack@^5.90.3: + version "5.93.0" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz" + integrity sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA== + dependencies: + acorn "^8.7.1" + events "^3.2.0" + tapable "^2.1.1" + neo-async "^2.6.2" + watchpack "^2.4.1" + mime-types "^2.1.27" + graceful-fs "^4.2.11" + browserslist "^4.21.10" + eslint-scope "5.1.1" + schema-utils "^3.2.0" + "@types/estree" "^1.0.5" + loader-runner "^4.2.0" + glob-to-regexp "^0.4.1" + es-module-lexer "^1.2.1" + webpack-sources "^3.2.3" + enhanced-resolve "^5.17.0" + "@webassemblyjs/ast" "^1.12.1" + chrome-trace-event "^1.0.2" + "@types/eslint-scope" "^3.7.3" + terser-webpack-plugin "^5.3.10" + acorn-import-attributes "^1.9.5" + "@webassemblyjs/wasm-edit" "^1.12.1" + "@webassemblyjs/wasm-parser" "^1.12.1" + json-parse-even-better-errors "^2.3.1" + +webpack-cli@5.x.x, webpack-cli@^5.1.4: + version "5.1.4" + resolved "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz" + integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== + dependencies: + envinfo "^7.7.3" + rechoir "^0.8.0" + colorette "^2.0.14" + commander "^10.0.1" + interpret "^3.1.1" + cross-spawn "^7.0.3" + import-local "^3.0.2" + webpack-merge "^5.7.3" + "@webpack-cli/info" "^2.0.2" + "@webpack-cli/serve" "^2.0.5" + fastest-levenshtein "^1.0.12" + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^2.1.1" + +webpack-merge@^5.7.3: + version "5.10.0" + resolved "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz" + integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== + dependencies: + flat "^5.0.2" + wildcard "^2.0.0" + clone-deep "^4.0.1" + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +why-is-node-running@^2.2.2: + version "2.3.0" + resolved "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz" + integrity sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w== + dependencies: + siginfo "^2.0.0" + stackback "0.0.2" + +widest-line@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz" + integrity sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig== + dependencies: + string-width "^5.0.1" + +wildcard@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz" + integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== + +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +wrap-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz" + integrity sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +"wrap-ansi@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + is-typedarray "^1.0.0" + typedarray-to-buffer "^3.1.5" + +xdg-basedir@^5.0.1, xdg-basedir@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz" + integrity sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +yocto-queue@^1.0.0: + version "1.1.1" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz" + integrity sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g== + +yoctocolors-cjs@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz" + integrity sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==