From 1cf26f574ec7c5d53093f0943914c68b59fcf38b Mon Sep 17 00:00:00 2001 From: Sakul Budhathoki Date: Fri, 8 Mar 2024 18:15:20 +0545 Subject: [PATCH 1/2] chore: code quality --- .eslintignore | 6 + .eslintrc.json | 18 + .github/workflows/js.yml | 3 + .github/workflows/npm-publish.yml | 40 +- .npmignore | 3 +- .prettierignore | 4 + .prettierrc.json | 6 + README.md | 41 +- esbuild.js | 30 + package.json | 61 +- src/config.ts | 188 +-- src/eyeball.ts | 564 ++++---- src/eyeframes.ts | 463 +++---- src/index.ts | 83 +- src/path/circle.ts | 159 +-- src/path/generator.ts | 345 +++-- src/path/index.ts | 230 ++-- src/path/square.ts | 590 ++++---- src/path/types.ts | 4 - src/types.ts | 44 +- src/utils.ts | 268 ++-- src/utils/gradient.ts | 128 +- src/utils/path.ts | 50 +- tsconfig.json | 200 +-- yarn.lock | 2085 ++++++++++++++++++++++++++++- 25 files changed, 3731 insertions(+), 1882 deletions(-) create mode 100644 .eslintignore create mode 100644 .eslintrc.json create mode 100644 .prettierignore create mode 100644 .prettierrc.json create mode 100644 esbuild.js delete mode 100644 src/path/types.ts diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..86dc3f3 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,6 @@ +/dist +/node_modules +/.github +/examples +/.git + esbuild.js \ No newline at end of file diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..1266d5c --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["plugin:@typescript-eslint/recommended", "airbnb-base", "prettier"], + "parser": "@typescript-eslint/parser", + "plugins": ["prettier", "@typescript-eslint"], + "rules": { + "prettier/prettier": "error", + "no-unused-vars": ["error", { "vars": "all", "args": "none" }], + "no-console": "off", + "import/order": "error", + "import/no-unresolved": "off", + "import/named": 0, + "import/extensions": "off", + "import/prefer-default-export": "off", + "no-plusplus": "off", + "no-shadow": "off", + "@typescript-eslint/ban-ts-comment": "off" + } +} diff --git a/.github/workflows/js.yml b/.github/workflows/js.yml index 861142d..d6d38d4 100644 --- a/.github/workflows/js.yml +++ b/.github/workflows/js.yml @@ -23,5 +23,8 @@ jobs: - name: TSC run: yarn tsc + - name: yarn lint + run: yarn lint + - name: Build run: yarn build diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 6cacc68..3c4beba 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -1,25 +1,25 @@ on: - push: - branches: - - main + push: + branches: + - main jobs: - publish: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - uses: actions/setup-node@v3 - with: - cache: "yarn" - node-version: 18 + publish: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - uses: actions/setup-node@v3 + with: + cache: 'yarn' + node-version: 18 - - name: Install node modules - run: yarn + - name: Install node modules + run: yarn - - name: Build - run: yarn build + - name: Build + run: yarn build - - uses: JS-DevTools/npm-publish@v3 - with: - token: ${{ secrets.NPM_TOKEN }} + - uses: JS-DevTools/npm-publish@v3 + with: + token: ${{ secrets.NPM_TOKEN }} diff --git a/.npmignore b/.npmignore index 88b83da..7518b26 100644 --- a/.npmignore +++ b/.npmignore @@ -8,4 +8,5 @@ /.github /src .nvmrc -./scripts \ No newline at end of file +./scripts +esbuild.js diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..4f303c3 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,4 @@ + +dist/ +node_modules/ +examples/ diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..8dac37c --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,6 @@ +{ + "printWidth": 100, + "useTabs": false, + "tabWidth": 4, + "singleQuote": true +} diff --git a/README.md b/README.md index 2bb2b87..524ae14 100644 --- a/README.md +++ b/README.md @@ -1,44 +1,51 @@ - -# [Intosoft QR Code](https://qrcode.intosoft.com/) · [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/Intosoft/qrcode/blob/main/LICENSE) +# [Intosoft QR Code](https://qrcode.intosoft.com/) · [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/Intosoft/qrcode/blob/main/LICENSE) Intosoft QR Code is a fully customizable open source QR code generator tool. -- **Versatile and Customizable:** Fully color, style, content customization -- **Seamless Integration:** Integrate Intosoft QRcode seamlessly into your existing tech stack, whether you're working with React, React Native, NodeJS, Vue.js, Angular, or pure JavaScript. - + +- **Versatile and Customizable:** Fully color, style, content customization +- **Seamless Integration:** Integrate Intosoft QRcode seamlessly into your existing tech stack, whether you're working with React, React Native, NodeJS, Vue.js, Angular, or pure JavaScript. + [Start customizing](https://qrcode.intosoft.com) ## Installation + NPM + ``` npm i @intosoft/qrcode ``` + Yarn + ``` yarn add @intosoft/qrcode -``` -## Examples +``` + +## Examples React + ```jsx -import { generateSVGString } from '@intosoft/qrcode'; +import { generateSVGString } from '@intosoft/qrcode'; const svgString = generateSVGString(); -export const RenderQR = () => { - return (
); +export const RenderQR = () => { + return
; }; ``` React Native First Install [react-native-svg](https://github.com/software-mansion/react-native-svg) + ```jsx -import { SvgFromXml } from "react-native-svg"; -import { generateSVGString } from '@intosoft/qrcode'; +import { SvgFromXml } from 'react-native-svg'; +import { generateSVGString } from '@intosoft/qrcode'; const svgString = generateSVGString(); -export const RenderQR = () => { - return (); +export const RenderQR = () => { + return ; }; ``` @@ -59,7 +66,7 @@ Vanilla JS ``` - -### License [MIT licensed](./LICENSE). -*QR Code is a registered trademark of DENSO WAVE INCORPORATED.* \ No newline at end of file +### License [MIT licensed](./LICENSE). + +_QR Code is a registered trademark of DENSO WAVE INCORPORATED._ diff --git a/esbuild.js b/esbuild.js new file mode 100644 index 0000000..7d834fe --- /dev/null +++ b/esbuild.js @@ -0,0 +1,30 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +/* eslint-disable import/no-extraneous-dependencies */ +const { build } = require('esbuild'); +const { Generator } = require('npm-dts'); +const { dependencies } = require('./package.json'); + +new Generator({ + entry: 'src/index.ts', + output: 'dist/index.d.ts', +}).generate(); + +const sharedConfig = { + entryPoints: ['src/index.ts'], + bundle: true, + minify: true, + external: Object.keys(dependencies), +}; + +build({ + ...sharedConfig, + platform: 'node', // for CJS + outfile: 'dist/index.js', +}); + +build({ + ...sharedConfig, + outfile: 'dist/index.esm.js', + platform: 'neutral', // for ESM + format: 'esm', +}); diff --git a/package.json b/package.json index 7283347..7188dd1 100644 --- a/package.json +++ b/package.json @@ -1,24 +1,41 @@ { - "name": "@intosoft/qrcode", - "version": "0.0.6", - "description": "", - "main": "dist/index.js", - "scripts": { - "tsc": "tsc", - "build": "esbuild ./src/index.ts --bundle --outfile=dist/index.js" - }, - "author": "sakulbudhathoki977@gmail.com", - "license": "MIT", - "dependencies": { - "qrcode": "^1.5.3" - }, - "devDependencies": { - "@types/qrcode": "^1.5.5", - "esbuild": "^0.20.1", - "tsx": "^4.7.1", - "typescript": "^5.3.3" - }, - "publishConfig": { - "access": "public" - } + "name": "@intosoft/qrcode", + "version": "0.0.7", + "description": "", + "module": "dist/index.esm.js", + "main": "dist/index.js", + "typings": "dist/index.d.ts", + "scripts": { + "build": "node esbuild.js", + "unused-exports": "ts-unused-exports ./tsconfig.json --excludePathsFromReport='index.ts'", + "tsc": "tsc", + "lint": "yarn format && yarn eslint && yarn unused-exports", + "format": "prettier --check .", + "eslint": "eslint .", + "lint:fix": "eslint --fix ." + }, + "author": "sakulbudhathoki977@gmail.com", + "license": "MIT", + "dependencies": { + "qrcode": "^1.5.3" + }, + "devDependencies": { + "@types/qrcode": "^1.5.5", + "@typescript-eslint/eslint-plugin": "^7.1.1", + "@typescript-eslint/parser": "^7.1.1", + "esbuild": "^0.20.1", + "eslint": "^8.57.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-prettier": "^5.1.3", + "npm-dts": "^1.3.12", + "prettier": "^3.2.5", + "ts-unused-exports": "^10.0.1", + "tsx": "^4.7.1", + "typescript": "^5.3.3" + }, + "publishConfig": { + "access": "public" + } } diff --git a/src/config.ts b/src/config.ts index b0c55b2..9a416cc 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,109 +1,109 @@ export type EyeFrameShape = - | "body" - | "square" - | "circle" - | "rounded" - | "styleA" - | "styleB" - | "body-square" - | "body-square-small" - | "body-square-horizontal" - | "body-square-vertical" - | "body-circle" - | "body-rounded-horizontal" - | "body-rounded-vertical" - | "body-diamond" - | "body-star" - | "body-star-small" - | "body-circle-small"; + | 'body' + | 'square' + | 'circle' + | 'rounded' + | 'styleA' + | 'styleB' + | 'body-square' + | 'body-square-small' + | 'body-square-horizontal' + | 'body-square-vertical' + | 'body-circle' + | 'body-rounded-horizontal' + | 'body-rounded-vertical' + | 'body-diamond' + | 'body-star' + | 'body-star-small' + | 'body-circle-small'; export type EyeballShape = - | "body" - | "square" - | "circle" - | "rounded" - | "styleA" - | "styleB" - | "styleC" - | "body-square" - | "body-square-small" - | "body-square-horizontal" - | "body-square-vertical" - | "body-circle" - | "body-rounded-horizontal" - | "body-rounded-vertical" - | "body-diamond" - | "body-star" - | "body-star-small" - | "body-circle-small"; + | 'body' + | 'square' + | 'circle' + | 'rounded' + | 'styleA' + | 'styleB' + | 'styleC' + | 'body-square' + | 'body-square-small' + | 'body-square-horizontal' + | 'body-square-vertical' + | 'body-circle' + | 'body-rounded-horizontal' + | 'body-rounded-vertical' + | 'body-diamond' + | 'body-star' + | 'body-star-small' + | 'body-circle-small'; export type BodyShape = - | "square" - | "square-small" - | "square-horizontal" - | "square-vertical" - | "circle" - | "rounded-horizontal" - | "rounded-vertical" - | "diamond" - | "star" - | "star-small" - | "circle-small"; + | 'square' + | 'square-small' + | 'square-horizontal' + | 'square-vertical' + | 'circle' + | 'rounded-horizontal' + | 'rounded-vertical' + | 'diamond' + | 'star' + | 'star-small' + | 'circle-small'; export interface Config { - length: number; - value: string; - logo?: { - url: string; - height: number; - width: number; - }; - shapes: { - eyeFrame: EyeFrameShape; - body: BodyShape; - eyeball: EyeballShape; - }; - colors: { - background: string; - body: string; - eyeFrame: { - topLeft: string; - topRight: string; - bottomLeft: string; + length: number; + value: string; + logo?: { + url: string; + size: number; + removeBg: boolean; }; - eyeball: { - topLeft: string; - topRight: string; - bottomLeft: string; + shapes: { + eyeFrame: EyeFrameShape; + body: BodyShape; + eyeball: EyeballShape; + }; + colors: { + background: string; + body: string; + eyeFrame: { + topLeft: string; + topRight: string; + bottomLeft: string; + }; + eyeball: { + topLeft: string; + topRight: string; + bottomLeft: string; + }; }; - }; } export const defaultConfig: Config = { - length: 200, - value: "https://intosoft.com", - logo: { - url: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMjIuMSAxOTQuNyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiM0MmM5ODU7fS5jbHMtMntmaWxsOiM2NmJmODM7fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl8yIiBkYXRhLW5hbWU9IkxheWVyIDIiPjxnIGlkPSJMYXllcl8xLTIiIGRhdGEtbmFtZT0iTGF5ZXIgMSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNOTQuMzYsNzUuNTljMTguMzksMTkuNzUsMTguNzYsNDkuMjguODIsNjZsLTUuMjQsNC44Ny03LjQ5LDctMy4xNSwzLjEyTDQwLjQ3LDE5Mi44N2E2Ljc3LDYuNzcsMCwwLDEtOS41Ny0uMzFMMCwxNTkuNTVsMTguNi0xNy40MWEyMi43OCwyMi43OCwwLDAsMSwxLjU5LTEuNjhsLjE1LS4xNCw4LjE3LTcuNjIsOS4wOS04LjQ3LjkyLS44NywxMS4yNy0xMC41MWExOSwxOSwwLDAsMCwxMi40NSwzLjYzLDE5LjE2LDE5LjE2LDAsMSwwLTE3LjQ0LTlMMzEuMTQsMTIwLjI1QTEuODEsMS44MSwwLDAsMSwyOC42LDEyMGwtLjg2LS45MkM5LjM1LDk5LjM3LDksNjkuODQsMjYuOTIsNTMuMTZMMzkuNjUsNDEuMzFsMzgtMzUuNzZMNzIsMTAuODhsOS42NC05LjA2YTYuNzMsNi43MywwLDAsMSw5LjUyLjMxbDMwLjkyLDMzTDEwMy41LDUyLjU3YTIwLjg1LDIwLjg1LDAsMCwxLTEuNTksMS42OGwtLjE1LjE0TDkzLjYsNjIsODcuMDcsNjguMWw2LjE1LDYuMzJaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNOTQuMzYsNzUuNTlsLTEuMTQtMS4xN2EyLjI2LDIuMjYsMCwwLDEsLjI5LjI1WiIvPjwvZz48L2c+PC9zdmc+", - height: 70, - width: 105, - }, - shapes: { - eyeFrame: "circle", - body: "rounded-vertical", - eyeball: "circle", - }, - colors: { - background: "white", - body: "rgb(90, 90, 90)", - eyeFrame: { - topLeft: "body", - topRight: "body", - bottomLeft: "body", + length: 200, + value: 'https://intosoft.com', + logo: { + url: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMjIuMSAxOTQuNyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiM0MmM5ODU7fS5jbHMtMntmaWxsOiM2NmJmODM7fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl8yIiBkYXRhLW5hbWU9IkxheWVyIDIiPjxnIGlkPSJMYXllcl8xLTIiIGRhdGEtbmFtZT0iTGF5ZXIgMSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNOTQuMzYsNzUuNTljMTguMzksMTkuNzUsMTguNzYsNDkuMjguODIsNjZsLTUuMjQsNC44Ny03LjQ5LDctMy4xNSwzLjEyTDQwLjQ3LDE5Mi44N2E2Ljc3LDYuNzcsMCwwLDEtOS41Ny0uMzFMMCwxNTkuNTVsMTguNi0xNy40MWEyMi43OCwyMi43OCwwLDAsMSwxLjU5LTEuNjhsLjE1LS4xNCw4LjE3LTcuNjIsOS4wOS04LjQ3LjkyLS44NywxMS4yNy0xMC41MWExOSwxOSwwLDAsMCwxMi40NSwzLjYzLDE5LjE2LDE5LjE2LDAsMSwwLTE3LjQ0LTlMMzEuMTQsMTIwLjI1QTEuODEsMS44MSwwLDAsMSwyOC42LDEyMGwtLjg2LS45MkM5LjM1LDk5LjM3LDksNjkuODQsMjYuOTIsNTMuMTZMMzkuNjUsNDEuMzFsMzgtMzUuNzZMNzIsMTAuODhsOS42NC05LjA2YTYuNzMsNi43MywwLDAsMSw5LjUyLjMxbDMwLjkyLDMzTDEwMy41LDUyLjU3YTIwLjg1LDIwLjg1LDAsMCwxLTEuNTksMS42OGwtLjE1LjE0TDkzLjYsNjIsODcuMDcsNjguMWw2LjE1LDYuMzJaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNOTQuMzYsNzUuNTlsLTEuMTQtMS4xN2EyLjI2LDIuMjYsMCwwLDEsLjI5LjI1WiIvPjwvZz48L2c+PC9zdmc+', + size: 4, + removeBg: false, + }, + shapes: { + eyeFrame: 'circle', + body: 'rounded-vertical', + eyeball: 'circle', }, - eyeball: { - topLeft: "body", - topRight: "body", - bottomLeft: "body", + colors: { + background: 'white', + body: 'rgb(90, 90, 90)', + eyeFrame: { + topLeft: 'body', + topRight: 'body', + bottomLeft: 'body', + }, + eyeball: { + topLeft: 'body', + topRight: 'body', + bottomLeft: 'body', + }, }, - }, }; diff --git a/src/eyeball.ts b/src/eyeball.ts index 7db8257..c070254 100644 --- a/src/eyeball.ts +++ b/src/eyeball.ts @@ -1,61 +1,53 @@ -import { generateRoundedCornerEyeballPath } from "./path/square"; -import { Config, EyeballShape } from "./config"; -import { - GenerateEyeballSVGParams, - StyledEyePathGeneratorParams, -} from "./types"; -import { getPositionForEyes } from "./utils"; -import { isGradientColor } from "./utils/gradient"; -import { generatePath } from "./path"; +import { generateRoundedCornerEyeballPath } from './path/square'; +import { Config } from './config'; +import { GenerateEyeballSVGParams, StyledEyePathGeneratorParams } from './types'; +import { getPositionForEyes } from './utils'; +import { isGradientColor } from './utils/gradient'; +import { generatePath } from './path'; interface CircleEyeballParams { - x: number; - y: number; - radius: number; + x: number; + y: number; + radius: number; } -export const circleEyeballPath = ({ x, y, radius }: CircleEyeballParams) => { - return `M${x + radius},${y}A${radius},${radius},0,1,1,${ - x - radius - },${y},${radius},${radius},0,0,1,${x + radius},${y}Z`; -}; +const circleEyeballPath = ({ x, y, radius }: CircleEyeballParams) => + `M${x + radius},${y}A${radius},${radius},0,1,1,${ + x - radius + },${y},${radius},${radius},0,0,1,${x + radius},${y}Z`; -export const circleEyeball = ({ - matrixLength, - size, - position, -}: StyledEyePathGeneratorParams) => { - let path = ""; - const cellSize = size / matrixLength; - const positions = getPositionForEyes({ matrixLength, cellSize }); +const circleEyeball = ({ matrixLength, size, position }: StyledEyePathGeneratorParams) => { + let path = ''; + const cellSize = size / matrixLength; + const positions = getPositionForEyes({ matrixLength, cellSize }); - const height = cellSize * 3; - const radius = height / 2; + const height = cellSize * 3; + const radius = height / 2; - path += circleEyeballPath({ - ...positions.eyeball[position], - radius, - }); + path += circleEyeballPath({ + ...positions.eyeball[position], + radius, + }); - return path; + return path; }; interface SquareEyeballParams { - x: number; - y: number; - length: number; - cellSize: number; + x: number; + y: number; + length: number; + cellSize: number; - strokeColor?: string; + strokeColor?: string; } const squareEyeballPath = ({ length, x, y, cellSize }: SquareEyeballParams) => { - const halfSize = length / 2; - const startX = x - halfSize - cellSize / 2; - const startY = y - halfSize - cellSize / 2; - const endX = x + halfSize + cellSize / 2; - const endY = y + halfSize + cellSize / 2; - return ` + const halfSize = length / 2; + const startX = x - halfSize - cellSize / 2; + const startY = y - halfSize - cellSize / 2; + const endX = x + halfSize + cellSize / 2; + const endY = y + halfSize + cellSize / 2; + return ` M ${startX} ${startY} L ${endX} ${startY} L ${endX} ${endY} @@ -64,220 +56,199 @@ const squareEyeballPath = ({ length, x, y, cellSize }: SquareEyeballParams) => { `; }; -export const squareEyeball = ({ - matrixLength, - size, - position, -}: StyledEyePathGeneratorParams) => { - const cellSize = size / matrixLength; - - const length = cellSize * 3 - cellSize / 2; - const positions = getPositionForEyes({ matrixLength, cellSize }); - - return squareEyeballPath({ - ...positions.eyeball[position], - length, - cellSize, - }); +const squareEyeball = ({ matrixLength, size, position }: StyledEyePathGeneratorParams) => { + const cellSize = size / matrixLength; + + const length = cellSize * 3 - cellSize / 2; + const positions = getPositionForEyes({ matrixLength, cellSize }); + + return squareEyeballPath({ + ...positions.eyeball[position], + length, + cellSize, + }); }; -export const roundedEyeball = ({ - matrixLength, - size, - position, -}: StyledEyePathGeneratorParams) => { - const cellSize = size / matrixLength; - - const length = cellSize * 3 + cellSize / 1.5; - const positions = { - topLeft: { - x: 1.7 * cellSize, - y: 1.7 * cellSize, - }, - topRight: { - x: (matrixLength - 5.3) * cellSize, - y: 1.7 * cellSize, - }, - bottomLeft: { - x: 1.7 * cellSize, - y: (matrixLength - 5.3) * cellSize, - }, - }; - - return generateRoundedCornerEyeballPath({ - ...positions[position], - length, - cellSize, - roundedCorners: ["top-left", "bottom-left", "top-right", "bottom-right"], - }); +const roundedEyeball = ({ matrixLength, size, position }: StyledEyePathGeneratorParams) => { + const cellSize = size / matrixLength; + + const length = cellSize * 3 + cellSize / 1.5; + const positions = { + topLeft: { + x: 1.7 * cellSize, + y: 1.7 * cellSize, + }, + topRight: { + x: (matrixLength - 5.3) * cellSize, + y: 1.7 * cellSize, + }, + bottomLeft: { + x: 1.7 * cellSize, + y: (matrixLength - 5.3) * cellSize, + }, + }; + + return generateRoundedCornerEyeballPath({ + ...positions[position], + length, + cellSize, + roundedCorners: ['top-left', 'bottom-left', 'top-right', 'bottom-right'], + }); }; -export const styleAEyeball = ({ - matrixLength, - size, - position, -}: StyledEyePathGeneratorParams) => { - const cellSize = size / matrixLength; - - const length = cellSize * 3 + cellSize / 1.5; - const positions = { - topLeft: { - x: 1.7 * cellSize, - y: 1.7 * cellSize, - }, - topRight: { - x: (matrixLength - 5.3) * cellSize, - y: 1.7 * cellSize, - }, - bottomLeft: { - x: 1.7 * cellSize, - y: (matrixLength - 5.3) * cellSize, - }, - }; - - const roundedCorners = { - topLeft: ["top-left", "top-right", "bottom-left"], - topRight: ["top-left", "top-right", "bottom-right"], - bottomLeft: ["top-left", "bottom-right", "bottom-left"], - }; - - return generateRoundedCornerEyeballPath({ - ...positions[position], - length, - cellSize, - //@ts-ignore - roundedCorners: roundedCorners[position], - }); +const styleAEyeball = ({ matrixLength, size, position }: StyledEyePathGeneratorParams) => { + const cellSize = size / matrixLength; + + const length = cellSize * 3 + cellSize / 1.5; + const positions = { + topLeft: { + x: 1.7 * cellSize, + y: 1.7 * cellSize, + }, + topRight: { + x: (matrixLength - 5.3) * cellSize, + y: 1.7 * cellSize, + }, + bottomLeft: { + x: 1.7 * cellSize, + y: (matrixLength - 5.3) * cellSize, + }, + }; + + const roundedCorners = { + topLeft: ['top-left', 'top-right', 'bottom-left'], + topRight: ['top-left', 'top-right', 'bottom-right'], + bottomLeft: ['top-left', 'bottom-right', 'bottom-left'], + }; + + return generateRoundedCornerEyeballPath({ + ...positions[position], + length, + cellSize, + // @ts-expect-error + roundedCorners: roundedCorners[position], + }); }; -export const styleBEyeball = ({ - matrixLength, - size, - position, -}: StyledEyePathGeneratorParams) => { - const cellSize = size / matrixLength; - - const length = cellSize * 3 + cellSize / 1.5; - const positions = { - topLeft: { - x: 1.7 * cellSize, - y: 1.7 * cellSize, - }, - topRight: { - x: (matrixLength - 5.3) * cellSize, - y: 1.7 * cellSize, - }, - bottomLeft: { - x: 1.7 * cellSize, - y: (matrixLength - 5.3) * cellSize, - }, - }; - - return generateRoundedCornerEyeballPath({ - ...positions[position], - length, - cellSize, - roundedCorners: ["top-left", "bottom-right"], - }); +const styleBEyeball = ({ matrixLength, size, position }: StyledEyePathGeneratorParams) => { + const cellSize = size / matrixLength; + + const length = cellSize * 3 + cellSize / 1.5; + const positions = { + topLeft: { + x: 1.7 * cellSize, + y: 1.7 * cellSize, + }, + topRight: { + x: (matrixLength - 5.3) * cellSize, + y: 1.7 * cellSize, + }, + bottomLeft: { + x: 1.7 * cellSize, + y: (matrixLength - 5.3) * cellSize, + }, + }; + + return generateRoundedCornerEyeballPath({ + ...positions[position], + length, + cellSize, + roundedCorners: ['top-left', 'bottom-right'], + }); }; -export const styleCEyeball = ({ - matrixLength, - size, - position, -}: StyledEyePathGeneratorParams) => { - const cellSize = size / matrixLength; - - const length = cellSize * 3 + cellSize / 1.5; - const positions = { - topLeft: { - x: 1.7 * cellSize, - y: 1.7 * cellSize, - }, - topRight: { - x: (matrixLength - 5.3) * cellSize, - y: 1.7 * cellSize, - }, - bottomLeft: { - x: 1.7 * cellSize, - y: (matrixLength - 5.3) * cellSize, - }, - }; - - const roundedCorners = { - topLeft: ["top-left"], - topRight: ["top-right"], - bottomLeft: ["bottom-left"], - }; - - return generateRoundedCornerEyeballPath({ - ...positions[position], - length, - cellSize, - //@ts-ignore - roundedCorners: roundedCorners[position], - }); +const styleCEyeball = ({ matrixLength, size, position }: StyledEyePathGeneratorParams) => { + const cellSize = size / matrixLength; + + const length = cellSize * 3 + cellSize / 1.5; + const positions = { + topLeft: { + x: 1.7 * cellSize, + y: 1.7 * cellSize, + }, + topRight: { + x: (matrixLength - 5.3) * cellSize, + y: 1.7 * cellSize, + }, + bottomLeft: { + x: 1.7 * cellSize, + y: (matrixLength - 5.3) * cellSize, + }, + }; + + const roundedCorners = { + topLeft: ['top-left'], + topRight: ['top-right'], + bottomLeft: ['bottom-left'], + }; + + return generateRoundedCornerEyeballPath({ + ...positions[position], + length, + cellSize, + // @ts-expect-error + roundedCorners: roundedCorners[position], + }); }; const eyeballFunction: { - [key in Exclude as string]: Function; + [key: string]: (param: StyledEyePathGeneratorParams) => string; } = { - square: squareEyeball, - circle: circleEyeball, - rounded: roundedEyeball, - styleA: styleAEyeball, - styleB: styleBEyeball, - styleC: styleCEyeball, + square: squareEyeball, + circle: circleEyeball, + rounded: roundedEyeball, + styleA: styleAEyeball, + styleB: styleBEyeball, + styleC: styleCEyeball, }; const generateEyeballSVG = ({ - shape, - color, - size, - matrixLength, - position, - pathOnly, - matrix, - config, + shape, + color, + size, + matrixLength, + position, + pathOnly, + matrix, + config, }: GenerateEyeballSVGParams) => { - if (shape === "body") { - return ""; - } - if (shape.includes("body-")) { - const path = generatePath({ - matrix, - size: config.length, - config: { - ...config, - shapes: { - ...config.shapes, - //@ts-ignore - body: config.shapes.eyeball.replace("body-", ""), - }, - }, - eyeballOnly: true, - }); - if (pathOnly) { - return path; - } else { - return ``; } - } - const path = eyeballFunction[shape]({ - matrixLength: matrixLength, - size: size, - position, - }); - if (pathOnly) { - return path; - } - return ` { - const shape = config.shapes.eyeball; - const colors = config.colors.eyeball; - - let svgString = ""; - if (shape === "body") { - return ""; - } - //top-left - - if ( - (colors.topLeft === "body" && isFromBody) || - (colors.topLeft !== "body" && !isFromBody) - ) { - svgString += generateEyeballSVG({ - shape: shape, - color: colors.topLeft === "body" ? config.colors.body : colors.topLeft, - size: config.length, - matrixLength, - position: "topLeft", - pathOnly: colors.topLeft === "body", - matrix, - config, - }); - } - - //top-right - if ( - (colors.topRight === "body" && isFromBody) || - (colors.topRight !== "body" && !isFromBody) - ) { - svgString += generateEyeballSVG({ - shape: shape, - color: colors.topRight === "body" ? config.colors.body : colors.topRight, - size: config.length, - matrixLength, - position: "topRight", - pathOnly: colors.bottomLeft === "body", - matrix, - config, - }); - } - - //bottom-left - if ( - (colors.bottomLeft === "body" && isFromBody) || - (colors.bottomLeft !== "body" && !isFromBody) - ) { - svgString += generateEyeballSVG({ - shape: shape, - color: - colors.bottomLeft === "body" ? config.colors.body : colors.bottomLeft, - size: config.length, - matrixLength, - position: "bottomLeft", - pathOnly: colors.bottomLeft === "body", - matrix, - config, - }); - } + const shape = config.shapes.eyeball; + const colors = config.colors.eyeball; + + let svgString = ''; + if (shape === 'body') { + return ''; + } + // top-left + + if ((colors.topLeft === 'body' && isFromBody) || (colors.topLeft !== 'body' && !isFromBody)) { + svgString += generateEyeballSVG({ + shape, + color: colors.topLeft === 'body' ? config.colors.body : colors.topLeft, + size: config.length, + matrixLength, + position: 'topLeft', + pathOnly: colors.topLeft === 'body', + matrix, + config, + }); + } + + // top-right + if ((colors.topRight === 'body' && isFromBody) || (colors.topRight !== 'body' && !isFromBody)) { + svgString += generateEyeballSVG({ + shape, + color: colors.topRight === 'body' ? config.colors.body : colors.topRight, + size: config.length, + matrixLength, + position: 'topRight', + pathOnly: colors.bottomLeft === 'body', + matrix, + config, + }); + } + + // bottom-left + if ( + (colors.bottomLeft === 'body' && isFromBody) || + (colors.bottomLeft !== 'body' && !isFromBody) + ) { + svgString += generateEyeballSVG({ + shape, + color: colors.bottomLeft === 'body' ? config.colors.body : colors.bottomLeft, + size: config.length, + matrixLength, + position: 'bottomLeft', + pathOnly: colors.bottomLeft === 'body', + matrix, + config, + }); + } - return svgString; + return svgString; }; diff --git a/src/eyeframes.ts b/src/eyeframes.ts index 25f51fb..00999ca 100644 --- a/src/eyeframes.ts +++ b/src/eyeframes.ts @@ -1,333 +1,224 @@ -import { isGradientColor } from "./utils/gradient"; -import { - GenerateEyeFrameSVGParams, - StyledEyePathGeneratorParams, -} from "./types"; -import { getPositionForEyes } from "./utils"; -import { Config, EyeFrameShape } from "./config"; +import { isGradientColor } from './utils/gradient'; +import { GenerateEyeFrameSVGParams, StyledEyePathGeneratorParams } from './types'; +import { getPositionForEyes } from './utils'; +import { Config } from './config'; import { - generateOutlineCirclePath, - generateOutlineRoundedSquarePath, - generateOutlineSquarePath, -} from "./path/square"; -import { generatePath } from "./path"; - -interface CircleEyeFrameParams { - x: number; - y: number; - length: number; - cellSize: number; -} - -export const circleEyeFramePath = ({ x, y, length }: CircleEyeFrameParams) => { - const radius = length / 2; - - return `M${x + radius},${y + length}h0A${radius},${radius},0,0,1,${x},${ - y + length / 2 - }h0A${radius},${radius},0,0,1,${ - x + radius - },${y}h0A${radius},${radius},0,0,1,${x + length},${ - y + length / 2 - }h0A${radius},${radius},0,0,1,${x + radius},${y + length}Z`; -}; - -export const circleEyeFrame = ({ - matrixLength, - size, - position, -}: StyledEyePathGeneratorParams) => { - let path = ""; - const cellSize = size / matrixLength; - const positions = getPositionForEyes({ - matrixLength, - cellSize, - }); - - const length = cellSize * 7; - - path += generateOutlineCirclePath({ - ...positions.eyeFrame[position], - cellSize: cellSize, - length, - }); - - return path; -}; - -interface SquareEyeFrameParams { - x: number; - y: number; - length: number; - cellSize: number; - strokeColor?: string; -} - -const squareEyeFramePath = ({ - cellSize, - length, - x, - y, -}: SquareEyeFrameParams) => { - return `M${x + cellSize / 2},${y + cellSize / 2}H${ - x + length - cellSize / 2 - }V${y + length - cellSize / 2}H${x + cellSize / 2}Z`; -}; - -export const squareEyeFrame = ({ - matrixLength, - size, - position, -}: StyledEyePathGeneratorParams) => { - const cellSize = size / matrixLength; + generateOutlineCirclePath, + generateOutlineRoundedSquarePath, + generateOutlineSquarePath, +} from './path/square'; +import { generatePath } from './path'; + +const circleEyeFrame = ({ matrixLength, size, position }: StyledEyePathGeneratorParams) => { + let path = ''; + const cellSize = size / matrixLength; + const positions = getPositionForEyes({ + matrixLength, + cellSize, + }); - const length = cellSize * 7; - const positions = getPositionForEyes({ matrixLength, cellSize }); + const length = cellSize * 7; - let path = ""; - path += generateOutlineSquarePath({ - ...positions.eyeFrame[position], - length, - cellSize, - }); + path += generateOutlineCirclePath({ + ...positions.eyeFrame[position], + cellSize, + length, + }); - return path; + return path; }; -interface RoundedEyeFrameParams { - x: number; - y: number; - length: number; - cellSize: number; - strokeColor?: string; -} +const squareEyeFrame = ({ matrixLength, size, position }: StyledEyePathGeneratorParams) => { + const cellSize = size / matrixLength; -const roundedEyeFramePath = ({ - cellSize, - length, - x, - y, -}: RoundedEyeFrameParams) => { - //Original Path - //M106.19,130H33.81 - //A23.81,23.81,0,0,1,10,106.19V33.81 - //A23.81,23.81,0,0,1,33.81,10h72.38 - //A23.81,23.81,0,0,1,130,33.81v72.38 - //A23.81,23.81,0,0,1,106.19,130Z + const length = cellSize * 7; + const positions = getPositionForEyes({ matrixLength, cellSize }); - const dynamic1 = cellSize / 2; // 10 - const dynamic2 = cellSize * 1.1905; // 23.81 - const dynamic3 = dynamic2 + dynamic1; // 33.81 - const dynamic4 = length - dynamic3; // 106.19 - const dynamic5 = dynamic4 - dynamic3; //72.38 + let path = ''; + path += generateOutlineSquarePath({ + ...positions.eyeFrame[position], + length, + cellSize, + }); - return `M${x + dynamic4},${y + length - dynamic1}H${ - x + dynamic3 - }A${dynamic2},${dynamic2},0,0,1,${x + dynamic1},${y + length - dynamic3}V${ - y + dynamic3 - }A${dynamic2},${dynamic2},0,0,1,${x + dynamic3},${ - y + dynamic1 - }h${dynamic5}A${dynamic2},${dynamic2},0,0,1,${x + length - dynamic1},${ - y + dynamic3 - }v${dynamic5}A${dynamic2},${dynamic2},0,0,1,${x + length - dynamic3},${ - y + length - dynamic1 - }Z`; + return path; }; -export const roundedEyeFrame = ({ - matrixLength, - size, - position, -}: StyledEyePathGeneratorParams) => { - const cellSize = size / matrixLength; +const roundedEyeFrame = ({ matrixLength, size, position }: StyledEyePathGeneratorParams) => { + const cellSize = size / matrixLength; - const length = cellSize * 7; - const positions = getPositionForEyes({ matrixLength, cellSize }); + const length = cellSize * 7; + const positions = getPositionForEyes({ matrixLength, cellSize }); - return generateOutlineRoundedSquarePath({ - ...positions.eyeFrame[position], - cellSize, - length, - roundedCorners: ["top-left", "top-right", "bottom-right", "bottom-left"], - }); + return generateOutlineRoundedSquarePath({ + ...positions.eyeFrame[position], + cellSize, + length, + roundedCorners: ['top-left', 'top-right', 'bottom-right', 'bottom-left'], + }); }; -export const styleAEyeFrame = ({ - matrixLength, - size, - position, -}: StyledEyePathGeneratorParams) => { - const cellSize = size / matrixLength; - - const length = cellSize * 7; - const positions = getPositionForEyes({ matrixLength, cellSize }); - const roundedCorners = { - topLeft: ["top-left", "top-right", "bottom-left"], - topRight: ["top-left", "top-right", "bottom-right"], - bottomLeft: ["top-left", "bottom-right", "bottom-left"], - }; - return generateOutlineRoundedSquarePath({ - ...positions.eyeFrame[position], - cellSize, - length, - //@ts-ignore - roundedCorners: roundedCorners[position], - }); +const styleAEyeFrame = ({ matrixLength, size, position }: StyledEyePathGeneratorParams) => { + const cellSize = size / matrixLength; + + const length = cellSize * 7; + const positions = getPositionForEyes({ matrixLength, cellSize }); + const roundedCorners = { + topLeft: ['top-left', 'top-right', 'bottom-left'], + topRight: ['top-left', 'top-right', 'bottom-right'], + bottomLeft: ['top-left', 'bottom-right', 'bottom-left'], + }; + return generateOutlineRoundedSquarePath({ + ...positions.eyeFrame[position], + cellSize, + length, + // @ts-ignore + roundedCorners: roundedCorners[position], + }); }; -export const styleBEyeFrame = ({ - matrixLength, - size, - position, -}: StyledEyePathGeneratorParams) => { - const cellSize = size / matrixLength; +const styleBEyeFrame = ({ matrixLength, size, position }: StyledEyePathGeneratorParams) => { + const cellSize = size / matrixLength; - const length = cellSize * 7; - const positions = getPositionForEyes({ matrixLength, cellSize }); + const length = cellSize * 7; + const positions = getPositionForEyes({ matrixLength, cellSize }); - const roundedCorners = { - topLeft: ["top-left"], - topRight: ["top-right"], - bottomLeft: ["bottom-left"], - }; + const roundedCorners = { + topLeft: ['top-left'], + topRight: ['top-right'], + bottomLeft: ['bottom-left'], + }; - return generateOutlineRoundedSquarePath({ - ...positions.eyeFrame[position], - cellSize, - length, - //@ts-ignore - roundedCorners: roundedCorners[position], - }); + return generateOutlineRoundedSquarePath({ + ...positions.eyeFrame[position], + cellSize, + length, + // @ts-ignore + roundedCorners: roundedCorners[position], + }); }; const eyeFrameFunction: { - [key in Exclude as string]: Function; + [key: string]: (param: StyledEyePathGeneratorParams) => string; } = { - square: squareEyeFrame, - circle: circleEyeFrame, - rounded: roundedEyeFrame, - styleA: styleAEyeFrame, - styleB: styleBEyeFrame, + square: squareEyeFrame, + circle: circleEyeFrame, + rounded: roundedEyeFrame, + styleA: styleAEyeFrame, + styleB: styleBEyeFrame, }; const generateEyeFrameSVG = ({ - shape, - color, - size, - matrixLength, - position, - pathOnly, - config, - matrix, + shape, + color, + size, + matrixLength, + position, + pathOnly, + config, + matrix, }: GenerateEyeFrameSVGParams) => { - if (shape === "body") { - return ""; - } - if (shape.includes("body-")) { - const path = generatePath({ - matrix, - size: config.length, - config: { - ...config, - shapes: { - ...config.shapes, - //@ts-ignore - body: config.shapes.eyeFrame.replace("body-", ""), - }, - }, - eyeFrameOnly: true, - }); - if (pathOnly) { - return path; - } else { - return ``; } - } - const path = eyeFrameFunction[shape]({ - matrixLength: matrixLength, - size: size, - position, - }); - if (pathOnly) { - return path; - } - return ``; }; export const generateEyeFrameSVGFromConfig = ( - config: Config, - matrixLength: number, - matrix: number[][], - isFromBody?: boolean + config: Config, + matrixLength: number, + matrix: number[][], + isFromBody?: boolean, ) => { - const shape = config.shapes.eyeFrame; - const colors = config.colors.eyeFrame; + const shape = config.shapes.eyeFrame; + const colors = config.colors.eyeFrame; - let svgString = ""; + let svgString = ''; - if (shape === "body") { - return ""; - } + if (shape === 'body') { + return ''; + } - //top-left - if ( - (colors.topLeft === "body" && isFromBody) || - (colors.topLeft !== "body" && !isFromBody) - ) { - svgString += generateEyeFrameSVG({ - shape, - color: colors.topLeft === "body" ? config.colors.body : colors.topLeft, - size: config.length, - matrixLength, - position: "topLeft", - pathOnly: colors.topLeft === "body", - config, - matrix, - }); - } + // top-left + if ((colors.topLeft === 'body' && isFromBody) || (colors.topLeft !== 'body' && !isFromBody)) { + svgString += generateEyeFrameSVG({ + shape, + color: colors.topLeft === 'body' ? config.colors.body : colors.topLeft, + size: config.length, + matrixLength, + position: 'topLeft', + pathOnly: colors.topLeft === 'body', + config, + matrix, + }); + } - //top-right - if ( - (colors.topRight === "body" && isFromBody) || - (colors.topRight !== "body" && !isFromBody) - ) { - svgString += generateEyeFrameSVG({ - shape, - color: colors.topRight === "body" ? config.colors.body : colors.topRight, - size: config.length, - matrixLength, - position: "topRight", - pathOnly: colors.topLeft === "body", - config, - matrix, - }); - } + // top-right + if ((colors.topRight === 'body' && isFromBody) || (colors.topRight !== 'body' && !isFromBody)) { + svgString += generateEyeFrameSVG({ + shape, + color: colors.topRight === 'body' ? config.colors.body : colors.topRight, + size: config.length, + matrixLength, + position: 'topRight', + pathOnly: colors.topLeft === 'body', + config, + matrix, + }); + } - //bottom-left - if ( - (colors.bottomLeft === "body" && isFromBody) || - (colors.bottomLeft !== "body" && !isFromBody) - ) { - svgString += generateEyeFrameSVG({ - shape, - color: - colors.bottomLeft === "body" ? config.colors.body : colors.bottomLeft, - size: config.length, - matrixLength, - position: "bottomLeft", - pathOnly: colors.topLeft === "body", - config, - matrix, - }); - } + // bottom-left + if ( + (colors.bottomLeft === 'body' && isFromBody) || + (colors.bottomLeft !== 'body' && !isFromBody) + ) { + svgString += generateEyeFrameSVG({ + shape, + color: colors.bottomLeft === 'body' ? config.colors.body : colors.bottomLeft, + size: config.length, + matrixLength, + position: 'bottomLeft', + pathOnly: colors.topLeft === 'body', + config, + matrix, + }); + } - return svgString; + return svgString; }; diff --git a/src/index.ts b/src/index.ts index 1e224b7..4e2f8c6 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,73 +1,68 @@ -import { - generateLinearGradientByConfig, - isGradientColor, -} from "./utils/gradient"; -import { Config } from "./config"; -import { generateEyeballSVGFromConfig } from "./eyeball"; -import { generateEyeFrameSVGFromConfig } from "./eyeframes"; -import { generatePath } from "./path"; -import { generateMatrix, renderLogoFromConfig } from "./utils"; +import { generateLinearGradientByConfig, isGradientColor } from './utils/gradient'; +import { Config, defaultConfig, BodyShape, EyeFrameShape, EyeballShape } from './config'; +import { generateEyeballSVGFromConfig } from './eyeball'; +import { generateEyeFrameSVGFromConfig } from './eyeframes'; +import { generatePath } from './path'; +import { generateMatrix, renderLogoFromConfig } from './utils'; const quietZone = 0; function isTransparent(color: string) { - if (color.startsWith("#")) { - return color === "#00000000" || color === "#0000"; - } else if (color.startsWith("rgba")) { - const rgbaValues = color.slice(5, -1).split(","); - const alpha = parseFloat(rgbaValues[3]); - return alpha === 0; - } else if (color.startsWith("rgb")) { - return color === "rgba(0,0,0,0)" || color === "rgba(0, 0, 0, 0)"; - } - return false; // Not transparent + if (color.startsWith('#')) { + return color === '#00000000' || color === '#0000'; + } + if (color.startsWith('rgba')) { + const rgbaValues = color.slice(5, -1).split(','); + const alpha = parseFloat(rgbaValues[3]); + return alpha === 0; + } + if (color.startsWith('rgb')) { + return color === 'rgba(0,0,0,0)' || color === 'rgba(0, 0, 0, 0)'; + } + return false; // Not transparent } export const generateSVGString = (config: Config) => { - const matrix = generateMatrix(config.value || "https://intosoft.com", "H"); + const matrix = generateMatrix(config.value || 'https://intosoft.com', 'H'); - const path = generatePath({ matrix, size: config.length, config }); + const path = generatePath({ matrix, size: config.length, config }); - const svg = ` + const svg = ` ${generateLinearGradientByConfig(config)} + config.length + quietZone * 2 + }" height="${config.length + quietZone * 2}" fill="${ + isTransparent(config.colors.background) ? 'none' : config.colors.background + }" /> - ${renderLogoFromConfig(config)} + ${renderLogoFromConfig(config, config.length / matrix.length)} + isGradientColor(config.colors.body) ? 'url(#body)' : config.colors.body + }" stroke="${isGradientColor(config.colors.body) ? 'url(#body)' : config.colors.body}" /> ${generateEyeFrameSVGFromConfig(config, matrix.length, matrix)} ${generateEyeballSVGFromConfig(config, matrix.length, matrix)} `; - return svg; + return svg; }; export default { - generateSVGString, + generateSVGString, + defaultConfig, }; -if (window) { - //@ts-ignore - window.IntosoftQRCode = { generateSVGString: generateSVGString }; -} +export type { BodyShape, EyeFrameShape, EyeballShape }; diff --git a/src/path/circle.ts b/src/path/circle.ts index 6f018ed..46c7d77 100644 --- a/src/path/circle.ts +++ b/src/path/circle.ts @@ -1,122 +1,95 @@ interface GenerateItemPathProps { - i: number; - j: number; - cellSize: number; - height?: number; - width?: number; + i: number; + j: number; + cellSize: number; + height?: number; + width?: number; } export const generateCirclePath = ({ - i, - j, - cellSize, - diameter: _diameter, + i, + j, + cellSize, + diameter: _diameter, }: GenerateItemPathProps & { diameter?: number }) => { - let path = ""; - const diameter = _diameter || cellSize; - const x = cellSize * j; - const y = cellSize * i; + let path = ''; + const diameter = _diameter || cellSize; + const x = cellSize * j; + const y = cellSize * i; - const cx = x + cellSize / 2; - const cy = y + cellSize / 2; + const cx = x + cellSize / 2; + const cy = y + cellSize / 2; - path += `M${cx},${cy} `; - path += `m-${diameter / 2},0 `; - path += `a${diameter / 2},${diameter / 2} 0 1,0 ${diameter},0 `; - path += `a${diameter / 2},${diameter / 2} 0 1,0 -${diameter},0 `; + path += `M${cx},${cy} `; + path += `m-${diameter / 2},0 `; + path += `a${diameter / 2},${diameter / 2} 0 1,0 ${diameter},0 `; + path += `a${diameter / 2},${diameter / 2} 0 1,0 -${diameter},0 `; - return path; -}; - -export const generateCircleOutlinePath = ({ - x, - y, - cellSize, - diameter: _diameter, -}: { - cellSize: number; - x: number; - y: number; - diameter?: number; -}) => { - let path = ""; - const diameter = _diameter || cellSize; - - const cx = x + cellSize / 2; - const cy = y + cellSize / 2; - - path += `M${cx + diameter / 2},${cy} `; - path += `a${diameter / 2},${diameter / 2} 0 1,0 -${diameter},0 `; - path += `a${diameter / 2},${diameter / 2} 0 1,0 ${diameter},0 `; - path += `M${cx + diameter / 2},${cy}`; - - return path; + return path; }; export const generateRoundedPath = ({ - i, - j, - width: _width, - height: _height, - cellSize, - roundedSide, + i, + j, + width: _width, + height: _height, + cellSize, + roundedSide, }: GenerateItemPathProps & { - roundedSide: "top" | "left" | "right" | "bottom"; + roundedSide: 'top' | 'left' | 'right' | 'bottom'; }) => { - const height = _height || cellSize; - const width = _width || cellSize; - let path = ""; + const height = _height || cellSize; + const width = _width || cellSize; + let path = ''; - const x = cellSize * j + (cellSize - width) / 2; - const y = cellSize * i + (cellSize - height) / 2; + const x = cellSize * j + (cellSize - width) / 2; + const y = cellSize * i + (cellSize - height) / 2; - const radius = Math.min(width, height) / 2; + const radius = Math.min(width, height) / 2; - let borderRadiusTopLeft = 0; - let borderRadiusTopRight = 0; - let borderRadiusBottomLeft = 0; - let borderRadiusBottomRight = 0; + let borderRadiusTopLeft = 0; + let borderRadiusTopRight = 0; + let borderRadiusBottomLeft = 0; + let borderRadiusBottomRight = 0; - switch (roundedSide) { - case "top": { - borderRadiusTopLeft = radius; - borderRadiusTopRight = radius; - break; + switch (roundedSide) { + case 'top': { + borderRadiusTopLeft = radius; + borderRadiusTopRight = radius; + break; + } + case 'right': { + borderRadiusTopRight = radius; + borderRadiusBottomRight = radius; + break; + } + case 'bottom': { + borderRadiusBottomLeft = radius; + borderRadiusBottomRight = radius; + break; + } + case 'left': { + borderRadiusTopLeft = radius; + borderRadiusBottomLeft = radius; + break; + } + default: + break; } - case "right": { - borderRadiusTopRight = radius; - borderRadiusBottomRight = radius; - break; - } - case "bottom": { - borderRadiusBottomLeft = radius; - borderRadiusBottomRight = radius; - break; - } - case "left": { - borderRadiusTopLeft = radius; - borderRadiusBottomLeft = radius; - break; - } - } - path += `M${x},${y + borderRadiusTopLeft} - A${borderRadiusTopLeft},${borderRadiusTopLeft},0,0,1,${ - x + borderRadiusTopLeft - },${y} + path += `M${x},${y + borderRadiusTopLeft} + A${borderRadiusTopLeft},${borderRadiusTopLeft},0,0,1,${x + borderRadiusTopLeft},${y} H${x + width - borderRadiusTopRight} - A${borderRadiusTopRight},${borderRadiusTopRight},0,0,1,${x + width},${ - y + borderRadiusTopRight - } + A${borderRadiusTopRight},${borderRadiusTopRight},0,0,1,${x + width},${y + borderRadiusTopRight} V${y + height - borderRadiusBottomRight} A${borderRadiusBottomRight},${borderRadiusBottomRight},0,0,1,${ - x + width - borderRadiusBottomRight + x + width - borderRadiusBottomRight },${y + height} H${x + borderRadiusBottomLeft} A${borderRadiusBottomLeft},${borderRadiusBottomLeft},0,0,1,${x},${ - y + height - borderRadiusBottomLeft + y + height - borderRadiusBottomLeft } V${y + borderRadiusTopLeft}Z`; - return path; + return path; }; diff --git a/src/path/generator.ts b/src/path/generator.ts index bdf1917..e64647d 100644 --- a/src/path/generator.ts +++ b/src/path/generator.ts @@ -1,191 +1,186 @@ -import { generateCirclePath, generateRoundedPath } from "./circle"; +import { generateCirclePath, generateRoundedPath } from './circle'; -import { - generateDiamondPath, - generateSquarePath, - generateStarPath, -} from "./square"; -import { Config } from "../config"; +import { generateDiamondPath, generateSquarePath, generateStarPath } from './square'; +import { Config } from '../config'; interface GeneratorPathProps { - config: Config; - i: number; - j: number; - cellSize: number; - neighbors: { - top: boolean; - bottom: boolean; - left: boolean; - right: boolean; - }; - isXFirst: boolean; - isXLast: boolean; - isYFirst: boolean; - isYLast: boolean; + config: Config; + i: number; + j: number; + cellSize: number; + neighbors: { + top: boolean; + bottom: boolean; + left: boolean; + right: boolean; + }; + isXFirst: boolean; + isXLast: boolean; + isYFirst: boolean; + isYLast: boolean; } export const pathGenerator = ({ - config, - i, - j, - cellSize, - neighbors, - isXFirst, - isXLast, - isYFirst, - isYLast, + config, + i, + j, + cellSize, + neighbors, + isXFirst, + isXLast, + isYLast, }: GeneratorPathProps) => { - let path = ""; - if (config.shapes.body === "square") { - path += generateSquarePath({ - i, - j, - height: cellSize, - width: cellSize, - cellSize, - }); - } else if (config.shapes.body === "square-small") { - path += generateSquarePath({ - i, - j, - height: cellSize - cellSize * 0.1, - width: cellSize - cellSize * 0.1, - cellSize: cellSize, - }); - } else if (config.shapes.body === "square-vertical") { - path += generateSquarePath({ - i, - j, - height: cellSize - cellSize * 0.1, - cellSize, - }); - } else if (config.shapes.body === "square-horizontal") { - path += generateSquarePath({ - i, - j, - width: cellSize - cellSize * 0.1, - cellSize, - }); - } else if (config.shapes.body === "diamond") { - path += generateDiamondPath({ - i, - j, - height: cellSize, - width: cellSize, - cellSize, - }); - } else if (config.shapes.body === "star") { - path += generateStarPath({ - i, - j, - height: cellSize, - width: cellSize, - cellSize, - }); - } else if (config.shapes.body === "star-small") { - path += generateStarPath({ - i, - j, - height: cellSize, - width: cellSize, - cellSize, - points: 4, - }); - } else if (config.shapes.body === "circle") { - path += generateCirclePath({ i, j, cellSize }); - } else if (config.shapes.body === "circle-small") { - path += generateCirclePath({ - i, - j, - cellSize, - diameter: cellSize - cellSize * 0.1, - }); - } else if (config.shapes.body === "rounded-horizontal") { - if (!neighbors.left && !neighbors.right) { - path += generateCirclePath({ - i, - j, - cellSize, - diameter: cellSize - cellSize * 0.1, - }); - return path; - } + let path = ''; + if (config.shapes.body === 'square') { + path += generateSquarePath({ + i, + j, + height: cellSize, + width: cellSize, + cellSize, + }); + } else if (config.shapes.body === 'square-small') { + path += generateSquarePath({ + i, + j, + height: cellSize - cellSize * 0.1, + width: cellSize - cellSize * 0.1, + cellSize, + }); + } else if (config.shapes.body === 'square-vertical') { + path += generateSquarePath({ + i, + j, + height: cellSize - cellSize * 0.1, + cellSize, + }); + } else if (config.shapes.body === 'square-horizontal') { + path += generateSquarePath({ + i, + j, + width: cellSize - cellSize * 0.1, + cellSize, + }); + } else if (config.shapes.body === 'diamond') { + path += generateDiamondPath({ + i, + j, + height: cellSize, + width: cellSize, + cellSize, + }); + } else if (config.shapes.body === 'star') { + path += generateStarPath({ + i, + j, + height: cellSize, + width: cellSize, + cellSize, + }); + } else if (config.shapes.body === 'star-small') { + path += generateStarPath({ + i, + j, + height: cellSize, + width: cellSize, + cellSize, + points: 4, + }); + } else if (config.shapes.body === 'circle') { + path += generateCirclePath({ i, j, cellSize }); + } else if (config.shapes.body === 'circle-small') { + path += generateCirclePath({ + i, + j, + cellSize, + diameter: cellSize - cellSize * 0.1, + }); + } else if (config.shapes.body === 'rounded-horizontal') { + if (!neighbors.left && !neighbors.right) { + path += generateCirclePath({ + i, + j, + cellSize, + diameter: cellSize - cellSize * 0.1, + }); + return path; + } - if (neighbors.left && neighbors.right) { - path += generateSquarePath({ - i, - j, - cellSize, - height: cellSize - cellSize * 0.1, - width: cellSize, - }); - return path; - } + if (neighbors.left && neighbors.right) { + path += generateSquarePath({ + i, + j, + cellSize, + height: cellSize - cellSize * 0.1, + width: cellSize, + }); + return path; + } - if (!neighbors.left || (neighbors.right && isXFirst)) { - path += generateRoundedPath({ - i, - j, - cellSize, - roundedSide: "left", - height: cellSize - cellSize * 0.1, - }); - return path; - } + if (!neighbors.left || (neighbors.right && isXFirst)) { + path += generateRoundedPath({ + i, + j, + cellSize, + roundedSide: 'left', + height: cellSize - cellSize * 0.1, + }); + return path; + } - if (!neighbors.right || (neighbors.left && isYLast)) { - path += generateRoundedPath({ - i, - j, - cellSize, - roundedSide: "right", - height: cellSize - cellSize * 0.1, - }); - return path; - } - } else if (config.shapes.body === "rounded-vertical") { - if (!neighbors.top && !neighbors.bottom) { - path += generateCirclePath({ - i, - j, - cellSize, - diameter: cellSize - cellSize * 0.1, - }); - return path; - } + if (!neighbors.right || (neighbors.left && isYLast)) { + path += generateRoundedPath({ + i, + j, + cellSize, + roundedSide: 'right', + height: cellSize - cellSize * 0.1, + }); + return path; + } + } else if (config.shapes.body === 'rounded-vertical') { + if (!neighbors.top && !neighbors.bottom) { + path += generateCirclePath({ + i, + j, + cellSize, + diameter: cellSize - cellSize * 0.1, + }); + return path; + } - if (neighbors.top && neighbors.bottom) { - path += generateSquarePath({ - i, - j, - cellSize, - width: cellSize - cellSize * 0.1, - }); - return path; - } + if (neighbors.top && neighbors.bottom) { + path += generateSquarePath({ + i, + j, + cellSize, + width: cellSize - cellSize * 0.1, + }); + return path; + } - if (!neighbors.top || (neighbors.bottom && isXFirst)) { - path += generateRoundedPath({ - i, - j, - cellSize, - roundedSide: "top", - width: cellSize - cellSize * 0.1, - }); - return path; - } + if (!neighbors.top || (neighbors.bottom && isXFirst)) { + path += generateRoundedPath({ + i, + j, + cellSize, + roundedSide: 'top', + width: cellSize - cellSize * 0.1, + }); + return path; + } - if (!neighbors.bottom || (neighbors.top && isXLast)) { - path += generateRoundedPath({ - i, - j, - cellSize, - roundedSide: "bottom", - width: cellSize - cellSize * 0.1, - }); - return path; + if (!neighbors.bottom || (neighbors.top && isXLast)) { + path += generateRoundedPath({ + i, + j, + cellSize, + roundedSide: 'bottom', + width: cellSize - cellSize * 0.1, + }); + return path; + } } - } - return path; + return path; }; diff --git a/src/path/index.ts b/src/path/index.ts index 70a9990..9dff879 100644 --- a/src/path/index.ts +++ b/src/path/index.ts @@ -1,145 +1,121 @@ -import { - getEyeBallPositions, - getEyeFramePositions, - getLogoPathPositions, -} from "./../utils"; +/* eslint-disable no-restricted-syntax */ +import { getEyeBallPositions, getEyeFramePositions, getLogoPathPositions } from '../utils'; + +import { Config } from '../config'; +import { checkNeighbors } from '../utils/path'; +import { generateEyeFrameSVGFromConfig } from '../eyeframes'; +import { generateEyeballSVGFromConfig } from '../eyeball'; +import { pathGenerator } from './generator'; -import { Config } from "../config"; -import { checkNeighbors } from "../utils/path"; -import { generateEyeFrameSVGFromConfig } from "../eyeframes"; -import { generateEyeballSVGFromConfig } from "../eyeball"; -import { pathGenerator } from "./generator"; interface GeneratePathProps { - size: number; - matrix: number[][]; - config: Config; - eyeballOnly?: boolean; - eyeFrameOnly?: boolean; + size: number; + matrix: number[][]; + config: Config; + eyeballOnly?: boolean; + eyeFrameOnly?: boolean; } export const generatePath = ({ - size, - matrix, - config, - eyeFrameOnly, - eyeballOnly, + size, + matrix: paramMatrix, + config, + eyeFrameOnly, + eyeballOnly, }: GeneratePathProps) => { - const cellSize = size / matrix.length; - const eyeBallPositions = getEyeBallPositions(matrix.length); - const eyeFramePositions = getEyeFramePositions(matrix.length); - const logoPathPositions = getLogoPathPositions(matrix.length); - let path = ""; + const matrix = paramMatrix; + const cellSize = size / matrix.length; + const eyeBallPositions = getEyeBallPositions(matrix.length); + const eyeFramePositions = getEyeFramePositions(matrix.length); + const logoPathPositions = getLogoPathPositions(matrix.length, config.logo?.size); + let path = ''; - matrix.forEach((row, i) => { - row.forEach((column, j) => { - for (let pos of logoPathPositions) { - if (pos[0] === i && pos[1] === j) { - matrix[i][j] = 0; - } - } - }); - }); + if (config.logo?.removeBg) { + matrix.forEach((row, i) => { + row.forEach((_, j) => { + for (const pos of logoPathPositions) { + if (pos[0] === i && pos[1] === j) { + matrix[i][j] = 0; + } + } + }); + }); + } - matrix.forEach((row, i) => { - row.forEach((column, j) => { - if (column) { - const neighbors = checkNeighbors({ matrix, i, j }); + matrix.forEach((row, i) => { + row.forEach((column, j) => { + if (column) { + const neighbors = checkNeighbors({ matrix, i, j }); - const isXLast = j == matrix.length - 1; - const isXFirst = j == 0; + const isXLast = j === matrix.length - 1; + const isXFirst = j === 0; - const isYLast = i == matrix.length - 1; - const isYFirst = i == 0; + const isYLast = i === matrix.length - 1; + const isYFirst = i === 0; - for (let pos of eyeFramePositions) { - if (pos[0] === i && pos[1] === j) { - if (eyeFrameOnly) { - path += pathGenerator({ - config, - i, - j, - isXFirst, - isXLast, - isYFirst, - isYLast, - neighbors, - cellSize, - }); - } - if (config.shapes.eyeFrame !== "body") { - return; - } - } - } + for (const pos of eyeFramePositions) { + if (pos[0] === i && pos[1] === j) { + if (eyeFrameOnly) { + path += pathGenerator({ + config, + i, + j, + isXFirst, + isXLast, + isYFirst, + isYLast, + neighbors, + cellSize, + }); + } + if (config.shapes.eyeFrame !== 'body') { + return; + } + } + } - for (let pos of eyeBallPositions) { - if (pos[0] === i && pos[1] === j) { - // if ( - // config.shapes.eyeball.includes("body-") && - // config.colors.eyeball.bottomLeft === "body" - // ) { - // path += pathGenerator({ - // config: { - // ...config, - // shapes: { - // ...config.shapes, - // //@ts-ignore - // body: config.shapes.eyeball.replace("body-", ""), - // }, - // }, - // i, - // j, - // isXFirst, - // isXLast, - // isYFirst, - // isYLast, - // neighbors, - // cellSize, - // }); - // return; - // } + for (const pos of eyeBallPositions) { + if (pos[0] === i && pos[1] === j) { + if (eyeballOnly) { + path += pathGenerator({ + config, + i, + j, + isXFirst, + isXLast, + isYFirst, + isYLast, + neighbors, + cellSize, + }); + } + if (config.shapes.eyeball !== 'body') { + return; + } + } + } - if (eyeballOnly) { - path += pathGenerator({ - config, - i, - j, - isXFirst, - isXLast, - isYFirst, - isYLast, - neighbors, - cellSize, - }); - } - if (config.shapes.eyeball !== "body") { - return; - } - } - } + if (eyeballOnly || eyeFrameOnly) { + return; + } - if (eyeballOnly || eyeFrameOnly) { - return; - } - - path += pathGenerator({ - config, - i, - j, - isXFirst, - isXLast, - isYFirst, - isYLast, - neighbors, - cellSize, + path += pathGenerator({ + config, + i, + j, + isXFirst, + isXLast, + isYFirst, + isYLast, + neighbors, + cellSize, + }); + } }); - } }); - }); - if (!eyeballOnly && !eyeFrameOnly) { - path += generateEyeFrameSVGFromConfig(config, matrix.length, matrix, true); - path += generateEyeballSVGFromConfig(config, matrix.length, matrix, true); - } + if (!eyeballOnly && !eyeFrameOnly) { + path += generateEyeFrameSVGFromConfig(config, matrix.length, matrix, true); + path += generateEyeballSVGFromConfig(config, matrix.length, matrix, true); + } - return path; + return path; }; diff --git a/src/path/square.ts b/src/path/square.ts index 3bb6417..a54ab4c 100644 --- a/src/path/square.ts +++ b/src/path/square.ts @@ -1,384 +1,312 @@ interface GenerateItemPathProps { - i: number; - j: number; - cellSize: number; - height?: number; - width?: number; + i: number; + j: number; + cellSize: number; + height?: number; + width?: number; } export const generateSquarePath = ({ - i, - j, - width: _width, - height: _height, - cellSize, + i, + j, + width: _width, + height: _height, + cellSize, }: GenerateItemPathProps) => { - const height = _height || cellSize; - const width = _width || cellSize; - let path = ""; + const height = _height || cellSize; + const width = _width || cellSize; + let path = ''; - const x = cellSize * j + (cellSize - width) / 2; - const y = cellSize * i + (cellSize - height) / 2; + const x = cellSize * j + (cellSize - width) / 2; + const y = cellSize * i + (cellSize - height) / 2; - path += `M${x},${y}`; - path += `h${width} v${height} h-${width} v-${height} `; + path += `M${x},${y}`; + path += `h${width} v${height} h-${width} v-${height} `; - return path; + return path; }; export const generateDiamondPath = ({ - i, - j, - width: _width, - height: _height, - cellSize, + i, + j, + width: _width, + height: _height, + cellSize, }: GenerateItemPathProps) => { - const height = _height || cellSize; - const width = _width || cellSize; - let path = ""; + const height = _height || cellSize; + const width = _width || cellSize; + let path = ''; - const x = cellSize * j + (cellSize - width) / 2; - const y = cellSize * i + (cellSize - height) / 2; + const x = cellSize * j + (cellSize - width) / 2; + const y = cellSize * i + (cellSize - height) / 2; - const midX = x + width / 2; - const midY = y + height / 2; + const midX = x + width / 2; + const midY = y + height / 2; - path += `M${midX},${y}`; - path += `L${x + width},${midY} `; - path += `L${midX},${y + height} `; - path += `L${x},${midY} `; - path += `L${midX},${y} `; + path += `M${midX},${y}`; + path += `L${x + width},${midY} `; + path += `L${midX},${y + height} `; + path += `L${x},${midY} `; + path += `L${midX},${y} `; - return path; + return path; }; export const generateStarPath = ({ - i, - j, - width: _width, - height: _height, - cellSize, - points = 5, + i, + j, + width: _width, + height: _height, + cellSize, + points = 5, }: GenerateItemPathProps & { points?: number }) => { - const height = _height || cellSize; - const width = _width || cellSize; - const halfWidth = width / 2; - const halfHeight = height / 2; - const cx = cellSize * j + halfWidth; - const cy = cellSize * i + halfHeight; - const outerRadius = Math.min(halfWidth, halfHeight); - const innerRadius = outerRadius / 2; - - let path = ""; - - for (let i = 0; i < points; i++) { - const outerX = - cx + outerRadius * Math.cos((Math.PI * 2 * i) / points - Math.PI / 2); - const outerY = - cy + outerRadius * Math.sin((Math.PI * 2 * i) / points - Math.PI / 2); - const innerX = - cx + - innerRadius * Math.cos((Math.PI * 2 * (i + 0.5)) / points - Math.PI / 2); - const innerY = - cy + - innerRadius * Math.sin((Math.PI * 2 * (i + 0.5)) / points - Math.PI / 2); - - if (i === 0) { - path += `M${outerX},${outerY} `; - } else { - path += `L${outerX},${outerY} `; + const height = _height || cellSize; + const width = _width || cellSize; + const halfWidth = width / 2; + const halfHeight = height / 2; + const cx = cellSize * j + halfWidth; + const cy = cellSize * i + halfHeight; + const outerRadius = Math.min(halfWidth, halfHeight); + const innerRadius = outerRadius / 2; + + let path = ''; + + for (let i = 0; i < points; i++) { + const outerX = cx + outerRadius * Math.cos((Math.PI * 2 * i) / points - Math.PI / 2); + const outerY = cy + outerRadius * Math.sin((Math.PI * 2 * i) / points - Math.PI / 2); + const innerX = + cx + innerRadius * Math.cos((Math.PI * 2 * (i + 0.5)) / points - Math.PI / 2); + const innerY = + cy + innerRadius * Math.sin((Math.PI * 2 * (i + 0.5)) / points - Math.PI / 2); + + if (i === 0) { + path += `M${outerX},${outerY} `; + } else { + path += `L${outerX},${outerY} `; + } + path += `${innerX},${innerY} `; } - path += `${innerX},${innerY} `; - } - path += "Z"; + path += 'Z'; - return path; + return path; }; export const generateOutlineSquarePath = ({ - x, - y, - length, - cellSize, + x, + y, + length, + cellSize, }: { - x: number; - y: number; - cellSize: number; - length: number; + x: number; + y: number; + cellSize: number; + length: number; }) => { - let path = ""; + let path = ''; - path += `M${x + length},${y + length}`; - path += `H${x}V${y}`; - path += `H${x + length}Z`; + path += `M${x + length},${y + length}`; + path += `H${x}V${y}`; + path += `H${x + length}Z`; - path += `M${x + cellSize},${y + length - cellSize}`; - path += `H${x + length - cellSize}V${y + cellSize}`; - path += `H${x + cellSize}Z`; + path += `M${x + cellSize},${y + length - cellSize}`; + path += `H${x + length - cellSize}V${y + cellSize}`; + path += `H${x + cellSize}Z`; - return path; + return path; }; export const generateOutlineRoundedSquarePath = ({ - x, - y, - length, - cellSize, - roundedCorners, + x, + y, + length, + cellSize, + roundedCorners, }: { - x: number; - y: number; - cellSize: number; - length: number; - roundedCorners: ("top-left" | "top-right" | "bottom-left" | "bottom-right")[]; + x: number; + y: number; + cellSize: number; + length: number; + roundedCorners: ('top-left' | 'top-right' | 'bottom-left' | 'bottom-right')[]; }) => { - const dynamic1 = length * 0.267; - let dynamic2 = length - dynamic1; - let dynamic3 = dynamic1 - cellSize; - - let path = ""; - - // Outer path - path += `M${x},${y + length}`; - - // Draw top-left corner - if (roundedCorners.includes("bottom-left")) { - path += `H${x + dynamic1}`; - path += `A${dynamic1},${dynamic1},0,0,1,${x},${y + dynamic2}`; - } else { - path += `H${x}`; - } - - // Draw top-right corner - if (roundedCorners.includes("top-left")) { - path += `V${y + dynamic1}`; - path += `A${dynamic1},${dynamic1},0,0,1,${x + dynamic1},${y}`; - } else { - path += `V${y}`; - } - - // Draw bottom-right corner - if (roundedCorners.includes("top-right")) { - path += `H${x + dynamic2}`; - path += `A${dynamic1},${dynamic1},0,0,1,${x + length},${y + dynamic1}`; - } else { - path += `H${x + length}`; - } - - // Draw bottom-left corner - if (roundedCorners.includes("bottom-right")) { - path += `V${y + dynamic2}`; - path += `A${dynamic1},${dynamic1},0,0,1,${x + dynamic2},${y + length}`; - } else { - path += `V${y + length}`; - } - - // Close outer path - path += `Z`; - - // Inner path - - let pathFixMX = x + dynamic1; - let pathFixMY = y + cellSize; - let hDynamic2 = dynamic2; - let vDynamic2 = dynamic2; - - let hDynamic3 = dynamic3; - let vDynamic3 = dynamic3; - - if (!roundedCorners.includes("top-left")) { - pathFixMX = x + cellSize; - } else { - } - - if (!roundedCorners.includes("bottom-left")) { - vDynamic2 = dynamic2 + cellSize / 1.25; - } - - if (!roundedCorners.includes("bottom-right")) { - hDynamic2 = dynamic2 + cellSize / 1.25; - } - - path += `M${pathFixMX},${pathFixMY}`; - if (roundedCorners.includes("top-left")) { - path += `a${vDynamic3},${vDynamic3},0,0,0,-${vDynamic3},${vDynamic3}`; - path += `V${y + vDynamic2}`; - } else { - path += `V${y + vDynamic2}`; - } - - if (roundedCorners.includes("bottom-left")) { - path += `a${hDynamic3},${hDynamic3},0,0,0,${hDynamic3},${hDynamic3}`; - path += `H${x + hDynamic2}`; - } else { - path += `H${x + hDynamic2}`; - } - - if (roundedCorners.includes("bottom-right")) { - path += `a${vDynamic3},${vDynamic3},0,0,0,${vDynamic3}-${vDynamic3}`; - path += `V${y + dynamic1}`; - } else { - path += `V${y + dynamic1}`; - } - - if (roundedCorners.includes("top-right")) { - path += `a${hDynamic3},${hDynamic3},0,0,0,-${hDynamic3}-${hDynamic3}`; - } else { - path += `V${y + cellSize}`; - } - - // Close inner path - path += `Z`; - - return path; + const dynamic1 = length * 0.267; + const dynamic2 = length - dynamic1; + const dynamic3 = dynamic1 - cellSize; + + let path = ''; + + // Outer path + path += `M${x},${y + length}`; + + // Draw top-left corner + if (roundedCorners.includes('bottom-left')) { + path += `H${x + dynamic1}`; + path += `A${dynamic1},${dynamic1},0,0,1,${x},${y + dynamic2}`; + } else { + path += `H${x}`; + } + + // Draw top-right corner + if (roundedCorners.includes('top-left')) { + path += `V${y + dynamic1}`; + path += `A${dynamic1},${dynamic1},0,0,1,${x + dynamic1},${y}`; + } else { + path += `V${y}`; + } + + // Draw bottom-right corner + if (roundedCorners.includes('top-right')) { + path += `H${x + dynamic2}`; + path += `A${dynamic1},${dynamic1},0,0,1,${x + length},${y + dynamic1}`; + } else { + path += `H${x + length}`; + } + + // Draw bottom-left corner + if (roundedCorners.includes('bottom-right')) { + path += `V${y + dynamic2}`; + path += `A${dynamic1},${dynamic1},0,0,1,${x + dynamic2},${y + length}`; + } else { + path += `V${y + length}`; + } + + // Close outer path + path += `Z`; + + // Inner path + + let pathFixMX = x + dynamic1; + const pathFixMY = y + cellSize; + let hDynamic2 = dynamic2; + let vDynamic2 = dynamic2; + + const hDynamic3 = dynamic3; + const vDynamic3 = dynamic3; + + if (!roundedCorners.includes('top-left')) { + pathFixMX = x + cellSize; + } + + if (!roundedCorners.includes('bottom-left')) { + vDynamic2 = dynamic2 + cellSize / 1.25; + } + + if (!roundedCorners.includes('bottom-right')) { + hDynamic2 = dynamic2 + cellSize / 1.25; + } + + path += `M${pathFixMX},${pathFixMY}`; + if (roundedCorners.includes('top-left')) { + path += `a${vDynamic3},${vDynamic3},0,0,0,-${vDynamic3},${vDynamic3}`; + path += `V${y + vDynamic2}`; + } else { + path += `V${y + vDynamic2}`; + } + + if (roundedCorners.includes('bottom-left')) { + path += `a${hDynamic3},${hDynamic3},0,0,0,${hDynamic3},${hDynamic3}`; + path += `H${x + hDynamic2}`; + } else { + path += `H${x + hDynamic2}`; + } + + if (roundedCorners.includes('bottom-right')) { + path += `a${vDynamic3},${vDynamic3},0,0,0,${vDynamic3}-${vDynamic3}`; + path += `V${y + dynamic1}`; + } else { + path += `V${y + dynamic1}`; + } + + if (roundedCorners.includes('top-right')) { + path += `a${hDynamic3},${hDynamic3},0,0,0,-${hDynamic3}-${hDynamic3}`; + } else { + path += `V${y + cellSize}`; + } + + // Close inner path + path += `Z`; + + return path; }; export const generateOutlineCirclePath = ({ - x, - y, - length, - cellSize, + x, + y, + length, + cellSize, }: { - x: number; - y: number; - cellSize: number; - length: number; + x: number; + y: number; + cellSize: number; + length: number; }) => { - let path = ""; - - const radius = length / 2; - path += `M${x + radius},${y + length}`; - path += `A${radius},${radius},0,1,1,${length + x},${ - radius + y - },${radius},${radius},0,0,1,${radius + x},${length + y}`; - path += `Z`; - path += `m${0},${-(length - cellSize)}`; - path += `A${radius - cellSize},${radius - cellSize},0,1,0,${ - length - cellSize + x - },${radius + y},${radius - cellSize},${radius - cellSize},0,0,0,${ - radius + x - },${cellSize + y}`; - path += `Z`; - - return path; + let path = ''; + + const radius = length / 2; + path += `M${x + radius},${y + length}`; + path += `A${radius},${radius},0,1,1,${length + x},${ + radius + y + },${radius},${radius},0,0,1,${radius + x},${length + y}`; + path += `Z`; + path += `m${0},${-(length - cellSize)}`; + path += `A${radius - cellSize},${radius - cellSize},0,1,0,${ + length - cellSize + x + },${radius + y},${radius - cellSize},${radius - cellSize},0,0,0,${radius + x},${cellSize + y}`; + path += `Z`; + + return path; }; export const generateRoundedCornerEyeballPath = ({ - x, - y, - length, - cellSize, - roundedCorners, -}: { - x: number; - y: number; - cellSize: number; - length: number; - roundedCorners: ("top-left" | "top-right" | "bottom-left" | "bottom-right")[]; -}) => { - let path = ""; - - const dynamic1 = length * 0.267; - const dynamic2 = length - dynamic1; - - path += `M${x},${y + length}`; - if (roundedCorners.includes("bottom-left")) { - path += `H${x + dynamic1}`; - path += `A${dynamic1},${dynamic1},0,0,1,${x},${y + dynamic2}`; - } else { - path += `H${x}`; - path += `A${0},${0},0,0,1,${x},${y}`; - } - if (roundedCorners.includes("top-left")) { - path += `V${y + dynamic1}`; - path += `A${dynamic1},${dynamic1},0,0,1,${x + dynamic1},${y}`; - } else { - path += `V${y}`; - path += `A${0},${0},0,0,1,${x + dynamic1},${y}`; - } - - if (roundedCorners.includes("top-right")) { - path += `H${x + dynamic2}`; - path += `A${dynamic1},${dynamic1},0,0,1,${x + length},${y + dynamic1}`; - } else { - path += `H${x}`; - path += `A${0},${0},0,0,1,${x + length},${y}`; - } - - if (roundedCorners.includes("bottom-right")) { - path += `V${y + length - dynamic1}`; - path += `A${dynamic1},${dynamic1},0,0,1,${x + dynamic2},${y + length}`; - } else { - path += `V${y + length}`; - path += `H${x + dynamic2}`; - } - - path += `Z`; - - return path; -}; - -export const generateStyle1EyeballPath = ({ - x, - y, - length, - cellSize, - roundedCorners, + x, + y, + length, + roundedCorners, }: { - x: number; - y: number; - cellSize: number; - length: number; - roundedCorners: ("top-left" | "top-right" | "bottom-left" | "bottom-right")[]; + x: number; + y: number; + cellSize: number; + length: number; + roundedCorners: ('top-left' | 'top-right' | 'bottom-left' | 'bottom-right')[]; }) => { - const cornerRadius = cellSize / 2; - let path = ""; + let path = ''; - path += `M${x},${y + cornerRadius}`; + const dynamic1 = length * 0.267; + const dynamic2 = length - dynamic1; - if (roundedCorners.includes("top-left")) { - path += `A${cornerRadius},${cornerRadius},0,0,1,${x + cornerRadius},${y}`; - path += `H${x + length - cornerRadius}`; - } else { - path += `H${x + length}`; - } - - if (!roundedCorners.includes("top-right")) { - path += `V${y}`; - } - - if (roundedCorners.includes("top-right")) { - path += `A${cornerRadius},${cornerRadius},0,0,1,${x + length},${ - y + cornerRadius - }`; - } - - path += `V${y + length - cornerRadius}`; - - if (!roundedCorners.includes("bottom-right")) { - path += `H${x + length}`; - } - - if (roundedCorners.includes("bottom-right")) { - path += `A${cornerRadius},${cornerRadius},0,0,1,${ - x + length - cornerRadius - },${y + length}`; - } - - path += `H${x + cornerRadius}`; + path += `M${x},${y + length}`; + if (roundedCorners.includes('bottom-left')) { + path += `H${x + dynamic1}`; + path += `A${dynamic1},${dynamic1},0,0,1,${x},${y + dynamic2}`; + } else { + path += `H${x}`; + path += `A${0},${0},0,0,1,${x},${y}`; + } + if (roundedCorners.includes('top-left')) { + path += `V${y + dynamic1}`; + path += `A${dynamic1},${dynamic1},0,0,1,${x + dynamic1},${y}`; + } else { + path += `V${y}`; + path += `A${0},${0},0,0,1,${x + dynamic1},${y}`; + } - if (!roundedCorners.includes("bottom-left")) { - path += `V${y + length}`; - } + if (roundedCorners.includes('top-right')) { + path += `H${x + dynamic2}`; + path += `A${dynamic1},${dynamic1},0,0,1,${x + length},${y + dynamic1}`; + } else { + path += `H${x}`; + path += `A${0},${0},0,0,1,${x + length},${y}`; + } - if (roundedCorners.includes("bottom-left")) { - path += `A${cornerRadius},${cornerRadius},0,0,1,${x},${ - y + length - cornerRadius - }`; - } + if (roundedCorners.includes('bottom-right')) { + path += `V${y + length - dynamic1}`; + path += `A${dynamic1},${dynamic1},0,0,1,${x + dynamic2},${y + length}`; + } else { + path += `V${y + length}`; + path += `H${x + dynamic2}`; + } - path += `Z`; + path += `Z`; - return path; + return path; }; diff --git a/src/path/types.ts b/src/path/types.ts deleted file mode 100644 index adc6eed..0000000 --- a/src/path/types.ts +++ /dev/null @@ -1,4 +0,0 @@ -interface GeneratePathProps { - cellSize: number; - matrix: number[][]; -} diff --git a/src/types.ts b/src/types.ts index 37dec9b..6fdbea5 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,33 +1,33 @@ -import { Config, EyeFrameShape, EyeballShape } from "./config"; +import { Config, EyeFrameShape, EyeballShape } from './config'; -export interface StylePathGeneratorParams { - matrixLength: number; - size: number; +interface StylePathGeneratorParams { + matrixLength: number; + size: number; } -export type EyePosition = "topLeft" | "topRight" | "bottomLeft"; +type EyePosition = 'topLeft' | 'topRight' | 'bottomLeft'; export interface GenerateEyeballSVGParams { - shape: EyeballShape; - color: string; - size: number; - matrixLength: number; - position: EyePosition; - pathOnly: boolean; - matrix: number[][]; - config: Config; + shape: EyeballShape; + color: string; + size: number; + matrixLength: number; + position: EyePosition; + pathOnly: boolean; + matrix: number[][]; + config: Config; } export interface GenerateEyeFrameSVGParams { - shape: EyeFrameShape; - color: string; - size: number; - matrixLength: number; - position: EyePosition; - pathOnly: boolean; - matrix: number[][]; - config: Config; + shape: EyeFrameShape; + color: string; + size: number; + matrixLength: number; + position: EyePosition; + pathOnly: boolean; + matrix: number[][]; + config: Config; } export interface StyledEyePathGeneratorParams extends StylePathGeneratorParams { - position: EyePosition; + position: EyePosition; } diff --git a/src/utils.ts b/src/utils.ts index d30f468..dbacec8 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,168 +1,144 @@ -import { Config } from "./config"; -import QRCode, { QRCodeErrorCorrectionLevel } from "qrcode"; - -export const generateMatrix = ( - value: string, - errorCorrectionLevel: QRCodeErrorCorrectionLevel -) => { - const arr = Array.from( - QRCode.create(value, { errorCorrectionLevel }).modules.data - ); - const sqrt = Math.sqrt(arr.length); - - const rows = []; - for (let i = 0; i < arr.length; i += sqrt) { - rows.push(arr.slice(i, i + sqrt)); - } - - return rows; +import QRCode, { QRCodeErrorCorrectionLevel } from 'qrcode'; +import { Config } from './config'; + +interface GetPositions { + matrixLength: number; + offset: number; + count: number; +} + +const getPositions = ({ matrixLength, offset, count }: GetPositions) => { + const lastPosition = matrixLength - 1; + const emptyArray = Array(count).fill(''); + const countPosition = count - 1; + + return [ + // top-left + // horizontal + ...emptyArray.map((_, index) => [index + offset, 0 + offset]), + ...emptyArray.map((_, index) => [index + offset, countPosition + offset]), + // vertical + ...emptyArray.map((_, index) => [0 + offset, index + offset]), + ...emptyArray.map((_, index) => [countPosition + offset, index + offset]), + + // top-right + // horizontal + ...emptyArray.map((_, index) => [lastPosition - index - offset, 0 + offset]), + ...emptyArray.map((_, index) => [lastPosition - index - offset, countPosition + offset]), + // vertical + ...emptyArray.map((_, index) => [lastPosition - offset, index + offset]), + ...emptyArray.map((_, index) => [lastPosition - countPosition - offset, index + offset]), + + // bottom-left + // horizontal + ...emptyArray.map((_, index) => [index + offset, lastPosition - offset]), + ...emptyArray.map((_, index) => [index + offset, lastPosition - countPosition - offset]), + // vertical + ...emptyArray.map((_, index) => [0 + offset, lastPosition - index - offset]), + ...emptyArray.map((_, index) => [countPosition + offset, lastPosition - index - offset]), + ]; +}; +export const generateMatrix = (value: string, errorCorrectionLevel: QRCodeErrorCorrectionLevel) => { + const arr = Array.from(QRCode.create(value, { errorCorrectionLevel }).modules.data); + const sqrt = Math.sqrt(arr.length); + + const rows = []; + for (let i = 0; i < arr.length; i += sqrt) { + rows.push(arr.slice(i, i + sqrt)); + } + + return rows; }; export const getEyeFramePositions = (matrixLength: number) => { - const count = 7; - const offset = 0; - return getPositions({ matrixLength, count, offset }); + const count = 7; + const offset = 0; + return getPositions({ matrixLength, count, offset }); }; export const getEyeBallPositions = (matrixLength: number) => { - const count = 3; - const offset = 2; - - const innerItems = [ - //top-left - [3, 3], - //top-right - [matrixLength - 1 - 3, 3], - //bottom-left - [3, matrixLength - 1 - 3], - ]; - return [...getPositions({ matrixLength, count, offset }), ...innerItems]; + const count = 3; + const offset = 2; + + const innerItems = [ + // top-left + [3, 3], + // top-right + [matrixLength - 1 - 3, 3], + // bottom-left + [3, matrixLength - 1 - 3], + ]; + return [...getPositions({ matrixLength, count, offset }), ...innerItems]; }; -interface GetPositions { - matrixLength: number; - offset: number; - count: number; -} - -export const getPositions = ({ matrixLength, offset, count }: GetPositions) => { - const lastPosition = matrixLength - 1; - const emptyArray = Array(count).fill(""); - const countPosition = count - 1; - - return [ - //top-left - // horizontal - ...emptyArray.map((_, index) => [index + offset, 0 + offset]), - ...emptyArray.map((_, index) => [index + offset, countPosition + offset]), - // vertical - ...emptyArray.map((_, index) => [0 + offset, index + offset]), - ...emptyArray.map((_, index) => [countPosition + offset, index + offset]), - - // top-right - // horizontal - ...emptyArray.map((_, index) => [ - lastPosition - index - offset, - 0 + offset, - ]), - ...emptyArray.map((_, index) => [ - lastPosition - index - offset, - countPosition + offset, - ]), - // vertical - ...emptyArray.map((_, index) => [lastPosition - offset, index + offset]), - ...emptyArray.map((_, index) => [ - lastPosition - countPosition - offset, - index + offset, - ]), - - // bottom-left - // horizontal - ...emptyArray.map((_, index) => [index + offset, lastPosition - offset]), - ...emptyArray.map((_, index) => [ - index + offset, - lastPosition - countPosition - offset, - ]), - // vertical - ...emptyArray.map((_, index) => [ - 0 + offset, - lastPosition - index - offset, - ]), - ...emptyArray.map((_, index) => [ - countPosition + offset, - lastPosition - index - offset, - ]), - ]; -}; interface GetEyesPositionProps { - matrixLength: number; - cellSize: number; + matrixLength: number; + cellSize: number; } -export const getPositionForEyes = ({ - matrixLength, - cellSize, -}: GetEyesPositionProps) => { - return { +export const getPositionForEyes = ({ matrixLength, cellSize }: GetEyesPositionProps) => ({ eyeball: { - topLeft: { - x: 3.5 * cellSize, - y: 3.5 * cellSize, - }, - topRight: { - x: (matrixLength - 3.5) * cellSize, - y: 3.5 * cellSize, - }, - bottomLeft: { - x: 3.5 * cellSize, - y: (matrixLength - 3.5) * cellSize, - }, + topLeft: { + x: 3.5 * cellSize, + y: 3.5 * cellSize, + }, + topRight: { + x: (matrixLength - 3.5) * cellSize, + y: 3.5 * cellSize, + }, + bottomLeft: { + x: 3.5 * cellSize, + y: (matrixLength - 3.5) * cellSize, + }, }, eyeFrame: { - topLeft: { - x: 0, - y: 0, - }, - topRight: { - x: (matrixLength - 7) * cellSize, - y: 0, - }, - bottomLeft: { - x: 0, - y: (matrixLength - 7) * cellSize, - }, + topLeft: { + x: 0, + y: 0, + }, + topRight: { + x: (matrixLength - 7) * cellSize, + y: 0, + }, + bottomLeft: { + x: 0, + y: (matrixLength - 7) * cellSize, + }, }, - }; -}; +}); + +export const renderLogoFromConfig = (config: Config, cellSize: number) => { + if (config.logo?.url) { + const height = config.logo.size * cellSize; + const width = config.logo.size * cellSize; -export const renderLogoFromConfig = (config: Config) => { - if (config.logo?.url) { - const centerX = (config.length - config.logo.width) / 2; - const centerY = (config.length - config.logo.height) / 2; - return ``; - } + height="${height}" + width="${width}" x="${centerX}" y="${centerY}" />`; + } - return ""; + return ''; }; -export const getLogoPathPositions = (matrixLength: number) => { - const count = 7; - const startPos = Math.ceil((matrixLength - 1) / 2 - count / 2); - - const positions = Array(count) - .fill(0) - .map((_, i) => { - return Array(count) - .fill(0) - .map((_, j) => { - return [startPos + i, startPos + j]; - }); - }) - .flat(); - - return positions; +export const getLogoPathPositions = (matrixLength: number, size?: number) => { + if (size) { + const count = size; + const startPos = Math.ceil((matrixLength - 1) / 2 - count / 2); + + const positions = Array(count) + .fill(0) + .map((_, i) => + Array(count) + .fill(0) + .map((_, j) => [startPos + i, startPos + j]), + ) + .flat(); + + return positions; + } + return []; }; diff --git a/src/utils/gradient.ts b/src/utils/gradient.ts index 801efad..c2ce013 100644 --- a/src/utils/gradient.ts +++ b/src/utils/gradient.ts @@ -1,84 +1,66 @@ -import { Config } from "../config"; +import { Config } from '../config'; -export type SVGId = - | "body" - | "background" - | "eyeFrame" - | "eyeball" - | "eyeball-tl" - | "eyeball-tr" - | "eyeball-bl" - | "eyeFrame-tl" - | "eyeFrame-tr" - | "eyeFrame-bl"; +export const isGradientColor = (color: string) => color.includes('linear-gradient'); -export const isGradientColor = (color: string) => - color.includes("linear-gradient"); - -export const generateLinearGradientByConfig = (config: Config) => { - let svgString = ""; - - if (isGradientColor(config.colors.body)) { - svgString += generateSvgLinearGradient(config.colors.body, "body"); - } - if (isGradientColor(config.colors.eyeFrame.topLeft)) { - svgString += generateSvgLinearGradient( - config.colors.eyeFrame.topLeft, - "eyeFrame" - ); - } - if (isGradientColor(config.colors.eyeball.topLeft)) { - svgString += generateSvgLinearGradient( - config.colors.eyeball.topLeft, - "eyeball" +const parseLinearGradient = (input: string) => { + const parts = input.match( + /(\d+)deg|rgba?\(\d+,\s*\d+,\s*\d+,\s*[\d.]+\)|RGB\(\d+,\s*\d+,\s*\d+\)/g, ); - } - - return svgString; + if (!parts) { + throw new Error('no parts found'); + } + const angle = parts[0].split('deg')[0]; + const stops = parts.slice(1).map((part) => { + let color; + let percentage; + if (part.includes('rgba')) { + [color] = part.split(' '); + [, percentage] = part.split(' '); + } else if (part.includes('RGB')) { + color = part; + percentage = null; + } + return { color, percentage }; + }); + return { angle, stops }; }; -export const parseLinearGradient = (input: string) => { - const parts = input.match( - /(\d+)deg|rgba?\(\d+,\s*\d+,\s*\d+,\s*[\d.]+\)|RGB\(\d+,\s*\d+,\s*\d+\)/g - ); - if (!parts) { - throw "no parts found"; - } - const angle = parts[0].split("deg")[0]; - const stops = parts.slice(1).map((part) => { - let color, percentage; - if (part.includes("rgba")) { - color = part.split(" ")[0]; - percentage = part.split(" ")[1]; - } else if (part.includes("RGB")) { - color = part; - percentage = null; +const generateSvgLinearGradient = (input: string, id: string) => { + try { + const { angle, stops } = parseLinearGradient(input); + if (!stops) { + return ''; + } + let svgCode = `\n`; + let offset = 0; + stops.forEach((stop) => { + const offsetValue = stop?.percentage ? stop.percentage : `${offset}%`; + svgCode += ` \n`; + if (!stop?.percentage) { + offset += 100 / (stops.length - 1); + } + }); + svgCode += ``; + + return svgCode; + } catch (err) { + console.error(err); } - return { color, percentage }; - }); - return { angle, stops }; + return ''; }; -export const generateSvgLinearGradient = (input: string, id: string) => { - try { - const { angle, stops } = parseLinearGradient(input); - if (!stops) { - return ""; +export const generateLinearGradientByConfig = (config: Config) => { + let svgString = ''; + + if (isGradientColor(config.colors.body)) { + svgString += generateSvgLinearGradient(config.colors.body, 'body'); + } + if (isGradientColor(config.colors.eyeFrame.topLeft)) { + svgString += generateSvgLinearGradient(config.colors.eyeFrame.topLeft, 'eyeFrame'); + } + if (isGradientColor(config.colors.eyeball.topLeft)) { + svgString += generateSvgLinearGradient(config.colors.eyeball.topLeft, 'eyeball'); } - let svgCode = `\n`; - let offset = 0; - stops.forEach((stop) => { - const offsetValue = stop?.percentage ? stop.percentage : `${offset}%`; - svgCode += ` \n`; - if (!stop?.percentage) { - offset += 100 / (stops.length - 1); - } - }); - svgCode += ``; - return svgCode; - } catch (err) { - console.error(err); - } - return ""; + return svgString; }; diff --git a/src/utils/path.ts b/src/utils/path.ts index d74431c..af2ce39 100644 --- a/src/utils/path.ts +++ b/src/utils/path.ts @@ -1,36 +1,36 @@ interface CheckNeighborsParams { - matrix: number[][]; - i: number; - j: number; + matrix: number[][]; + i: number; + j: number; } export const checkNeighbors = ({ matrix, i, j }: CheckNeighborsParams) => { - const numRows = matrix.length; - const numCols = matrix[0].length; - const neighbors = { - top: false, - bottom: false, - left: false, - right: false, - }; + const numRows = matrix.length; + const numCols = matrix[0].length; + const neighbors = { + top: false, + bottom: false, + left: false, + right: false, + }; - if (matrix[i][j] === 1) { - if (i > 0 && matrix[i - 1][j] === 1) { - neighbors.top = true; - } + if (matrix[i][j] === 1) { + if (i > 0 && matrix[i - 1][j] === 1) { + neighbors.top = true; + } - if (i < numRows - 1 && matrix[i + 1][j] === 1) { - neighbors.bottom = true; - } + if (i < numRows - 1 && matrix[i + 1][j] === 1) { + neighbors.bottom = true; + } - if (j > 0 && matrix[i][j - 1] === 1) { - neighbors.left = true; - } + if (j > 0 && matrix[i][j - 1] === 1) { + neighbors.left = true; + } - if (j < numCols - 1 && matrix[i][j + 1] === 1) { - neighbors.right = true; + if (j < numCols - 1 && matrix[i][j + 1] === 1) { + neighbors.right = true; + } } - } - return neighbors; + return neighbors; }; diff --git a/tsconfig.json b/tsconfig.json index 2c018dd..93287ca 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,110 +1,110 @@ { - "compilerOptions": { - /* Visit https://aka.ms/tsconfig to read more about this file */ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ - /* Projects */ - // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - /* Language and Environment */ - "target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ - // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + /* Language and Environment */ + "target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - /* Modules */ - "module": "commonjs" /* Specify what module code is generated. */, - // "rootDir": "./", /* Specify the root folder within your source files. */ - // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ - "baseUrl": "./src" /* Specify the base directory to resolve non-relative module names. */, - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ - // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ - // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ - // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ - // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ - // "resolveJsonModule": true, /* Enable importing .json files. */ - // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ - // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + /* Modules */ + "module": "commonjs" /* Specify what module code is generated. */, + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + "baseUrl": "./src" /* Specify the base directory to resolve non-relative module names. */, + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - "outDir": "./dist" /* Specify an output folder for all emitted files. */, - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + "outDir": "./dist" /* Specify an output folder for all emitted files. */, + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, - /* Type Checking */ - "strict": true /* Enable all strict type-checking options. */, - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ - // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + /* Type Checking */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ - }, - "exclude": ["node_modules", "./examples/*", "./web/*", "./test.ts"] + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + }, + "exclude": ["node_modules", "./examples/*", "./web/*", "./test.ts"] } diff --git a/yarn.lock b/yarn.lock index 3eb4e36..1be8a6a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,25 @@ # yarn lockfile v1 +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + +"@colors/colors@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0" + integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== + +"@dabh/diagnostics@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" + integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== + dependencies: + colorspace "1.1.x" + enabled "2.0.x" + kuler "^2.0.0" + "@esbuild/aix-ppc64@0.19.12": version "0.19.12" resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f" @@ -232,6 +251,93 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.1.tgz#77583b6ea54cee7c1410ebbd54051b6a3fcbd8ba" integrity sha512-0MBh53o6XtI6ctDnRMeQ+xoCN8kD2qI1rY1KgF/xdWQwoFeKou7puvDfV8/Wv4Ctx2rRpET/gGdz3YlNtNACSA== +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + 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.57.0": + version "8.57.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" + integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== + +"@humanwhocodes/config-array@^0.11.14": + version "0.11.14" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== + dependencies: + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" + integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + 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.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@pkgr/core@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" + integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== + +"@types/json-schema@^7.0.12": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + "@types/node@*": version "20.11.20" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.20.tgz#f0a2aee575215149a62784210ad88b3a34843659" @@ -246,23 +352,323 @@ dependencies: "@types/node" "*" +"@types/semver@^7.5.0": + version "7.5.8" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" + integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== + +"@types/triple-beam@^1.3.2": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c" + integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw== + +"@typescript-eslint/eslint-plugin@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.1.1.tgz#dd71fc5c7ecec745ca26ece506d84d203a205c0e" + integrity sha512-zioDz623d0RHNhvx0eesUmGfIjzrk18nSBC8xewepKXbBvN/7c1qImV7Hg8TI1URTxKax7/zxfxj3Uph8Chcuw== + dependencies: + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "7.1.1" + "@typescript-eslint/type-utils" "7.1.1" + "@typescript-eslint/utils" "7.1.1" + "@typescript-eslint/visitor-keys" "7.1.1" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/parser@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.1.1.tgz#6a9d0a5c9ccdf5dbd3cb8c949728c64e24e07d1f" + integrity sha512-ZWUFyL0z04R1nAEgr9e79YtV5LbafdOtN7yapNbn1ansMyaegl2D4bL7vHoJ4HPSc4CaLwuCVas8CVuneKzplQ== + dependencies: + "@typescript-eslint/scope-manager" "7.1.1" + "@typescript-eslint/types" "7.1.1" + "@typescript-eslint/typescript-estree" "7.1.1" + "@typescript-eslint/visitor-keys" "7.1.1" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.1.1.tgz#9e301803ff8e21a74f50c6f89a4baccad9a48f93" + integrity sha512-cirZpA8bJMRb4WZ+rO6+mnOJrGFDd38WoXCEI57+CYBqta8Yc8aJym2i7vyqLL1vVYljgw0X27axkUXz32T8TA== + dependencies: + "@typescript-eslint/types" "7.1.1" + "@typescript-eslint/visitor-keys" "7.1.1" + +"@typescript-eslint/type-utils@7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.1.1.tgz#aee820d5bedd39b83c18585a526cc520ddb7a226" + integrity sha512-5r4RKze6XHEEhlZnJtR3GYeCh1IueUHdbrukV2KSlLXaTjuSfeVF8mZUVPLovidCuZfbVjfhi4c0DNSa/Rdg5g== + dependencies: + "@typescript-eslint/typescript-estree" "7.1.1" + "@typescript-eslint/utils" "7.1.1" + debug "^4.3.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/types@7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.1.1.tgz#ca33ba7cf58224fb46a84fea62593c2c53cd795f" + integrity sha512-KhewzrlRMrgeKm1U9bh2z5aoL4s7K3tK5DwHDn8MHv0yQfWFz/0ZR6trrIHHa5CsF83j/GgHqzdbzCXJ3crx0Q== + +"@typescript-eslint/typescript-estree@7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.1.1.tgz#09c54af0151a1b05d0875c0fc7fe2ec7a2476ece" + integrity sha512-9ZOncVSfr+sMXVxxca2OJOPagRwT0u/UHikM2Rd6L/aB+kL/QAuTnsv6MeXtjzCJYb8PzrXarypSGIPx3Jemxw== + dependencies: + "@typescript-eslint/types" "7.1.1" + "@typescript-eslint/visitor-keys" "7.1.1" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "9.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.1.1.tgz#bdeeb789eee4af5d3fb5400a69566d4dbf97ff3b" + integrity sha512-thOXM89xA03xAE0lW7alstvnyoBUbBX38YtY+zAUcpRPcq9EIhXPuJ0YTv948MbzmKh6e1AUszn5cBFK49Umqg== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "7.1.1" + "@typescript-eslint/types" "7.1.1" + "@typescript-eslint/typescript-estree" "7.1.1" + semver "^7.5.4" + +"@typescript-eslint/visitor-keys@7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.1.1.tgz#e6538a58c9b157f03bcbb29e3b6a92fe39a6ab0d" + integrity sha512-yTdHDQxY7cSoCcAtiBzVzxleJhkGB9NncSIyMYe2+OGON1ZsP9zOPws/Pqgopa65jvknOjlk/w7ulPlZ78PiLQ== + dependencies: + "@typescript-eslint/types" "7.1.1" + eslint-visitor-keys "^3.4.1" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^4.0.0: +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + 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.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +args@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/args/-/args-5.0.3.tgz#943256db85021a85684be2f0882f25d796278702" + integrity sha512-h6k/zfFgusnv3i5TU08KQkVKuCPBtL/PWQbWkHUxvJrZ2nAyeaUupneemcrgn1xmqxPQsPIzwkUhOpoqPDRZuA== + dependencies: + camelcase "5.0.0" + chalk "2.4.2" + leven "2.1.0" + mri "1.1.4" + +array-buffer-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" + integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== + dependencies: + call-bind "^1.0.5" + is-array-buffer "^3.0.4" + +array-includes@^3.1.7: + version "3.1.7" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array.prototype.filter@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz#423771edeb417ff5914111fff4277ea0624c0d0e" + integrity sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" + +array.prototype.findlastindex@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.4.tgz#d1c50f0b3a9da191981ff8942a0aedd82794404f" + integrity sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.3.0" + es-shim-unscopables "^1.0.2" + +array.prototype.flat@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +arraybuffer.prototype.slice@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" + integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== + dependencies: + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.2.1" + get-intrinsic "^1.2.3" + is-array-buffer "^3.0.4" + is-shared-array-buffer "^1.0.2" + +async@^3.2.3: + version "3.2.5" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" + integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== + +available-typed-arrays@^1.0.6, available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + 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.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== + camelcase@^5.0.0: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +chalk@2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + cliui@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" @@ -272,6 +678,13 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" +color-convert@^1.9.0, color-convert@^1.9.3: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + 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.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" @@ -279,31 +692,241 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@~1.1.4: +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-string@^1.6.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.1.3: + version "3.2.1" + resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== + dependencies: + color-convert "^1.9.3" + color-string "^1.6.0" + +colorspace@1.1.x: + version "1.1.4" + resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" + integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== + dependencies: + color "^3.1.3" + text-hex "1.0.x" + +commander@^2.9.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +confusing-browser-globals@^1.0.10: + version "1.0.11" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" + integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== + +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +define-data-property@^1.0.1, define-data-property@^1.1.2, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + integrity sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q== + dijkstrajs@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz#4c8dbdea1f0f6478bff94d9c49c784d623e4fc23" integrity sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA== +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +enabled@2.0.x: + version "2.0.0" + resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" + integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== + encode-utf8@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda" integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw== +es-abstract@^1.22.1, es-abstract@^1.22.3: + version "1.22.5" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.5.tgz#1417df4e97cc55f09bf7e58d1e614bc61cb8df46" + integrity sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w== + dependencies: + array-buffer-byte-length "^1.0.1" + arraybuffer.prototype.slice "^1.0.3" + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + es-define-property "^1.0.0" + es-errors "^1.3.0" + es-set-tostringtag "^2.0.3" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.4" + get-symbol-description "^1.0.2" + globalthis "^1.0.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + has-proto "^1.0.3" + has-symbols "^1.0.3" + hasown "^2.0.1" + internal-slot "^1.0.7" + is-array-buffer "^3.0.4" + is-callable "^1.2.7" + is-negative-zero "^2.0.3" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.3" + is-string "^1.0.7" + is-typed-array "^1.1.13" + is-weakref "^1.0.2" + object-inspect "^1.13.1" + object-keys "^1.1.1" + object.assign "^4.1.5" + regexp.prototype.flags "^1.5.2" + safe-array-concat "^1.1.0" + safe-regex-test "^1.0.3" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.2" + typed-array-byte-length "^1.0.1" + typed-array-byte-offset "^1.0.2" + typed-array-length "^1.0.5" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.14" + +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.0.0, es-errors@^1.2.1, es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-set-tostringtag@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" + integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== + dependencies: + get-intrinsic "^1.2.4" + has-tostringtag "^1.0.2" + hasown "^2.0.1" + +es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== + dependencies: + hasown "^2.0.0" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + esbuild@^0.20.1: version "0.20.1" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.1.tgz#1e4cbb380ad1959db7609cb9573ee77257724a3e" @@ -362,6 +985,240 @@ esbuild@~0.19.10: "@esbuild/win32-ia32" "0.19.12" "@esbuild/win32-x64" "0.19.12" +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-config-airbnb-base@^15.0.0: + version "15.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz#6b09add90ac79c2f8d723a2580e07f3925afd236" + integrity sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig== + dependencies: + confusing-browser-globals "^1.0.10" + object.assign "^4.1.2" + object.entries "^1.1.5" + semver "^6.3.0" + +eslint-config-prettier@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" + integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== + +eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +eslint-module-utils@^2.8.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#52f2404300c3bd33deece9d7372fb337cc1d7c34" + integrity sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q== + dependencies: + debug "^3.2.7" + +eslint-plugin-import@^2.29.1: + version "2.29.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" + integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== + dependencies: + array-includes "^3.1.7" + array.prototype.findlastindex "^1.2.3" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.8.0" + hasown "^2.0.0" + is-core-module "^2.13.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.7" + object.groupby "^1.0.1" + object.values "^1.1.7" + semver "^6.3.1" + tsconfig-paths "^3.15.0" + +eslint-plugin-prettier@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz#17cfade9e732cef32b5f5be53bd4e07afd8e67e1" + integrity sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw== + dependencies: + prettier-linter-helpers "^1.0.0" + synckit "^0.8.6" + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + 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.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.57.0: + version "8.57.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" + integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.0" + "@humanwhocodes/config-array" "^0.11.14" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + 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.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw== + dependencies: + homedir-polyfill "^1.0.1" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-diff@^1.1.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" + integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== + +fast-glob@^3.2.9: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + 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.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + +fecha@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" + integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-node-modules@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/find-node-modules/-/find-node-modules-2.1.3.tgz#3c976cff2ca29ee94b4f9eafc613987fc4c0ee44" + integrity sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg== + dependencies: + findup-sync "^4.0.0" + merge "^2.1.1" + find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -370,16 +1227,105 @@ find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +findup-sync@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-4.0.0.tgz#956c9cdde804052b881b428512905c4a5f2cdef0" + integrity sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ== + dependencies: + detect-file "^1.0.0" + is-glob "^4.0.0" + micromatch "^4.0.2" + resolve-dir "^1.0.1" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + 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.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== + +fn.name@1.x.x: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" + integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + fsevents@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +get-symbol-description@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" + integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== + dependencies: + call-bind "^1.0.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + get-tsconfig@^4.7.2: version "4.7.2" resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.2.tgz#0dcd6fb330391d46332f4c6c1bf89a6514c2ddce" @@ -387,11 +1333,391 @@ get-tsconfig@^4.7.2: dependencies: resolve-pkg-maps "^1.0.0" +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg== + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.1, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1, has-proto@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0, has-tostringtag@^1.0.1, has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +hasown@^2.0.0, hasown@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.1.tgz#26f48f039de2c0f8d3356c223fb8d50253519faa" + integrity sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA== + dependencies: + function-bind "^1.1.2" + +homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + +ignore@^5.2.0, ignore@^5.2.4: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== + +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@^1.3.4: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +internal-slot@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" + integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== + dependencies: + es-errors "^1.3.0" + hasown "^2.0.0" + side-channel "^1.0.4" + +is-array-buffer@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" + integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.13.0, is-core-module@^2.13.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 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.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-negative-zero@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" + integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== + dependencies: + call-bind "^1.0.7" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== + dependencies: + which-typed-array "^1.1.14" + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-windows@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +kuler@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" + integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== + +leven@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" + integrity sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -399,6 +1725,222 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +logform@^2.3.2, logform@^2.4.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/logform/-/logform-2.6.0.tgz#8c82a983f05d6eaeb2d75e3decae7a768b2bf9b5" + integrity sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ== + dependencies: + "@colors/colors" "1.6.0" + "@types/triple-beam" "^1.3.2" + fecha "^4.2.0" + ms "^2.1.1" + safe-stable-stringify "^2.3.1" + triple-beam "^1.3.0" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +merge@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/merge/-/merge-2.1.1.tgz#59ef4bf7e0b3e879186436e8481c06a6c162ca98" + integrity sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w== + +micromatch@^4.0.2, micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +minimatch@9.0.3: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mkdirp@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mri@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a" + integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +npm-dts@^1.3.12: + version "1.3.12" + resolved "https://registry.yarnpkg.com/npm-dts/-/npm-dts-1.3.12.tgz#e422b1188fb616f41fe5c566c3d636c1aafb2ed8" + integrity sha512-3pFsz7Gf1u0cyQE2czXt8Y0hKe6kczHxlFbVrr74xWweNUit2tCDbOcL4n6KaWxyimGNJ4gzOa8KkShFA8hrdA== + dependencies: + args "5.0.3" + find-node-modules "2.1.3" + mkdirp "1.0.4" + npm-run "5.0.1" + rimraf "3.0.2" + tmp "0.2.1" + winston "3.7.2" + +npm-path@^2.0.2, npm-path@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64" + integrity sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw== + dependencies: + which "^1.2.10" + +npm-run@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/npm-run/-/npm-run-5.0.1.tgz#1baea93389b50ae25a32382c8ca322398e50cd16" + integrity sha512-s7FyRpHUgaJfzkRgOnevX8rAWWsv1dofY1XS7hliWCF6LSQh+HtDfBvpigPS1krLvXw+Fi17CYMY8mUtblnyWw== + dependencies: + minimist "^1.2.0" + npm-path "^2.0.4" + npm-which "^3.0.1" + serializerr "^1.0.3" + +npm-which@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa" + integrity sha512-CM8vMpeFQ7MAPin0U3wzDhSGV0hMHNwHU0wjo402IVizPDrs45jSfSuoC+wThevY88LQti8VvaAnqYAeVy3I1A== + dependencies: + commander "^2.9.0" + npm-path "^2.0.2" + which "^1.2.10" + +object-inspect@^1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.2, object.assign@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.entries@^1.1.5: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" + integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.fromentries@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.groupby@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.2.tgz#494800ff5bab78fd0eff2835ec859066e00192ec" + integrity sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw== + dependencies: + array.prototype.filter "^1.0.3" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.0.0" + +object.values@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +one-time@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" + integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== + dependencies: + fn.name "1.x.x" + +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== + dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -406,6 +1948,13 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -413,21 +1962,97 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q== + path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + pngjs@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@^3.2.5: + version "3.2.5" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" + integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== + +protochain@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/protochain/-/protochain-1.0.5.tgz#991c407e99de264aadf8f81504b5e7faf7bfa260" + integrity sha512-4hDwFSX50C4NE6f/6zg8EPr/WLPTkFPUtG0ulWZu6bwzV2hmb50fpdQLr0HiKBAUehapaFpItzWoCLjraLJhUA== + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + qrcode@^1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.3.tgz#03afa80912c0dccf12bc93f615a535aad1066170" @@ -438,6 +2063,30 @@ qrcode@^1.5.3: pngjs "^5.0.0" yargs "^15.3.1" +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +regexp.prototype.flags@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" + integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== + dependencies: + call-bind "^1.0.6" + define-properties "^1.2.1" + es-errors "^1.3.0" + set-function-name "^2.0.1" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -448,16 +2097,166 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== +resolve-dir@^1.0.0, resolve-dir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg== + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + resolve-pkg-maps@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== +resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-array-concat@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.0.tgz#8d0cae9cb806d6d1c06e08ab13d847293ebe0692" + integrity sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg== + dependencies: + call-bind "^1.0.5" + get-intrinsic "^1.2.2" + has-symbols "^1.0.3" + isarray "^2.0.5" + +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex-test@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" + integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-regex "^1.1.4" + +safe-stable-stringify@^2.3.1: + version "2.4.3" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" + integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== + +semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.5.4: + version "7.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== + dependencies: + lru-cache "^6.0.0" + +serializerr@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/serializerr/-/serializerr-1.0.3.tgz#12d4c5aa1c3ffb8f6d1dc5f395aa9455569c3f91" + integrity sha512-yXUlHj0fjbndhACj2XWtIH5eJv7b/uadyl7CJA8b9wL5mIKm+g0/sL7rDzEmjC+k5y8ggcaP8i049F4FxA0U9Q== + dependencies: + protochain "^1.0.5" + set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== +set-function-length@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.1.tgz#47cc5945f2c771e2cf261c6737cf9684a2a5e425" + integrity sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g== + dependencies: + define-data-property "^1.1.2" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.1" + +set-function-name@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.2" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +stack-trace@0.0.x: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== + string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -467,6 +2266,40 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -474,6 +2307,100 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +synckit@^0.8.6: + version "0.8.8" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7" + integrity sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ== + dependencies: + "@pkgr/core" "^0.1.0" + tslib "^2.6.2" + +text-hex@1.0.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" + integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +tmp@0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +triple-beam@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984" + integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg== + +ts-api-utils@^1.0.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.2.1.tgz#f716c7e027494629485b21c0df6180f4d08f5e8b" + integrity sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA== + +ts-unused-exports@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/ts-unused-exports/-/ts-unused-exports-10.0.1.tgz#df7afc39ca7a8baa99f802ef89e95a62677635f1" + integrity sha512-nWG8Y96pKem01Hw4j4+Mwuy+L0/9sKT7D61Q+OS3cii9ocQACuV6lu00B9qpiPhF4ReVWw3QYHDqV8+to2wbsg== + dependencies: + chalk "^4.0.0" + tsconfig-paths "^3.9.0" + +tsconfig-paths@^3.15.0, tsconfig-paths@^3.9.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + tsx@^4.7.1: version "4.7.1" resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.7.1.tgz#27af6cbf4e1cdfcb9b5425b1c61bb7e668eb5e84" @@ -484,21 +2411,160 @@ tsx@^4.7.1: optionalDependencies: fsevents "~2.3.3" +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +typed-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" + integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-typed-array "^1.1.13" + +typed-array-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" + integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + +typed-array-byte-offset@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" + integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + +typed-array-length@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.5.tgz#57d44da160296d8663fd63180a1802ebf25905d5" + integrity sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" + typescript@^5.3.3: version "5.3.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + undici-types@~5.26.4: version "5.26.5" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + which-module@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== +which-typed-array@^1.1.14: + version "1.1.14" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.14.tgz#1f78a111aee1e131ca66164d8bdc3ab062c95a06" + integrity sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg== + dependencies: + available-typed-arrays "^1.0.6" + call-bind "^1.0.5" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.1" + +which@^1.2.10, which@^1.2.14: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +winston-transport@^4.5.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.7.0.tgz#e302e6889e6ccb7f383b926df6936a5b781bd1f0" + integrity sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg== + dependencies: + logform "^2.3.2" + readable-stream "^3.6.0" + triple-beam "^1.3.0" + +winston@3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/winston/-/winston-3.7.2.tgz#95b4eeddbec902b3db1424932ac634f887c400b1" + integrity sha512-QziIqtojHBoyzUOdQvQiar1DH0Xp9nF1A1y7NVy2DGEsz82SBDtOalS0ulTRGVT14xPX3WRWkCsdcJKqNflKng== + dependencies: + "@dabh/diagnostics" "^2.0.2" + async "^3.2.3" + is-stream "^2.0.0" + logform "^2.4.0" + one-time "^1.0.0" + readable-stream "^3.4.0" + safe-stable-stringify "^2.3.1" + stack-trace "0.0.x" + triple-beam "^1.3.0" + winston-transport "^4.5.0" + wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -508,11 +2574,21 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + y18n@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yargs-parser@^18.1.2: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" @@ -537,3 +2613,8 @@ yargs@^15.3.1: which-module "^2.0.0" y18n "^4.0.0" yargs-parser "^18.1.2" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From d48fd9d8ea0a50d545176918109213017579bef5 Mon Sep 17 00:00:00 2001 From: Sakul Budhathoki Date: Fri, 8 Mar 2024 18:17:51 +0545 Subject: [PATCH 2/2] chore: fix prettierignore --- .prettierignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.prettierignore b/.prettierignore index 4f303c3..4f6dbe1 100644 --- a/.prettierignore +++ b/.prettierignore @@ -2,3 +2,5 @@ dist/ node_modules/ examples/ +.git/ +.github/