├── .gitignore ├── demo ├── src │ ├── vite-env.d.ts │ ├── index.d.ts │ ├── App.css │ ├── main.tsx │ ├── index.css │ └── App.tsx ├── tsconfig.node.json ├── vite.config.ts ├── .gitignore ├── index.html ├── .eslintrc.cjs ├── tsconfig.json ├── package.json └── yarn.lock ├── renovate.json ├── jest.config.js ├── tsconfig.json ├── .eslintrc.json ├── .github ├── e2e │ ├── values2.yaml │ ├── values2.schema.json │ ├── values1.yaml │ └── values1.schema.json └── workflows │ ├── demo.yaml │ └── tests.yaml ├── .releaserc.yaml ├── bin └── index.js ├── package.json ├── src ├── flatten.ts ├── index.test.ts ├── index.ts └── __snapshots__ │ └── index.test.ts.snap ├── README.md └── CHANGELOG.md /.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | dist 3 | -------------------------------------------------------------------------------- /demo/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /demo/src/index.d.ts: -------------------------------------------------------------------------------- 1 | declare module "react-github-fork-ribbon"; 2 | declare module "@socialgouv/helm-schema"; 3 | -------------------------------------------------------------------------------- /demo/src/App.css: -------------------------------------------------------------------------------- 1 | #root { 2 | width: 80vw; 3 | margin: 0 auto; 4 | padding: 2rem; 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "local>SocialGouv/renovate-config" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /demo/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "skipLibCheck": true, 5 | "module": "ESNext", 6 | "moduleResolution": "bundler", 7 | "allowSyntheticDefaultImports": true 8 | }, 9 | "include": ["vite.config.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | clearMocks: true, 3 | //moduleFileExtensions: ["js", "ts"], 4 | //testMatch: ["./src/**.test.ts"], 5 | testPathIgnorePatterns: ["./dist"], 6 | transform: { 7 | "^.+\\.ts$": "ts-jest", 8 | }, 9 | 10 | verbose: true, 11 | }; 12 | -------------------------------------------------------------------------------- /demo/src/main.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom/client"; 3 | import App from "./App.tsx"; 4 | import "./index.css"; 5 | 6 | ReactDOM.createRoot(document.getElementById("root")!).render( 7 | 8 | 9 | 10 | ); 11 | -------------------------------------------------------------------------------- /demo/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vite"; 2 | import react from "@vitejs/plugin-react"; 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | base: "/helm-schema", 7 | plugins: [react()], 8 | define: { 9 | //global: {}, 10 | "process.env": {}, 11 | __dirname: null, 12 | }, 13 | }); 14 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6", 4 | "module": "commonjs", 5 | "outDir": "dist1", 6 | "rootDir": "./src", 7 | "strict": false, 8 | "noImplicitAny": true, 9 | "removeComments": true, 10 | "preserveConstEnums": true, 11 | "sourceMap": true 12 | }, 13 | "exclude": ["node_modules/*", "demo"] 14 | } 15 | -------------------------------------------------------------------------------- /demo/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": ["jest", "@typescript-eslint"], 3 | "extends": [], 4 | "parser": "@typescript-eslint/parser", 5 | "parserOptions": { 6 | "ecmaVersion": 9, 7 | "sourceType": "module", 8 | "project": "./tsconfig.json" 9 | }, 10 | "rules": {}, 11 | "env": { 12 | "node": true, 13 | "es6": true, 14 | "jest/globals": true 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /demo/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | helm-schema : convert values.yaml to JSON schema 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /demo/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { browser: true, es2020: true }, 4 | extends: [ 5 | 'eslint:recommended', 6 | 'plugin:@typescript-eslint/recommended', 7 | 'plugin:react-hooks/recommended', 8 | ], 9 | ignorePatterns: ['dist', '.eslintrc.cjs'], 10 | parser: '@typescript-eslint/parser', 11 | plugins: ['react-refresh'], 12 | rules: { 13 | 'react-refresh/only-export-components': [ 14 | 'warn', 15 | { allowConstantExport: true }, 16 | ], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /.github/e2e/values2.yaml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema=./values2.schema.json 2 | 3 | # @param {object} smtp Your SMTP setup 4 | smtp: 5 | # @param {string} host SMTP hostname 6 | host: 7 | # @param {number} [port] SMTP hostname 8 | port: 587 9 | 10 | # Setup your securityContext to reduce security risks, see https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ 11 | # @param {https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.24.0/_definitions.json#/definitions/io.k8s.api.core.v1.PodSecurityContext} [securityContext] 12 | securityContext: 13 | -------------------------------------------------------------------------------- /.releaserc.yaml: -------------------------------------------------------------------------------- 1 | branches: 2 | - +([0-9])?(.{+([0-9]),x}).x 3 | - main 4 | - next 5 | - name: beta 6 | prerelease: true 7 | - name: alpha 8 | prerelease: true 9 | plugins: 10 | - "@semantic-release/commit-analyzer" 11 | - "@semantic-release/release-notes-generator" 12 | - "@semantic-release/npm" 13 | - "@semantic-release/changelog" 14 | - - "@semantic-release/git" 15 | - assets: 16 | - CHANGELOG.md 17 | - package.json 18 | message: "chore(release): version ${nextRelease.version}\n\n${nextRelease.notes}" 19 | - "@semantic-release/github" 20 | -------------------------------------------------------------------------------- /bin/index.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const { parseArgs } = require("node:util"); 4 | const { toJsonSchema } = require("../dist"); 5 | const fs = require("fs"); 6 | 7 | const args = process.argv; 8 | const options = { 9 | file: { 10 | type: "string", 11 | short: "f", 12 | default: "values.yaml", 13 | }, 14 | }; 15 | const { values } = parseArgs({ 16 | args, 17 | options, 18 | allowPositionals: true, 19 | }); 20 | 21 | if (!fs.existsSync(values.file)) { 22 | throw new Error( 23 | "values.yaml doesnt exist. add the -f flag to point to your file" 24 | ); 25 | } 26 | const yaml = fs.readFileSync(values.file).toString(); 27 | 28 | console.log(JSON.stringify(toJsonSchema(yaml), null, 2)); 29 | -------------------------------------------------------------------------------- /demo/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "useDefineForClassFields": true, 5 | "lib": ["ES2020", "DOM", "DOM.Iterable"], 6 | "module": "ESNext", 7 | "skipLibCheck": true, 8 | 9 | /* Bundler mode */ 10 | "moduleResolution": "bundler", 11 | "allowImportingTsExtensions": true, 12 | "resolveJsonModule": true, 13 | "isolatedModules": true, 14 | "noEmit": true, 15 | "jsx": "react-jsx", 16 | 17 | /* Linting */ 18 | "strict": true, 19 | "noUnusedLocals": true, 20 | "noUnusedParameters": true, 21 | "noFallthroughCasesInSwitch": true 22 | }, 23 | "include": ["src"], 24 | "references": [{ "path": "./tsconfig.node.json" }] 25 | } 26 | -------------------------------------------------------------------------------- /.github/workflows/demo.yaml: -------------------------------------------------------------------------------- 1 | name: Publish demo 2 | 3 | on: 4 | workflow_dispatch: 5 | push: 6 | branches: [main] 7 | 8 | jobs: 9 | website: 10 | runs-on: ubuntu-latest 11 | name: Website 12 | steps: 13 | - name: Checkout repository 14 | uses: actions/checkout@v3 15 | 16 | - uses: actions/setup-node@v3 17 | with: 18 | node-version: 18 19 | cache: "yarn" 20 | 21 | - name: Yarn install 22 | run: | 23 | cd demo 24 | yarn --immutable 25 | 26 | - name: Yarn build 27 | run: | 28 | cd demo 29 | yarn build 30 | 31 | # deploy build to gh-pages 32 | - name: Deploy 🚀 33 | uses: JamesIves/github-pages-deploy-action@4.1.0 34 | with: 35 | branch: gh-pages 36 | folder: demo/dist 37 | -------------------------------------------------------------------------------- /demo/src/index.css: -------------------------------------------------------------------------------- 1 | :root { 2 | font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; 3 | line-height: 1.5; 4 | font-weight: 400; 5 | 6 | font-synthesis: none; 7 | text-rendering: optimizeLegibility; 8 | -webkit-font-smoothing: antialiased; 9 | -moz-osx-font-smoothing: grayscale; 10 | -webkit-text-size-adjust: 100%; 11 | } 12 | 13 | a { 14 | font-weight: 500; 15 | color: #646cff; 16 | text-decoration: inherit; 17 | } 18 | a:hover { 19 | color: #535bf2; 20 | } 21 | 22 | body { 23 | margin: 0; 24 | display: flex; 25 | place-items: top; 26 | min-width: 320px; 27 | min-height: 100vh; 28 | } 29 | 30 | h1 { 31 | font-size: 3.2em; 32 | line-height: 1.1; 33 | } 34 | 35 | @media (prefers-color-scheme: light) { 36 | :root { 37 | color: #213547; 38 | background-color: #ffffff; 39 | } 40 | a:hover { 41 | color: #747bff; 42 | } 43 | button { 44 | background-color: #f9f9f9; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /demo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "demo", 3 | "private": true, 4 | "version": "0.0.0", 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "tsc && vite build", 8 | "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", 9 | "preview": "vite preview" 10 | }, 11 | "dependencies": { 12 | "@socialgouv/helm-schema": "^1.2.4", 13 | "@uiw/react-textarea-code-editor": "^2.1.7", 14 | "react": "^18.2.0", 15 | "react-dom": "^18.2.0", 16 | "react-github-fork-banner": "^1.1.3" 17 | }, 18 | "devDependencies": { 19 | "@types/node": "^20.5.7", 20 | "@types/react": "^18.2.21", 21 | "@types/react-dom": "^18.2.7", 22 | "@typescript-eslint/eslint-plugin": "^6.5.0", 23 | "@typescript-eslint/parser": "^6.5.0", 24 | "@vitejs/plugin-react": "^4.0.4", 25 | "eslint": "^8.48.0", 26 | "eslint-plugin-react-hooks": "^4.6.0", 27 | "eslint-plugin-react-refresh": "^0.4.3", 28 | "typescript": "^5.2.2", 29 | "vite": "^4.4.9" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /.github/e2e/values2.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "$schema": "http://json-schema.org/draft-07/schema", 4 | "required": [ 5 | "smtp" 6 | ], 7 | "properties": { 8 | "smtp": { 9 | "type": "object", 10 | "title": "Your SMTP setup", 11 | "required": [ 12 | "host" 13 | ], 14 | "properties": { 15 | "host": { 16 | "type": [ 17 | "string" 18 | ], 19 | "title": "SMTP hostname" 20 | }, 21 | "port": { 22 | "type": [ 23 | "number" 24 | ], 25 | "title": "SMTP hostname", 26 | "default": "587" 27 | } 28 | } 29 | }, 30 | "securityContext": { 31 | "$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.24.0/_definitions.json#/definitions/io.k8s.api.core.v1.PodSecurityContext", 32 | "description": "Setup your securityContext to reduce security risks, see https://kubernetes.io/docs/tasks/configure-pod-container/security-context/" 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@socialgouv/helm-schema", 3 | "version": "1.2.4", 4 | "main": "dist/index.js", 5 | "license": "Apache-2.0", 6 | "files": [ 7 | "dist", 8 | "bin", 9 | "package.json", 10 | "yarn.lock", 11 | "README.md" 12 | ], 13 | "publishConfig": { 14 | "access": "public" 15 | }, 16 | "bin": "./bin/index.js", 17 | "engines": { 18 | "node": ">=16.17.0" 19 | }, 20 | "scripts": { 21 | "dev": "tsc --watch --outDir build", 22 | "build": "ncc build ./src/index.ts", 23 | "test": "jest", 24 | "snapshots": "yarn build && yarn test -u && ./bin/index.js -f .github/e2e/values1.yaml > .github/e2e/values1.schema.json && ./bin/index.js -f .github/e2e/values2.yaml > .github/e2e/values2.schema.json", 25 | "lint": "eslint src/**/*.ts" 26 | }, 27 | "dependencies": { 28 | "comment-parser": "^1.4.0", 29 | "yaml": "^2.3.2" 30 | }, 31 | "devDependencies": { 32 | "@types/js-yaml": "^4.0.5", 33 | "@types/json-schema": "^7.0.12", 34 | "@types/node": "^20.5.7", 35 | "@typescript-eslint/eslint-plugin": "^6.5.0", 36 | "@typescript-eslint/parser": "^6.5.0", 37 | "@vercel/ncc": "^0.36.1", 38 | "eslint": "^8.48.0", 39 | "eslint-plugin-jest": "^27.2.3", 40 | "jest": "^29.6.4", 41 | "ts-jest": "^29.1.1", 42 | "tsc": "^2.0.4", 43 | "typescript": "^5.2.2" 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /.github/workflows/tests.yaml: -------------------------------------------------------------------------------- 1 | name: ✅ Tests n publish 2 | 3 | on: 4 | push: 5 | branches: 6 | - "**" 7 | - "!v*" 8 | tags-ignore: 9 | - "**" 10 | 11 | concurrency: 12 | cancel-in-progress: true 13 | group: tests-lint-${{ github.ref_name }} 14 | 15 | jobs: 16 | tests: 17 | name: Lint & Tests 18 | runs-on: ubuntu-latest 19 | steps: 20 | - name: Checkout repository 21 | uses: actions/checkout@v3 22 | 23 | - uses: actions/setup-node@v3 24 | with: 25 | node-version: 20 26 | cache: "yarn" 27 | 28 | - name: Yarn install 29 | run: | 30 | yarn --immutable 31 | 32 | - name: Yarn build 33 | run: | 34 | yarn build 35 | 36 | - name: Run lint 37 | run: yarn lint 38 | 39 | - name: Run unit test 40 | run: yarn test 41 | 42 | - name: Run e2e test values1.yaml 43 | shell: bash 44 | run: | 45 | ./bin/index.js -f .github/e2e/values1.yaml > values1.json 46 | diff values1.json .github/e2e/values1.schema.json 47 | ./bin/index.js -f .github/e2e/values2.yaml > values2.json 48 | diff values2.json .github/e2e/values2.schema.json 49 | 50 | - name: Semantic Release 51 | if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} 52 | uses: cycjimmy/semantic-release-action@v3 53 | with: 54 | extra_plugins: | 55 | @semantic-release/changelog 56 | @semantic-release/exec 57 | @semantic-release/git 58 | env: 59 | GIT_AUTHOR_EMAIL: ${{ secrets.SOCIALGROOVYBOT_EMAIL }} 60 | GIT_AUTHOR_NAME: ${{ secrets.SOCIALGROOVYBOT_NAME }} 61 | GIT_COMMITTER_EMAIL: ${{ secrets.SOCIALGROOVYBOT_EMAIL }} 62 | GIT_COMMITTER_NAME: ${{ secrets.SOCIALGROOVYBOT_NAME }} 63 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 64 | NPM_TOKEN: ${{ secrets.SOCIALGROOVYBOT_NPM_TOKEN }} 65 | -------------------------------------------------------------------------------- /.github/e2e/values1.yaml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema=./values1.schema.json 2 | 3 | # Default values for pgweb. 4 | # This is a YAML-formatted file. 5 | # Declare variables to be passed into your templates. 6 | 7 | # -- @param {number} replicaCount - number of replicas in the pgweb deployment 8 | replicaCount: 1 9 | 10 | enabled: 11 | 12 | namespace: 13 | repositoryName: 14 | host: 15 | targetPort: 8081 16 | servicePort: 8081 17 | certSecretName: 18 | env: [] 19 | envFrom: [] 20 | 21 | ingress: 22 | enabled: false 23 | annotations: {} 24 | 25 | image: 26 | repository: sosedoff/pgweb 27 | pullPolicy: IfNotPresent 28 | tag: "0.14.1" 29 | 30 | imagePullSecrets: [] 31 | nameOverride: "" 32 | fullnameOverride: "" 33 | 34 | serviceAccount: 35 | # -- @param {boolean} create -- Specifies whether a service account should be created 36 | create: false 37 | # -- Annotations to add to the service account 38 | annotations: {} 39 | 40 | # -- The name of the service account to use. 41 | # -- If not set and create is true, a name is generated using the fullname template 42 | name: "" 43 | 44 | podAnnotations: {} 45 | 46 | podSecurityContext: 47 | {} 48 | # fsGroup: 2000 49 | 50 | securityContext: 51 | {} 52 | # capabilities: 53 | # drop: 54 | # - ALL 55 | # readOnlyRootFilesystem: true 56 | # runAsNonRoot: true 57 | # runAsUser: 1000 58 | 59 | # -- custom resources 60 | resources: 61 | {} 62 | # We usually recommend not to specify default resources and to leave this as a conscious 63 | # choice for the user. This also increases chances charts run on environments with little 64 | # resources, such as Minikube. If you do want to specify resources, uncomment the following 65 | # lines, adjust them as necessary, and remove the curly braces after 'resources:'. 66 | # limits: 67 | # cpu: 100m 68 | # memory: 128Mi 69 | # requests: 70 | # cpu: 100m 71 | # memory: 128Mi 72 | 73 | # -- Horizontal Pod autoscaler 74 | autoscaling: 75 | enabled: false 76 | minReplicas: 1 77 | maxReplicas: 100 78 | targetCPUUtilizationPercentage: 80 79 | # targetMemoryUtilizationPercentage: 80 80 | 81 | nodeSelector: {} 82 | 83 | # @param {https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.24.0/_definitions.json#/definitions/io.k8s.api.core.v1.Toleration[]} 84 | tolerations: [] 85 | 86 | affinity: {} 87 | 88 | extraArgs: [] 89 | -------------------------------------------------------------------------------- /src/flatten.ts: -------------------------------------------------------------------------------- 1 | import { Parser } from "yaml"; 2 | import { 3 | BlockMap, 4 | SourceToken, 5 | Document, 6 | Token, 7 | BlockSequence, 8 | } from "yaml/dist/parse/cst"; 9 | 10 | export const flattenBlock = (blockMap: BlockMap | BlockSequence) => { 11 | const nodes: (SourceToken | Token)[] = []; 12 | blockMap?.items?.forEach((item) => { 13 | if (item.key) nodes.push(item.key); 14 | if (item.start && item.start.length) { 15 | nodes.push(...item.start); 16 | } 17 | if (item.sep && item.sep.length) { 18 | nodes.push(...item.sep); 19 | } 20 | if (item.value) { 21 | if (item.value.type === "block-map" || item.value.type === "block-seq") { 22 | nodes.push(...flattenBlock(item.value)); 23 | } else { 24 | if (item.value.type === "scalar" && item.value.end) { 25 | const { end, ...scalar } = item.value; 26 | if (scalar) { 27 | nodes.push(scalar); 28 | } 29 | if (end.length) { 30 | nodes.push(...end); 31 | } 32 | } else { 33 | nodes.push(item.value); 34 | } 35 | } 36 | } 37 | }); 38 | return nodes; 39 | }; 40 | 41 | export const flattenYaml = (yaml: string) => { 42 | const parsed = new Parser().parse(yaml); 43 | 44 | const tokens = Array.from(parsed); 45 | 46 | const documentIndex = tokens.findIndex((t) => t.type === "document"); 47 | 48 | const document = tokens[documentIndex] as Document; 49 | 50 | const nodes = [ 51 | ...tokens.slice(0, documentIndex), 52 | ...flattenBlock(document.value as BlockMap), 53 | ]; 54 | return nodes; 55 | }; 56 | 57 | // let comments: SourceToken[] = []; 58 | // let lineCount = 0; 59 | // const scalars: any[] = []; 60 | // nodes.forEach((node) => { 61 | // if (node.type === "comment") { 62 | // comments.push(node); 63 | // } 64 | // if (node.type === "scalar") { 65 | // scalars.push({ 66 | // ...node, 67 | // comments, 68 | // }); 69 | // comments = []; 70 | // } 71 | // }); 72 | 73 | // blockMap.items.forEach((item) => { 74 | // nodes.push(item.key); 75 | // if (item.start) { 76 | // item.sep.forEach((sep) => { 77 | // nodes.push(sep); 78 | // }); 79 | // } 80 | // if (item.sep) { 81 | // item.sep.forEach((sep) => { 82 | // nodes.push(sep); 83 | // }); 84 | // } 85 | // nodes.push(item.value); 86 | // }); 87 | 88 | //#console.log(JSON.stringify(nodes, null, 2)); 89 | //console.log(JSON.stringify(scalars, null, 2)); 90 | 91 | //console.log(comments); 92 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # @socialgouv/helm-schema ![npm (scoped)](https://img.shields.io/npm/v/%40socialgouv/helm-schema) 2 | 3 | [JSON Schema](https://json-schema.org) generator for your [HELM charts](https://helm.sh). 4 | 5 | Demo : https://socialgouv.github.io/helm-schema 6 | 7 | ## Usage 8 | 9 | Example `values.yaml`, following [JSDoc standards](https://devhints.io/jsdoc) 10 | 11 | ```yaml 12 | # @param {object} smtp Your SMTP setup 13 | smtp: 14 | # @param {string} host SMTP hostname 15 | host: 16 | # @param {number} [port] SMTP port 17 | port: 587 18 | 19 | # Setup your securityContext to reduce security risks, see https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ 20 | # @param {https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.24.0/_definitions.json#/definitions/io.k8s.api.core.v1.PodSecurityContext} [securityContext] 21 | securityContext: 22 | ``` 23 | 24 | To generate a JSON schema from your `values.yaml` : 25 | 26 | ```sh 27 | npx @socialgouv/helm-schema -f values.yaml 28 | ``` 29 | 30 | Or via TS : 31 | 32 | ```js 33 | import { toJsonSchema } from "@socialgouv/helm-schema"; 34 | 35 | import yaml from "./values.yaml"; 36 | 37 | const schema = toJsonSchema(yaml); 38 | ``` 39 | 40 | You get such JSON schema in result : 41 | 42 | ```json 43 | { 44 | "type": "object", 45 | "$schema": "https://json-schema.org/draft/2020-12/schema", 46 | "required": ["smtp"], 47 | "properties": { 48 | "smtp": { 49 | "type": "object", 50 | "title": "Your SMTP setup", 51 | "required": ["host"], 52 | "properties": { 53 | "host": { 54 | "type": "string", 55 | "title": "SMTP hostname" 56 | }, 57 | "port": { 58 | "type": "number", 59 | "title": "SMTP port", 60 | "default": "587" 61 | } 62 | } 63 | }, 64 | "securityContext": { 65 | "$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.24.0/_definitions.json#/definitions/io.k8s.api.core.v1.PodSecurityContext", 66 | "description": "Setup your securityContext to reduce security risks, see https://kubernetes.io/docs/tasks/configure-pod-container/security-context/" 67 | } 68 | } 69 | } 70 | ``` 71 | 72 | This schema can then be used with your favorite editor for HELM values validation. 73 | 74 | ⚠️ Be sure to add an `$id` to the schema if its meant to be referenced from other schemas 75 | 76 | ## Dev 77 | 78 | update snapshots : `yarn snapshots` 79 | 80 | ## Todo 81 | 82 | - ~~multiline comments~~ 83 | - sections 84 | - infer types from default values 85 | - ~~handle arrays~~ 86 | -------------------------------------------------------------------------------- /demo/src/App.tsx: -------------------------------------------------------------------------------- 1 | import { useState } from "react"; 2 | import { GithubForkBanner } from "react-github-fork-banner"; 3 | import CodeEditor from "@uiw/react-textarea-code-editor"; 4 | 5 | import "./App.css"; 6 | 7 | import { toJsonSchema } from "@socialgouv/helm-schema"; 8 | 9 | const yaml = ` 10 | # @param {object} smtp Your SMTP setup 11 | smtp: 12 | # @param {string} host SMTP hostname 13 | host: 14 | # @param {number} [port] SMTP hostname 15 | port: 587 16 | 17 | # Setup your securityContext to reduce security risks, see https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ 18 | # @param {https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.24.0/_definitions.json#/definitions/io.k8s.api.core.v1.PodSecurityContext} [securityContext] 19 | securityContext: 20 | 21 | # @params {string[]} command List of parameters for the default entrypoint 22 | command: [] 23 | `.trim(); 24 | 25 | function App() { 26 | const [schema, setSchema] = useState( 27 | JSON.stringify(toJsonSchema(yaml), null, 2) 28 | ); 29 | 30 | const onYamlChange: React.ChangeEventHandler = (e) => { 31 | const content = e.target.value; 32 | setSchema(JSON.stringify(toJsonSchema(content), null, 2)); 33 | }; 34 | return ( 35 | <> 36 | 37 |

helm-schema demo

38 |

39 | Annotate your HELM values.yaml files with{" "} 40 | 45 | JSDoc comments 46 | {" "} 47 | and extract a values.schema.json -{" "} 48 | 53 | cf Documentation. 54 | 55 |

56 |
57 |
65 |
values.yaml
66 | 73 |
74 |
82 |
values.schema.json
83 | 89 |
90 |
91 | 92 | ); 93 | } 94 | 95 | export default App; 96 | -------------------------------------------------------------------------------- /src/index.test.ts: -------------------------------------------------------------------------------- 1 | import { expect, test } from "@jest/globals"; 2 | 3 | import { extractValues, toJsonSchema } from "./index"; 4 | 5 | const tests = [ 6 | { 7 | title: "YAML without comment", 8 | yaml: ` 9 | name: Jul 10 | age: 42 11 | 12 | location: 13 | country: FR 14 | `, 15 | }, 16 | { 17 | title: "YAML with comments", 18 | yaml: ` 19 | # @param {string} name Your name 20 | name: Jul 21 | # @param {number} age Your age 22 | age: 42 23 | 24 | location: 25 | # @param {string} [country] Your country 26 | country: FR 27 | `, 28 | }, 29 | { 30 | title: "YAML with nestedcomments", 31 | yaml: ` 32 | family: 33 | # @param {object} mother The mother 34 | mother: 35 | # @param {string} name The mother's name 36 | name: 37 | # @param {object} [mother] The mother's mother 38 | mother: 39 | # @param {string} [name] The mother mother's name 40 | name: 41 | `, 42 | }, 43 | { 44 | title: "YAML with sections", 45 | yaml: ` 46 | # @section family blablab 47 | family: 48 | # @param {object} [mother] The mother 49 | mother: 50 | `, 51 | }, 52 | { 53 | title: "single-line", 54 | yaml: ` 55 | # @param {number} number The magic number 56 | number: 42 57 | `, 58 | }, 59 | { 60 | title: "YAML with multiline comment", 61 | yaml: ` 62 | # family blablab 63 | # more info about that crazy family 64 | family: 65 | # the mother is important in your life 66 | # @param {object} [mother] The mother 67 | mother: 68 | `, 69 | }, 70 | { 71 | title: "YAML with external references", 72 | yaml: ` 73 | # Setup your securityContext to reduce security risks, see https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ 74 | # @param {https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.24.0/_definitions.json#/definitions/io.k8s.api.core.v1.PodSecurityContext} securityContext 75 | securityContext: 76 | `, 77 | }, 78 | { 79 | title: "JSDoc with multiple types", 80 | yaml: ` 81 | 82 | # @param {string,null} securityContext 83 | securityContext: 84 | `, 85 | }, 86 | { 87 | title: "JSDoc with string array", 88 | yaml: ` 89 | 90 | # @param {string[]} command 91 | command: 92 | `, 93 | // "type": "array" 94 | // "items": { 95 | // "type": "string" 96 | // }, 97 | }, 98 | { 99 | title: "JSDoc with ref array", 100 | yaml: ` 101 | 102 | # @param {https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.24.0/_definitions.json#/definitions/io.k8s.api.core.v1.EnvFromSource[]} envFrom 103 | envFrom: 104 | `, 105 | }, 106 | ]; 107 | 108 | // "type": "array" 109 | // "items": { 110 | // "$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.24.0/_definitions.json#/definitions/io.k8s.api.core.v1.EnvFromSource" 111 | // }, 112 | 113 | tests.forEach((t) => { 114 | test(`extractValues: ${t.title}`, () => { 115 | expect(extractValues(t.yaml)).toMatchSnapshot(); 116 | }); 117 | }); 118 | 119 | tests.forEach((t) => { 120 | test(`toJsonSchema: ${t.title}`, () => { 121 | expect(toJsonSchema(t.yaml)).toMatchSnapshot(); 122 | }); 123 | }); 124 | 125 | test("toJsonSchema: add root properties", () => { 126 | expect( 127 | toJsonSchema( 128 | ` 129 | # @param {string} [some] Some optional string 130 | some: thing`, 131 | { 132 | $id: "some-id", 133 | title: "schema title", 134 | } 135 | ) 136 | ).toMatchSnapshot(); 137 | }); 138 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## [1.2.4](https://github.com/SocialGouv/helm-schema/compare/v1.2.3...v1.2.4) (2023-11-11) 2 | 3 | 4 | ### Bug Fixes 5 | 6 | * handle array definitions ([#16](https://github.com/SocialGouv/helm-schema/issues/16)) ([f281eb6](https://github.com/SocialGouv/helm-schema/commit/f281eb67e9c968863b0eb9e373ef5dde1d300d41)) 7 | 8 | ## [1.2.3](https://github.com/SocialGouv/helm-schema/compare/v1.2.2...v1.2.3) (2023-09-04) 9 | 10 | 11 | ### Bug Fixes 12 | 13 | * default schema version ([0e23a57](https://github.com/SocialGouv/helm-schema/commit/0e23a573daa502a6b3dbde5e35e88931f39c38bf)) 14 | * snaps ([25c3e9c](https://github.com/SocialGouv/helm-schema/commit/25c3e9cabbb84404f5fad65dd134cab4365137e0)) 15 | 16 | ## [1.2.2](https://github.com/SocialGouv/helm-schema/compare/v1.2.1...v1.2.2) (2023-08-30) 17 | 18 | 19 | ### Bug Fixes 20 | 21 | * skip empty defaults ([#8](https://github.com/SocialGouv/helm-schema/issues/8)) ([e42303a](https://github.com/SocialGouv/helm-schema/commit/e42303a45a85b946627a097acd9d61c388c662fa)) 22 | 23 | ## [1.2.1](https://github.com/SocialGouv/helm-schema/compare/v1.2.0...v1.2.1) (2023-08-29) 24 | 25 | 26 | ### Bug Fixes 27 | 28 | * allow multiple types ([4028c6b](https://github.com/SocialGouv/helm-schema/commit/4028c6b08dd5a27e03daeb394709973c6397f67c)) 29 | 30 | # [1.2.0](https://github.com/SocialGouv/helm-schema/compare/v1.1.1...v1.2.0) (2023-08-29) 31 | 32 | 33 | ### Features 34 | 35 | * add external refs parsing ([#7](https://github.com/SocialGouv/helm-schema/issues/7)) ([67501e9](https://github.com/SocialGouv/helm-schema/commit/67501e95276b192ee2f8044bbf482637c5d74715)) 36 | 37 | ## [1.1.1](https://github.com/SocialGouv/helm-schema/compare/v1.1.0...v1.1.1) (2023-08-29) 38 | 39 | 40 | ### Bug Fixes 41 | 42 | * demo update ([11488e6](https://github.com/SocialGouv/helm-schema/commit/11488e65149f531bbddb6fabb8a0a832c99aa033)) 43 | 44 | # [1.1.0](https://github.com/SocialGouv/helm-schema/compare/v1.0.6...v1.1.0) (2023-08-29) 45 | 46 | 47 | ### Features 48 | 49 | * multiline comments ([#3](https://github.com/SocialGouv/helm-schema/issues/3)) ([ead6c30](https://github.com/SocialGouv/helm-schema/commit/ead6c306c8677df10acf7bfdcefc09c46d0651b1)) 50 | 51 | ## [1.0.6](https://github.com/SocialGouv/helm-schema/compare/v1.0.5...v1.0.6) (2023-08-06) 52 | 53 | 54 | ### Bug Fixes 55 | 56 | * demo ([906ec06](https://github.com/SocialGouv/helm-schema/commit/906ec06ffd528d1972d5cc89a4dd02dcb09fedf9)) 57 | 58 | ## [1.0.5](https://github.com/SocialGouv/helm-schema/compare/v1.0.4...v1.0.5) (2023-08-04) 59 | 60 | 61 | ### Bug Fixes 62 | 63 | * build ([d6ee08e](https://github.com/SocialGouv/helm-schema/commit/d6ee08ee9a816693945661fda582af5c7cd25da2)) 64 | 65 | ## [1.0.4](https://github.com/SocialGouv/helm-schema/compare/v1.0.3...v1.0.4) (2023-08-04) 66 | 67 | 68 | ### Bug Fixes 69 | 70 | * editor ([5dbe4b4](https://github.com/SocialGouv/helm-schema/commit/5dbe4b4778fd33262b3186c6133c13b3df271e5f)) 71 | 72 | ## [1.0.3](https://github.com/SocialGouv/helm-schema/compare/v1.0.2...v1.0.3) (2023-08-04) 73 | 74 | 75 | ### Bug Fixes 76 | 77 | * test ([84b2d6f](https://github.com/SocialGouv/helm-schema/commit/84b2d6f038eb725b1adb9f2b0ecb24e01576e201)) 78 | * use schema.title ([ff454e4](https://github.com/SocialGouv/helm-schema/commit/ff454e43205aa184aaeb5b12913f7b9864ca07e5)) 79 | 80 | ## [1.0.2](https://github.com/SocialGouv/helm-schema/compare/v1.0.1...v1.0.2) (2023-08-04) 81 | 82 | 83 | ### Bug Fixes 84 | 85 | * __dirname issue ([3f6b4b1](https://github.com/SocialGouv/helm-schema/commit/3f6b4b19e7164f0a742741ff01ae596b90880b19)) 86 | 87 | ## [1.0.1](https://github.com/SocialGouv/helm-schema/compare/v1.0.0...v1.0.1) (2023-08-04) 88 | 89 | 90 | ### Bug Fixes 91 | 92 | * demo ([166e396](https://github.com/SocialGouv/helm-schema/commit/166e396f22f0ebd4450fb1bb3e358a89ebe22197)) 93 | 94 | # 1.0.0 (2023-08-04) 95 | 96 | 97 | ### Bug Fixes 98 | 99 | * release ([c557db2](https://github.com/SocialGouv/helm-schema/commit/c557db2cd8605cbb7a94b825a9566ef191e4efd3)) 100 | -------------------------------------------------------------------------------- /.github/e2e/values1.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "$schema": "http://json-schema.org/draft-07/schema", 4 | "required": [ 5 | "replicaCount", 6 | "resources", 7 | "autoscaling", 8 | "tolerations" 9 | ], 10 | "properties": { 11 | "replicaCount": { 12 | "type": [ 13 | "number" 14 | ], 15 | "title": "number of replicas in the pgweb deployment", 16 | "default": "1" 17 | }, 18 | "enabled": { 19 | "type": [ 20 | "string", 21 | "boolean", 22 | "number", 23 | "object", 24 | "array" 25 | ] 26 | }, 27 | "namespace": { 28 | "type": [ 29 | "string", 30 | "boolean", 31 | "number", 32 | "object", 33 | "array" 34 | ] 35 | }, 36 | "repositoryName": { 37 | "type": [ 38 | "string", 39 | "boolean", 40 | "number", 41 | "object", 42 | "array" 43 | ] 44 | }, 45 | "host": { 46 | "type": [ 47 | "string", 48 | "boolean", 49 | "number", 50 | "object", 51 | "array" 52 | ] 53 | }, 54 | "targetPort": { 55 | "type": [ 56 | "string", 57 | "boolean", 58 | "number", 59 | "object", 60 | "array" 61 | ], 62 | "default": "8081" 63 | }, 64 | "servicePort": { 65 | "type": [ 66 | "string", 67 | "boolean", 68 | "number", 69 | "object", 70 | "array" 71 | ], 72 | "default": "8081" 73 | }, 74 | "certSecretName": { 75 | "type": [ 76 | "string", 77 | "boolean", 78 | "number", 79 | "object", 80 | "array" 81 | ] 82 | }, 83 | "env": { 84 | "type": [ 85 | "string", 86 | "boolean", 87 | "number", 88 | "object", 89 | "array" 90 | ] 91 | }, 92 | "envFrom": { 93 | "type": [ 94 | "string", 95 | "boolean", 96 | "number", 97 | "object", 98 | "array" 99 | ] 100 | }, 101 | "ingress": { 102 | "type": "object", 103 | "required": [], 104 | "properties": { 105 | "enabled": { 106 | "type": [ 107 | "string", 108 | "boolean", 109 | "number", 110 | "object", 111 | "array" 112 | ], 113 | "default": "false" 114 | }, 115 | "annotations": { 116 | "type": [ 117 | "string", 118 | "boolean", 119 | "number", 120 | "object", 121 | "array" 122 | ] 123 | } 124 | } 125 | }, 126 | "image": { 127 | "type": "object", 128 | "required": [], 129 | "properties": { 130 | "repository": { 131 | "type": [ 132 | "string", 133 | "boolean", 134 | "number", 135 | "object", 136 | "array" 137 | ], 138 | "default": "sosedoff/pgweb" 139 | }, 140 | "pullPolicy": { 141 | "type": [ 142 | "string", 143 | "boolean", 144 | "number", 145 | "object", 146 | "array" 147 | ], 148 | "default": "IfNotPresent" 149 | }, 150 | "tag": { 151 | "type": [ 152 | "string", 153 | "boolean", 154 | "number", 155 | "object", 156 | "array" 157 | ], 158 | "default": "\"0.14.1\"" 159 | } 160 | } 161 | }, 162 | "imagePullSecrets": { 163 | "type": [ 164 | "string", 165 | "boolean", 166 | "number", 167 | "object", 168 | "array" 169 | ] 170 | }, 171 | "nameOverride": { 172 | "type": [ 173 | "string", 174 | "boolean", 175 | "number", 176 | "object", 177 | "array" 178 | ] 179 | }, 180 | "fullnameOverride": { 181 | "type": [ 182 | "string", 183 | "boolean", 184 | "number", 185 | "object", 186 | "array" 187 | ] 188 | }, 189 | "serviceAccount": { 190 | "type": "object", 191 | "required": [ 192 | "create", 193 | "annotations", 194 | "name" 195 | ], 196 | "properties": { 197 | "create": { 198 | "type": [ 199 | "boolean" 200 | ], 201 | "title": "Specifies whether a service account should be created", 202 | "default": "false" 203 | }, 204 | "annotations": { 205 | "type": [ 206 | "string", 207 | "boolean", 208 | "number", 209 | "object", 210 | "array" 211 | ], 212 | "description": "Annotations to add to the service account" 213 | }, 214 | "name": { 215 | "type": [ 216 | "string", 217 | "boolean", 218 | "number", 219 | "object", 220 | "array" 221 | ], 222 | "description": "The name of the service account to use.\nIf not set and create is true, a name is generated using the fullname template" 223 | } 224 | } 225 | }, 226 | "podAnnotations": { 227 | "type": [ 228 | "string", 229 | "boolean", 230 | "number", 231 | "object", 232 | "array" 233 | ] 234 | }, 235 | "podSecurityContext": { 236 | "type": [ 237 | "string", 238 | "boolean", 239 | "number", 240 | "object", 241 | "array" 242 | ] 243 | }, 244 | "securityContext": { 245 | "type": [ 246 | "string", 247 | "boolean", 248 | "number", 249 | "object", 250 | "array" 251 | ] 252 | }, 253 | "resources": { 254 | "type": [ 255 | "string", 256 | "boolean", 257 | "number", 258 | "object", 259 | "array" 260 | ], 261 | "description": "custom resources" 262 | }, 263 | "autoscaling": { 264 | "type": "object", 265 | "description": "Horizontal Pod autoscaler", 266 | "required": [ 267 | "enabled" 268 | ], 269 | "properties": { 270 | "enabled": { 271 | "type": [ 272 | "string", 273 | "boolean", 274 | "number", 275 | "object", 276 | "array" 277 | ], 278 | "description": "Horizontal Pod autoscaler", 279 | "default": "false" 280 | }, 281 | "minReplicas": { 282 | "type": [ 283 | "string", 284 | "boolean", 285 | "number", 286 | "object", 287 | "array" 288 | ], 289 | "default": "1" 290 | }, 291 | "maxReplicas": { 292 | "type": [ 293 | "string", 294 | "boolean", 295 | "number", 296 | "object", 297 | "array" 298 | ], 299 | "default": "100" 300 | }, 301 | "targetCPUUtilizationPercentage": { 302 | "type": [ 303 | "string", 304 | "boolean", 305 | "number", 306 | "object", 307 | "array" 308 | ], 309 | "default": "80" 310 | } 311 | } 312 | }, 313 | "nodeSelector": { 314 | "type": [ 315 | "string", 316 | "boolean", 317 | "number", 318 | "object", 319 | "array" 320 | ] 321 | }, 322 | "tolerations": { 323 | "type": "array", 324 | "items": { 325 | "$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.24.0/_definitions.json#/definitions/io.k8s.api.core.v1.Toleration" 326 | } 327 | }, 328 | "affinity": { 329 | "type": [ 330 | "string", 331 | "boolean", 332 | "number", 333 | "object", 334 | "array" 335 | ] 336 | }, 337 | "extraArgs": { 338 | "type": [ 339 | "string", 340 | "boolean", 341 | "number", 342 | "object", 343 | "array" 344 | ] 345 | } 346 | } 347 | } 348 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { Parser } from "yaml"; 2 | import { parse as commentParser } from "comment-parser"; 3 | import { 4 | Token, 5 | CollectionItem, 6 | BlockSequence, 7 | BlockMap, 8 | Document, 9 | FlowCollection, 10 | SourceToken, 11 | } from "yaml/dist/parse/cst"; 12 | import { 13 | JSONSchema4, 14 | JSONSchema4Object, 15 | JSONSchema4TypeName, 16 | } from "json-schema"; 17 | 18 | import { flattenYaml } from "./flatten"; 19 | 20 | interface ParsedComment { 21 | title: string; 22 | description: string; 23 | type?: JSONSchema4TypeName | JSONSchema4TypeName[]; 24 | $ref?: string; 25 | required: boolean; 26 | items?: JSONSchema4Object; 27 | } 28 | 29 | interface YamlScalar { 30 | description?: string; 31 | type?: JSONSchema4TypeName[]; 32 | required?: boolean; 33 | offset: number; 34 | key: string; 35 | value: any; 36 | children?: YamlScalar[]; 37 | parent?: Token; 38 | comment?: ParsedComment; 39 | } 40 | 41 | function hasSep( 42 | object: any 43 | ): object is 44 | | CollectionItem 45 | | BlockSequence["items"][0] 46 | | BlockMap["items"][0] 47 | | BlockMap["items"][1] { 48 | return "sep" in object; 49 | } 50 | 51 | const hasKey = hasSep; 52 | 53 | function hasValue( 54 | object: any 55 | ): object is 56 | | CollectionItem 57 | | Document 58 | | BlockSequence["items"][0] 59 | | BlockMap["items"][0] 60 | | BlockMap["items"][1] { 61 | return "value" in object; 62 | } 63 | 64 | function hasItems( 65 | object: any 66 | ): object is BlockMap | BlockSequence | FlowCollection { 67 | return "items" in object; 68 | } 69 | 70 | /** 71 | * Parse node comment with JSDoc like annotations 72 | */ 73 | const getCommentsSchema = ( 74 | comments: SourceToken[] 75 | ): ParsedComment | undefined => { 76 | const source = comments.map((n) => n.source).join("\n"); 77 | const parsedLines = commentParser( 78 | source 79 | .split("\n") 80 | .map((row) => row.trim().replace(/^\s*#+\s*-*\s*(.*)/gm, "/** $1 */")) 81 | .join("\n") // replaces starting with # or # -- 82 | ); 83 | const lastLine = parsedLines[parsedLines.length - 1]; 84 | const description = parsedLines 85 | .map((line) => line.description) 86 | .filter(Boolean) 87 | .join("\n"); 88 | if (lastLine && lastLine.tags && lastLine.tags.length) { 89 | const tag = lastLine.tags[0]; 90 | 91 | let type; 92 | let isArray = false; 93 | if (tag.type) { 94 | if (tag.type.match(/^(.*)\[\]$/g)) { 95 | type = tag.type.replace(/^(.*)\[\]$/g, "$1"); 96 | isArray = true; 97 | } else { 98 | type = tag.type.replace(/^(.*)$/g, "$1"); 99 | } 100 | } 101 | const isExternalref = type && !!type.match(/^https?:\/\//); 102 | const name = lastLine?.source[0]?.tokens?.name || tag.name; // check if optiona [name] 103 | 104 | const comment: ParsedComment = { 105 | title: tag.description.replace(/^[\s-]+/g, ""), 106 | description, 107 | required: name ? name.indexOf("[") === -1 : true, 108 | }; 109 | 110 | if (isArray) { 111 | comment.type = "array" as JSONSchema4TypeName; 112 | comment.items = {}; 113 | 114 | if (isExternalref) { 115 | comment.items.$ref = type; 116 | } else { 117 | comment.items.type = 118 | type && 119 | (type.replace(/(.*)\?$/, "$1").split(",") as JSONSchema4TypeName[]); // remove question mark 120 | } 121 | } else { 122 | if (isExternalref) { 123 | comment.$ref = type; 124 | } else { 125 | comment.type = 126 | type && 127 | (type.replace(/(.*)\?$/, "$1").split(",") as JSONSchema4TypeName[]); // remove question mark 128 | } 129 | } 130 | return comment; 131 | } 132 | const title = lastLine?.source[0]?.tokens?.name; 133 | if (!title && !description) return; 134 | return { 135 | title, 136 | description, 137 | required: true, 138 | type: ["string", "boolean", "number", "object", "array"], 139 | }; 140 | }; 141 | 142 | const extractValuesFromTree = ( 143 | root: Token[], 144 | child?: Token | CollectionItem 145 | ): YamlScalar[] => { 146 | const values = []; 147 | const node = child || root; 148 | if (hasKey(node) && node.key?.type === "scalar") { 149 | const scalar: YamlScalar = { 150 | type: undefined, 151 | required: undefined, 152 | offset: node.key.offset, 153 | key: node.key.source, 154 | // @ts-ignore 155 | value: node.value?.source, 156 | children: [], 157 | parent: undefined, 158 | }; 159 | 160 | if (hasValue(node) && hasItems(node.value) && node.value.items.length) { 161 | scalar.children = node.value.items.flatMap((n) => { 162 | //@ts-ignore 163 | n.parent = node; 164 | return extractValuesFromTree(root, n); 165 | }); 166 | scalar.type = ["object"]; 167 | } 168 | values.push(scalar); 169 | } 170 | 171 | if (hasValue(node) && hasItems(node.value) && node.value.items.length) { 172 | node.value.items.forEach((item) => { 173 | // @ts-ignore 174 | if (!item.parent) { 175 | // @ts-ignore 176 | item.parent = node; 177 | values.push(...extractValuesFromTree(root, item)); 178 | } 179 | }); 180 | } 181 | return values; 182 | }; 183 | 184 | const getComments = (nodes: (Token | SourceToken)[], offset: number) => { 185 | const remaining = nodes.filter((node) => node.offset < offset); 186 | let comments: SourceToken[] = []; 187 | let lastType: string; 188 | let finished = false; 189 | remaining.reverse().forEach((node) => { 190 | if (finished) { 191 | return; 192 | } 193 | if (node.type === "comment") { 194 | comments.push(node); 195 | } else if (node.type === "space" || node.type === "map-value-ind") { 196 | } else if (node.type === "newline") { 197 | if (lastType === "newline") { 198 | finished = true; 199 | } 200 | } else { 201 | finished = true; 202 | } 203 | lastType = node.type; 204 | }); 205 | return comments.reverse(); 206 | }; 207 | 208 | const addCommentsSchemas = ( 209 | values: YamlScalar[], 210 | nodes: (Token | SourceToken)[] 211 | ): void => { 212 | values.forEach((value) => { 213 | if (value.offset) { 214 | const comments = getComments(nodes, value.offset); 215 | if (comments && comments.length) { 216 | value.comment = getCommentsSchema(comments); 217 | } 218 | } 219 | if (value.children) { 220 | addCommentsSchemas(value.children, nodes); 221 | } 222 | }); 223 | }; 224 | 225 | const cleanUp = (values: YamlScalar[]) => { 226 | values.forEach((value) => { 227 | value.offset = undefined; 228 | if (value.children.length === 0) { 229 | value.children = undefined; 230 | } else { 231 | cleanUp(value.children); 232 | } 233 | }); 234 | }; 235 | 236 | const cleanUndefined = (object: YamlScalar[]): YamlScalar[] => 237 | JSON.parse(JSON.stringify(object)); 238 | 239 | export const extractValues = (yaml: string) => { 240 | const parsed = new Parser().parse(yaml); 241 | 242 | const tokens: Token[] = Array.from(parsed); 243 | 244 | const values = tokens.flatMap((token) => 245 | extractValuesFromTree(tokens, token) 246 | ); 247 | 248 | const flattenedNodes = flattenYaml(yaml); 249 | 250 | //@ts-ignore 251 | addCommentsSchemas(values, flattenedNodes); 252 | cleanUp(values); 253 | const cleaned = cleanUndefined(values); 254 | return cleaned; 255 | }; 256 | 257 | // @ts-ignore 258 | const detectType = (some: any) => 259 | ["string", "boolean", "number", "object", "array"] as JSONSchema4TypeName[]; 260 | 261 | const nodeToJsonSchema = (node: YamlScalar, rootProps = {}): JSONSchema4 => { 262 | const schema: JSONSchema4 = { 263 | type: node.comment?.type || detectType(node.value), 264 | ...rootProps, 265 | }; 266 | if (node.comment?.type) { 267 | schema.type = node.comment.type; 268 | } 269 | if (node.comment?.title) { 270 | schema.title = node.comment.title; 271 | } 272 | if (node.comment?.$ref) { 273 | schema.$ref = node.comment.$ref; 274 | delete schema.type; 275 | } 276 | if (node.comment?.items) { 277 | schema.items = node.comment.items; 278 | } 279 | if (node.comment?.description) { 280 | schema.description = node.comment.description; 281 | } 282 | if (node.value) { 283 | if (node.value.replace(/^\"\"$/, "").length) { 284 | schema.default = node.value.replace(/^\"\"$/, ""); 285 | } 286 | } 287 | 288 | if (node.children?.length) { 289 | schema.type = "object"; 290 | schema.required = node.children 291 | .filter((c) => c.comment?.required) 292 | .map((c) => c.key); 293 | schema.properties = node.children.reduce( 294 | (a, c) => ({ 295 | ...a, 296 | [c.key]: nodeToJsonSchema(c), 297 | }), 298 | {} 299 | ); 300 | } 301 | return schema; 302 | }; 303 | 304 | export const toJsonSchema = (yaml: string, rootProps = {}): JSONSchema4 => { 305 | const values = extractValues(yaml.trim()); 306 | const fullValues: YamlScalar = { 307 | key: "root", 308 | value: null, 309 | offset: 0, 310 | children: values, 311 | }; 312 | const schema = nodeToJsonSchema(fullValues, { 313 | $schema: "http://json-schema.org/draft-07/schema", 314 | ...rootProps, 315 | }); 316 | return schema; 317 | }; 318 | -------------------------------------------------------------------------------- /src/__snapshots__/index.test.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`extractValues: JSDoc with multiple types 1`] = ` 4 | [ 5 | { 6 | "comment": { 7 | "description": "", 8 | "required": true, 9 | "title": "", 10 | "type": [ 11 | "string", 12 | "null", 13 | ], 14 | }, 15 | "key": "securityContext", 16 | }, 17 | ] 18 | `; 19 | 20 | exports[`extractValues: JSDoc with ref array 1`] = ` 21 | [ 22 | { 23 | "comment": { 24 | "description": "", 25 | "items": { 26 | "$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.24.0/_definitions.json#/definitions/io.k8s.api.core.v1.EnvFromSource", 27 | }, 28 | "required": true, 29 | "title": "", 30 | "type": "array", 31 | }, 32 | "key": "envFrom", 33 | }, 34 | ] 35 | `; 36 | 37 | exports[`extractValues: JSDoc with string array 1`] = ` 38 | [ 39 | { 40 | "comment": { 41 | "description": "", 42 | "items": { 43 | "type": [ 44 | "string", 45 | ], 46 | }, 47 | "required": true, 48 | "title": "", 49 | "type": "array", 50 | }, 51 | "key": "command", 52 | }, 53 | ] 54 | `; 55 | 56 | exports[`extractValues: YAML with comments 1`] = ` 57 | [ 58 | { 59 | "comment": { 60 | "description": "", 61 | "required": true, 62 | "title": "Your name", 63 | "type": [ 64 | "string", 65 | ], 66 | }, 67 | "key": "name", 68 | "value": "Jul", 69 | }, 70 | { 71 | "comment": { 72 | "description": "", 73 | "required": true, 74 | "title": "Your age", 75 | "type": [ 76 | "number", 77 | ], 78 | }, 79 | "key": "age", 80 | "value": "42", 81 | }, 82 | { 83 | "children": [ 84 | { 85 | "comment": { 86 | "description": "", 87 | "required": false, 88 | "title": "Your country", 89 | "type": [ 90 | "string", 91 | ], 92 | }, 93 | "key": "country", 94 | "value": "FR", 95 | }, 96 | ], 97 | "key": "location", 98 | "type": [ 99 | "object", 100 | ], 101 | }, 102 | ] 103 | `; 104 | 105 | exports[`extractValues: YAML with external references 1`] = ` 106 | [ 107 | { 108 | "comment": { 109 | "$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.24.0/_definitions.json#/definitions/io.k8s.api.core.v1.PodSecurityContext", 110 | "description": "Setup your securityContext to reduce security risks, see https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", 111 | "required": true, 112 | "title": "", 113 | }, 114 | "key": "securityContext", 115 | }, 116 | ] 117 | `; 118 | 119 | exports[`extractValues: YAML with multiline comment 1`] = ` 120 | [ 121 | { 122 | "children": [ 123 | { 124 | "comment": { 125 | "description": "the mother is important in your life", 126 | "required": false, 127 | "title": "The mother", 128 | "type": [ 129 | "object", 130 | ], 131 | }, 132 | "key": "mother", 133 | }, 134 | ], 135 | "comment": { 136 | "description": "family blablab 137 | more info about that crazy family", 138 | "required": true, 139 | "title": "", 140 | "type": [ 141 | "string", 142 | "boolean", 143 | "number", 144 | "object", 145 | "array", 146 | ], 147 | }, 148 | "key": "family", 149 | "type": [ 150 | "object", 151 | ], 152 | }, 153 | ] 154 | `; 155 | 156 | exports[`extractValues: YAML with nestedcomments 1`] = ` 157 | [ 158 | { 159 | "children": [ 160 | { 161 | "children": [ 162 | { 163 | "comment": { 164 | "description": "", 165 | "required": true, 166 | "title": "The mother's name", 167 | "type": [ 168 | "string", 169 | ], 170 | }, 171 | "key": "name", 172 | }, 173 | { 174 | "children": [ 175 | { 176 | "comment": { 177 | "description": "", 178 | "required": false, 179 | "title": "The mother mother's name", 180 | "type": [ 181 | "string", 182 | ], 183 | }, 184 | "key": "name", 185 | }, 186 | ], 187 | "comment": { 188 | "description": "", 189 | "required": false, 190 | "title": "The mother's mother", 191 | "type": [ 192 | "object", 193 | ], 194 | }, 195 | "key": "mother", 196 | "type": [ 197 | "object", 198 | ], 199 | }, 200 | ], 201 | "comment": { 202 | "description": "", 203 | "required": true, 204 | "title": "The mother", 205 | "type": [ 206 | "object", 207 | ], 208 | }, 209 | "key": "mother", 210 | "type": [ 211 | "object", 212 | ], 213 | }, 214 | ], 215 | "key": "family", 216 | "type": [ 217 | "object", 218 | ], 219 | }, 220 | ] 221 | `; 222 | 223 | exports[`extractValues: YAML with sections 1`] = ` 224 | [ 225 | { 226 | "children": [ 227 | { 228 | "comment": { 229 | "description": "", 230 | "required": false, 231 | "title": "The mother", 232 | "type": [ 233 | "object", 234 | ], 235 | }, 236 | "key": "mother", 237 | }, 238 | ], 239 | "comment": { 240 | "description": "", 241 | "required": true, 242 | "title": "blablab", 243 | }, 244 | "key": "family", 245 | "type": [ 246 | "object", 247 | ], 248 | }, 249 | ] 250 | `; 251 | 252 | exports[`extractValues: YAML without comment 1`] = ` 253 | [ 254 | { 255 | "key": "name", 256 | "value": "Jul", 257 | }, 258 | { 259 | "key": "age", 260 | "value": "42", 261 | }, 262 | { 263 | "children": [ 264 | { 265 | "key": "country", 266 | "value": "FR", 267 | }, 268 | ], 269 | "key": "location", 270 | "type": [ 271 | "object", 272 | ], 273 | }, 274 | ] 275 | `; 276 | 277 | exports[`extractValues: single-line 1`] = ` 278 | [ 279 | { 280 | "comment": { 281 | "description": "", 282 | "required": true, 283 | "title": "The magic number", 284 | "type": [ 285 | "number", 286 | ], 287 | }, 288 | "key": "number", 289 | "value": "42", 290 | }, 291 | ] 292 | `; 293 | 294 | exports[`toJsonSchema: JSDoc with multiple types 1`] = ` 295 | { 296 | "$schema": "http://json-schema.org/draft-07/schema", 297 | "properties": { 298 | "securityContext": { 299 | "type": [ 300 | "string", 301 | "null", 302 | ], 303 | }, 304 | }, 305 | "required": [ 306 | "securityContext", 307 | ], 308 | "type": "object", 309 | } 310 | `; 311 | 312 | exports[`toJsonSchema: JSDoc with ref array 1`] = ` 313 | { 314 | "$schema": "http://json-schema.org/draft-07/schema", 315 | "properties": { 316 | "envFrom": { 317 | "items": { 318 | "$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.24.0/_definitions.json#/definitions/io.k8s.api.core.v1.EnvFromSource", 319 | }, 320 | "type": "array", 321 | }, 322 | }, 323 | "required": [ 324 | "envFrom", 325 | ], 326 | "type": "object", 327 | } 328 | `; 329 | 330 | exports[`toJsonSchema: JSDoc with string array 1`] = ` 331 | { 332 | "$schema": "http://json-schema.org/draft-07/schema", 333 | "properties": { 334 | "command": { 335 | "items": { 336 | "type": [ 337 | "string", 338 | ], 339 | }, 340 | "type": "array", 341 | }, 342 | }, 343 | "required": [ 344 | "command", 345 | ], 346 | "type": "object", 347 | } 348 | `; 349 | 350 | exports[`toJsonSchema: YAML with comments 1`] = ` 351 | { 352 | "$schema": "http://json-schema.org/draft-07/schema", 353 | "properties": { 354 | "age": { 355 | "default": "42", 356 | "title": "Your age", 357 | "type": [ 358 | "number", 359 | ], 360 | }, 361 | "location": { 362 | "properties": { 363 | "country": { 364 | "default": "FR", 365 | "title": "Your country", 366 | "type": [ 367 | "string", 368 | ], 369 | }, 370 | }, 371 | "required": [], 372 | "type": "object", 373 | }, 374 | "name": { 375 | "default": "Jul", 376 | "title": "Your name", 377 | "type": [ 378 | "string", 379 | ], 380 | }, 381 | }, 382 | "required": [ 383 | "name", 384 | "age", 385 | ], 386 | "type": "object", 387 | } 388 | `; 389 | 390 | exports[`toJsonSchema: YAML with external references 1`] = ` 391 | { 392 | "$schema": "http://json-schema.org/draft-07/schema", 393 | "properties": { 394 | "securityContext": { 395 | "$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.24.0/_definitions.json#/definitions/io.k8s.api.core.v1.PodSecurityContext", 396 | "description": "Setup your securityContext to reduce security risks, see https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", 397 | }, 398 | }, 399 | "required": [ 400 | "securityContext", 401 | ], 402 | "type": "object", 403 | } 404 | `; 405 | 406 | exports[`toJsonSchema: YAML with multiline comment 1`] = ` 407 | { 408 | "$schema": "http://json-schema.org/draft-07/schema", 409 | "properties": { 410 | "family": { 411 | "description": "family blablab 412 | more info about that crazy family", 413 | "properties": { 414 | "mother": { 415 | "description": "the mother is important in your life", 416 | "title": "The mother", 417 | "type": [ 418 | "object", 419 | ], 420 | }, 421 | }, 422 | "required": [], 423 | "type": "object", 424 | }, 425 | }, 426 | "required": [ 427 | "family", 428 | ], 429 | "type": "object", 430 | } 431 | `; 432 | 433 | exports[`toJsonSchema: YAML with nestedcomments 1`] = ` 434 | { 435 | "$schema": "http://json-schema.org/draft-07/schema", 436 | "properties": { 437 | "family": { 438 | "properties": { 439 | "mother": { 440 | "properties": { 441 | "mother": { 442 | "properties": { 443 | "name": { 444 | "title": "The mother mother's name", 445 | "type": [ 446 | "string", 447 | ], 448 | }, 449 | }, 450 | "required": [], 451 | "title": "The mother's mother", 452 | "type": "object", 453 | }, 454 | "name": { 455 | "title": "The mother's name", 456 | "type": [ 457 | "string", 458 | ], 459 | }, 460 | }, 461 | "required": [ 462 | "name", 463 | ], 464 | "title": "The mother", 465 | "type": "object", 466 | }, 467 | }, 468 | "required": [ 469 | "mother", 470 | ], 471 | "type": "object", 472 | }, 473 | }, 474 | "required": [], 475 | "type": "object", 476 | } 477 | `; 478 | 479 | exports[`toJsonSchema: YAML with sections 1`] = ` 480 | { 481 | "$schema": "http://json-schema.org/draft-07/schema", 482 | "properties": { 483 | "family": { 484 | "properties": { 485 | "mother": { 486 | "title": "The mother", 487 | "type": [ 488 | "object", 489 | ], 490 | }, 491 | }, 492 | "required": [], 493 | "title": "blablab", 494 | "type": "object", 495 | }, 496 | }, 497 | "required": [ 498 | "family", 499 | ], 500 | "type": "object", 501 | } 502 | `; 503 | 504 | exports[`toJsonSchema: YAML without comment 1`] = ` 505 | { 506 | "$schema": "http://json-schema.org/draft-07/schema", 507 | "properties": { 508 | "age": { 509 | "default": "42", 510 | "type": [ 511 | "string", 512 | "boolean", 513 | "number", 514 | "object", 515 | "array", 516 | ], 517 | }, 518 | "location": { 519 | "properties": { 520 | "country": { 521 | "default": "FR", 522 | "type": [ 523 | "string", 524 | "boolean", 525 | "number", 526 | "object", 527 | "array", 528 | ], 529 | }, 530 | }, 531 | "required": [], 532 | "type": "object", 533 | }, 534 | "name": { 535 | "default": "Jul", 536 | "type": [ 537 | "string", 538 | "boolean", 539 | "number", 540 | "object", 541 | "array", 542 | ], 543 | }, 544 | }, 545 | "required": [], 546 | "type": "object", 547 | } 548 | `; 549 | 550 | exports[`toJsonSchema: add root properties 1`] = ` 551 | { 552 | "$id": "some-id", 553 | "$schema": "http://json-schema.org/draft-07/schema", 554 | "properties": { 555 | "some": { 556 | "default": "thing", 557 | "title": "Some optional string", 558 | "type": [ 559 | "string", 560 | ], 561 | }, 562 | }, 563 | "required": [], 564 | "title": "schema title", 565 | "type": "object", 566 | } 567 | `; 568 | 569 | exports[`toJsonSchema: single-line 1`] = ` 570 | { 571 | "$schema": "http://json-schema.org/draft-07/schema", 572 | "properties": { 573 | "number": { 574 | "default": "42", 575 | "title": "The magic number", 576 | "type": [ 577 | "number", 578 | ], 579 | }, 580 | }, 581 | "required": [ 582 | "number", 583 | ], 584 | "type": "object", 585 | } 586 | `; 587 | -------------------------------------------------------------------------------- /demo/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@aashutoshrathi/word-wrap@^1.2.3": 6 | version "1.2.6" 7 | resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" 8 | integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== 9 | 10 | "@ampproject/remapping@^2.2.0": 11 | version "2.2.1" 12 | resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" 13 | integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== 14 | dependencies: 15 | "@jridgewell/gen-mapping" "^0.3.0" 16 | "@jridgewell/trace-mapping" "^0.3.9" 17 | 18 | "@babel/code-frame@^7.22.5": 19 | version "7.22.5" 20 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.5.tgz#234d98e1551960604f1246e6475891a570ad5658" 21 | integrity sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ== 22 | dependencies: 23 | "@babel/highlight" "^7.22.5" 24 | 25 | "@babel/compat-data@^7.22.9": 26 | version "7.22.9" 27 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" 28 | integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== 29 | 30 | "@babel/core@^7.22.9": 31 | version "7.22.9" 32 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.9.tgz#bd96492c68822198f33e8a256061da3cf391f58f" 33 | integrity sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w== 34 | dependencies: 35 | "@ampproject/remapping" "^2.2.0" 36 | "@babel/code-frame" "^7.22.5" 37 | "@babel/generator" "^7.22.9" 38 | "@babel/helper-compilation-targets" "^7.22.9" 39 | "@babel/helper-module-transforms" "^7.22.9" 40 | "@babel/helpers" "^7.22.6" 41 | "@babel/parser" "^7.22.7" 42 | "@babel/template" "^7.22.5" 43 | "@babel/traverse" "^7.22.8" 44 | "@babel/types" "^7.22.5" 45 | convert-source-map "^1.7.0" 46 | debug "^4.1.0" 47 | gensync "^1.0.0-beta.2" 48 | json5 "^2.2.2" 49 | semver "^6.3.1" 50 | 51 | "@babel/generator@^7.22.7", "@babel/generator@^7.22.9": 52 | version "7.22.9" 53 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.9.tgz#572ecfa7a31002fa1de2a9d91621fd895da8493d" 54 | integrity sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw== 55 | dependencies: 56 | "@babel/types" "^7.22.5" 57 | "@jridgewell/gen-mapping" "^0.3.2" 58 | "@jridgewell/trace-mapping" "^0.3.17" 59 | jsesc "^2.5.1" 60 | 61 | "@babel/helper-annotate-as-pure@^7.22.5": 62 | version "7.22.5" 63 | resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" 64 | integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== 65 | dependencies: 66 | "@babel/types" "^7.22.5" 67 | 68 | "@babel/helper-compilation-targets@^7.22.9": 69 | version "7.22.9" 70 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz#f9d0a7aaaa7cd32a3f31c9316a69f5a9bcacb892" 71 | integrity sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw== 72 | dependencies: 73 | "@babel/compat-data" "^7.22.9" 74 | "@babel/helper-validator-option" "^7.22.5" 75 | browserslist "^4.21.9" 76 | lru-cache "^5.1.1" 77 | semver "^6.3.1" 78 | 79 | "@babel/helper-environment-visitor@^7.22.5": 80 | version "7.22.5" 81 | resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" 82 | integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== 83 | 84 | "@babel/helper-function-name@^7.22.5": 85 | version "7.22.5" 86 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be" 87 | integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ== 88 | dependencies: 89 | "@babel/template" "^7.22.5" 90 | "@babel/types" "^7.22.5" 91 | 92 | "@babel/helper-hoist-variables@^7.22.5": 93 | version "7.22.5" 94 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" 95 | integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== 96 | dependencies: 97 | "@babel/types" "^7.22.5" 98 | 99 | "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.22.5": 100 | version "7.22.5" 101 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" 102 | integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg== 103 | dependencies: 104 | "@babel/types" "^7.22.5" 105 | 106 | "@babel/helper-module-transforms@^7.22.9": 107 | version "7.22.9" 108 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129" 109 | integrity sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ== 110 | dependencies: 111 | "@babel/helper-environment-visitor" "^7.22.5" 112 | "@babel/helper-module-imports" "^7.22.5" 113 | "@babel/helper-simple-access" "^7.22.5" 114 | "@babel/helper-split-export-declaration" "^7.22.6" 115 | "@babel/helper-validator-identifier" "^7.22.5" 116 | 117 | "@babel/helper-plugin-utils@^7.22.5": 118 | version "7.22.5" 119 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" 120 | integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== 121 | 122 | "@babel/helper-simple-access@^7.22.5": 123 | version "7.22.5" 124 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" 125 | integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== 126 | dependencies: 127 | "@babel/types" "^7.22.5" 128 | 129 | "@babel/helper-split-export-declaration@^7.22.6": 130 | version "7.22.6" 131 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" 132 | integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== 133 | dependencies: 134 | "@babel/types" "^7.22.5" 135 | 136 | "@babel/helper-string-parser@^7.22.5": 137 | version "7.22.5" 138 | resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" 139 | integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== 140 | 141 | "@babel/helper-validator-identifier@^7.22.5": 142 | version "7.22.5" 143 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" 144 | integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== 145 | 146 | "@babel/helper-validator-option@^7.22.5": 147 | version "7.22.5" 148 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" 149 | integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== 150 | 151 | "@babel/helpers@^7.22.6": 152 | version "7.22.6" 153 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.6.tgz#8e61d3395a4f0c5a8060f309fb008200969b5ecd" 154 | integrity sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA== 155 | dependencies: 156 | "@babel/template" "^7.22.5" 157 | "@babel/traverse" "^7.22.6" 158 | "@babel/types" "^7.22.5" 159 | 160 | "@babel/highlight@^7.22.5": 161 | version "7.22.5" 162 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.5.tgz#aa6c05c5407a67ebce408162b7ede789b4d22031" 163 | integrity sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw== 164 | dependencies: 165 | "@babel/helper-validator-identifier" "^7.22.5" 166 | chalk "^2.0.0" 167 | js-tokens "^4.0.0" 168 | 169 | "@babel/parser@^7.22.5", "@babel/parser@^7.22.7": 170 | version "7.22.7" 171 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.7.tgz#df8cf085ce92ddbdbf668a7f186ce848c9036cae" 172 | integrity sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q== 173 | 174 | "@babel/plugin-syntax-jsx@^7.22.5": 175 | version "7.22.5" 176 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" 177 | integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== 178 | dependencies: 179 | "@babel/helper-plugin-utils" "^7.22.5" 180 | 181 | "@babel/plugin-transform-react-jsx-self@^7.22.5": 182 | version "7.22.5" 183 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz#ca2fdc11bc20d4d46de01137318b13d04e481d8e" 184 | integrity sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g== 185 | dependencies: 186 | "@babel/helper-plugin-utils" "^7.22.5" 187 | 188 | "@babel/plugin-transform-react-jsx-source@^7.22.5": 189 | version "7.22.5" 190 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz#49af1615bfdf6ed9d3e9e43e425e0b2b65d15b6c" 191 | integrity sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w== 192 | dependencies: 193 | "@babel/helper-plugin-utils" "^7.22.5" 194 | 195 | "@babel/runtime@^7.18.6": 196 | version "7.22.6" 197 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.6.tgz#57d64b9ae3cff1d67eb067ae117dac087f5bd438" 198 | integrity sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ== 199 | dependencies: 200 | regenerator-runtime "^0.13.11" 201 | 202 | "@babel/template@^7.22.5": 203 | version "7.22.5" 204 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" 205 | integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== 206 | dependencies: 207 | "@babel/code-frame" "^7.22.5" 208 | "@babel/parser" "^7.22.5" 209 | "@babel/types" "^7.22.5" 210 | 211 | "@babel/traverse@^7.22.6", "@babel/traverse@^7.22.8", "@babel/traverse@^7.4.5": 212 | version "7.22.8" 213 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.8.tgz#4d4451d31bc34efeae01eac222b514a77aa4000e" 214 | integrity sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw== 215 | dependencies: 216 | "@babel/code-frame" "^7.22.5" 217 | "@babel/generator" "^7.22.7" 218 | "@babel/helper-environment-visitor" "^7.22.5" 219 | "@babel/helper-function-name" "^7.22.5" 220 | "@babel/helper-hoist-variables" "^7.22.5" 221 | "@babel/helper-split-export-declaration" "^7.22.6" 222 | "@babel/parser" "^7.22.7" 223 | "@babel/types" "^7.22.5" 224 | debug "^4.1.0" 225 | globals "^11.1.0" 226 | 227 | "@babel/types@^7.22.5": 228 | version "7.22.5" 229 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.5.tgz#cd93eeaab025880a3a47ec881f4b096a5b786fbe" 230 | integrity sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA== 231 | dependencies: 232 | "@babel/helper-string-parser" "^7.22.5" 233 | "@babel/helper-validator-identifier" "^7.22.5" 234 | to-fast-properties "^2.0.0" 235 | 236 | "@emotion/is-prop-valid@^1.1.0": 237 | version "1.2.1" 238 | resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz#23116cf1ed18bfeac910ec6436561ecb1a3885cc" 239 | integrity sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw== 240 | dependencies: 241 | "@emotion/memoize" "^0.8.1" 242 | 243 | "@emotion/memoize@^0.8.1": 244 | version "0.8.1" 245 | resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" 246 | integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== 247 | 248 | "@emotion/stylis@^0.8.4": 249 | version "0.8.5" 250 | resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" 251 | integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== 252 | 253 | "@emotion/unitless@^0.7.4": 254 | version "0.7.5" 255 | resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" 256 | integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== 257 | 258 | "@esbuild/android-arm64@0.18.17": 259 | version "0.18.17" 260 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.17.tgz#9e00eb6865ed5f2dbe71a1e96f2c52254cd92903" 261 | integrity sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg== 262 | 263 | "@esbuild/android-arm@0.18.17": 264 | version "0.18.17" 265 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.17.tgz#1aa013b65524f4e9f794946b415b32ae963a4618" 266 | integrity sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg== 267 | 268 | "@esbuild/android-x64@0.18.17": 269 | version "0.18.17" 270 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.17.tgz#c2bd0469b04ded352de011fae34a7a1d4dcecb79" 271 | integrity sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw== 272 | 273 | "@esbuild/darwin-arm64@0.18.17": 274 | version "0.18.17" 275 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.17.tgz#0c21a59cb5bd7a2cec66c7a42431dca42aefeddd" 276 | integrity sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g== 277 | 278 | "@esbuild/darwin-x64@0.18.17": 279 | version "0.18.17" 280 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.17.tgz#92f8763ff6f97dff1c28a584da7b51b585e87a7b" 281 | integrity sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g== 282 | 283 | "@esbuild/freebsd-arm64@0.18.17": 284 | version "0.18.17" 285 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.17.tgz#934f74bdf4022e143ba2f21d421b50fd0fead8f8" 286 | integrity sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ== 287 | 288 | "@esbuild/freebsd-x64@0.18.17": 289 | version "0.18.17" 290 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.17.tgz#16b6e90ba26ecc865eab71c56696258ec7f5d8bf" 291 | integrity sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA== 292 | 293 | "@esbuild/linux-arm64@0.18.17": 294 | version "0.18.17" 295 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.17.tgz#179a58e8d4c72116eb068563629349f8f4b48072" 296 | integrity sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ== 297 | 298 | "@esbuild/linux-arm@0.18.17": 299 | version "0.18.17" 300 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.17.tgz#9d78cf87a310ae9ed985c3915d5126578665c7b5" 301 | integrity sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg== 302 | 303 | "@esbuild/linux-ia32@0.18.17": 304 | version "0.18.17" 305 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.17.tgz#6fed202602d37361bca376c9d113266a722a908c" 306 | integrity sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg== 307 | 308 | "@esbuild/linux-loong64@0.18.17": 309 | version "0.18.17" 310 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.17.tgz#cdc60304830be1e74560c704bfd72cab8a02fa06" 311 | integrity sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg== 312 | 313 | "@esbuild/linux-mips64el@0.18.17": 314 | version "0.18.17" 315 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.17.tgz#c367b2855bb0902f5576291a2049812af2088086" 316 | integrity sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ== 317 | 318 | "@esbuild/linux-ppc64@0.18.17": 319 | version "0.18.17" 320 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.17.tgz#7fdc0083d42d64a4651711ee0a7964f489242f45" 321 | integrity sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ== 322 | 323 | "@esbuild/linux-riscv64@0.18.17": 324 | version "0.18.17" 325 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.17.tgz#5198a417f3f5b86b10c95647b8bc032e5b6b2b1c" 326 | integrity sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g== 327 | 328 | "@esbuild/linux-s390x@0.18.17": 329 | version "0.18.17" 330 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.17.tgz#7459c2fecdee2d582f0697fb76a4041f4ad1dd1e" 331 | integrity sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg== 332 | 333 | "@esbuild/linux-x64@0.18.17": 334 | version "0.18.17" 335 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.17.tgz#948cdbf46d81c81ebd7225a7633009bc56a4488c" 336 | integrity sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ== 337 | 338 | "@esbuild/netbsd-x64@0.18.17": 339 | version "0.18.17" 340 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.17.tgz#6bb89668c0e093c5a575ded08e1d308bd7fd63e7" 341 | integrity sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ== 342 | 343 | "@esbuild/openbsd-x64@0.18.17": 344 | version "0.18.17" 345 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.17.tgz#abac2ae75fef820ef6c2c48da4666d092584c79d" 346 | integrity sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA== 347 | 348 | "@esbuild/sunos-x64@0.18.17": 349 | version "0.18.17" 350 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.17.tgz#74a45fe1db8ea96898f1a9bb401dcf1dadfc8371" 351 | integrity sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g== 352 | 353 | "@esbuild/win32-arm64@0.18.17": 354 | version "0.18.17" 355 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.17.tgz#fd95ffd217995589058a4ed8ac17ee72a3d7f615" 356 | integrity sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw== 357 | 358 | "@esbuild/win32-ia32@0.18.17": 359 | version "0.18.17" 360 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.17.tgz#9b7ef5d0df97593a80f946b482e34fcba3fa4aaf" 361 | integrity sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg== 362 | 363 | "@esbuild/win32-x64@0.18.17": 364 | version "0.18.17" 365 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.17.tgz#bcb2e042631b3c15792058e189ed879a22b2968b" 366 | integrity sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA== 367 | 368 | "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": 369 | version "4.4.0" 370 | resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" 371 | integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== 372 | dependencies: 373 | eslint-visitor-keys "^3.3.0" 374 | 375 | "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": 376 | version "4.6.2" 377 | resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.2.tgz#1816b5f6948029c5eaacb0703b850ee0cb37d8f8" 378 | integrity sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw== 379 | 380 | "@eslint/eslintrc@^2.1.2": 381 | version "2.1.2" 382 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396" 383 | integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== 384 | dependencies: 385 | ajv "^6.12.4" 386 | debug "^4.3.2" 387 | espree "^9.6.0" 388 | globals "^13.19.0" 389 | ignore "^5.2.0" 390 | import-fresh "^3.2.1" 391 | js-yaml "^4.1.0" 392 | minimatch "^3.1.2" 393 | strip-json-comments "^3.1.1" 394 | 395 | "@eslint/js@8.48.0": 396 | version "8.48.0" 397 | resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.48.0.tgz#642633964e217905436033a2bd08bf322849b7fb" 398 | integrity sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw== 399 | 400 | "@humanwhocodes/config-array@^0.11.10": 401 | version "0.11.10" 402 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2" 403 | integrity sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ== 404 | dependencies: 405 | "@humanwhocodes/object-schema" "^1.2.1" 406 | debug "^4.1.1" 407 | minimatch "^3.0.5" 408 | 409 | "@humanwhocodes/module-importer@^1.0.1": 410 | version "1.0.1" 411 | resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" 412 | integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== 413 | 414 | "@humanwhocodes/object-schema@^1.2.1": 415 | version "1.2.1" 416 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" 417 | integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== 418 | 419 | "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": 420 | version "0.3.3" 421 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" 422 | integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== 423 | dependencies: 424 | "@jridgewell/set-array" "^1.0.1" 425 | "@jridgewell/sourcemap-codec" "^1.4.10" 426 | "@jridgewell/trace-mapping" "^0.3.9" 427 | 428 | "@jridgewell/resolve-uri@3.1.0": 429 | version "3.1.0" 430 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" 431 | integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== 432 | 433 | "@jridgewell/set-array@^1.0.1": 434 | version "1.1.2" 435 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" 436 | integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== 437 | 438 | "@jridgewell/sourcemap-codec@1.4.14": 439 | version "1.4.14" 440 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" 441 | integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== 442 | 443 | "@jridgewell/sourcemap-codec@^1.4.10": 444 | version "1.4.15" 445 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" 446 | integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== 447 | 448 | "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": 449 | version "0.3.18" 450 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" 451 | integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== 452 | dependencies: 453 | "@jridgewell/resolve-uri" "3.1.0" 454 | "@jridgewell/sourcemap-codec" "1.4.14" 455 | 456 | "@nodelib/fs.scandir@2.1.5": 457 | version "2.1.5" 458 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 459 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 460 | dependencies: 461 | "@nodelib/fs.stat" "2.0.5" 462 | run-parallel "^1.1.9" 463 | 464 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 465 | version "2.0.5" 466 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 467 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 468 | 469 | "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": 470 | version "1.2.8" 471 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 472 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 473 | dependencies: 474 | "@nodelib/fs.scandir" "2.1.5" 475 | fastq "^1.6.0" 476 | 477 | "@socialgouv/helm-schema@^1.2.4": 478 | version "1.2.4" 479 | resolved "https://registry.yarnpkg.com/@socialgouv/helm-schema/-/helm-schema-1.2.4.tgz#3841453761912677abf5da677279648cc1a4ae53" 480 | integrity sha512-Am4TLkBfKqhH+FkUptey2PDssh64g2maLXs+wA9+GQ8D2E+4O/GdI/StVIYsb+Akd4ORy5y55p6hZ86rbxCQwg== 481 | dependencies: 482 | comment-parser "^1.4.0" 483 | yaml "^2.3.2" 484 | 485 | "@types/hast@^2.0.0": 486 | version "2.3.5" 487 | resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.5.tgz#08caac88b44d0fdd04dc17a19142355f43bd8a7a" 488 | integrity sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg== 489 | dependencies: 490 | "@types/unist" "^2" 491 | 492 | "@types/json-schema@^7.0.12": 493 | version "7.0.12" 494 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" 495 | integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== 496 | 497 | "@types/node@^20.5.7": 498 | version "20.5.7" 499 | resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.7.tgz#4b8ecac87fbefbc92f431d09c30e176fc0a7c377" 500 | integrity sha512-dP7f3LdZIysZnmvP3ANJYTSwg+wLLl8p7RqniVlV7j+oXSXAbt9h0WIBFmJy5inWZoX9wZN6eXx+YXd9Rh3RBA== 501 | 502 | "@types/parse5@^6.0.0": 503 | version "6.0.3" 504 | resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb" 505 | integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g== 506 | 507 | "@types/prismjs@^1.0.0": 508 | version "1.26.0" 509 | resolved "https://registry.yarnpkg.com/@types/prismjs/-/prismjs-1.26.0.tgz#a1c3809b0ad61c62cac6d4e0c56d610c910b7654" 510 | integrity sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ== 511 | 512 | "@types/prop-types@*": 513 | version "15.7.5" 514 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" 515 | integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== 516 | 517 | "@types/react-dom@^18.2.7": 518 | version "18.2.7" 519 | resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.7.tgz#67222a08c0a6ae0a0da33c3532348277c70abb63" 520 | integrity sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA== 521 | dependencies: 522 | "@types/react" "*" 523 | 524 | "@types/react@*": 525 | version "18.2.18" 526 | resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.18.tgz#c8b233919eef1bdc294f6f34b37f9727ad677516" 527 | integrity sha512-da4NTSeBv/P34xoZPhtcLkmZuJ+oYaCxHmyHzwaDQo9RQPBeXV+06gEk2FpqEcsX9XrnNLvRpVh6bdavDSjtiQ== 528 | dependencies: 529 | "@types/prop-types" "*" 530 | "@types/scheduler" "*" 531 | csstype "^3.0.2" 532 | 533 | "@types/react@^18.2.21": 534 | version "18.2.21" 535 | resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.21.tgz#774c37fd01b522d0b91aed04811b58e4e0514ed9" 536 | integrity sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA== 537 | dependencies: 538 | "@types/prop-types" "*" 539 | "@types/scheduler" "*" 540 | csstype "^3.0.2" 541 | 542 | "@types/scheduler@*": 543 | version "0.16.3" 544 | resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" 545 | integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== 546 | 547 | "@types/semver@^7.5.0": 548 | version "7.5.0" 549 | resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" 550 | integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw== 551 | 552 | "@types/unist@^2", "@types/unist@^2.0.0": 553 | version "2.0.7" 554 | resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.7.tgz#5b06ad6894b236a1d2bd6b2f07850ca5c59cf4d6" 555 | integrity sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g== 556 | 557 | "@typescript-eslint/eslint-plugin@^6.5.0": 558 | version "6.5.0" 559 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.5.0.tgz#5cee33edf0d45d5ec773e3b3111206b098ac8599" 560 | integrity sha512-2pktILyjvMaScU6iK3925uvGU87E+N9rh372uGZgiMYwafaw9SXq86U04XPq3UH6tzRvNgBsub6x2DacHc33lw== 561 | dependencies: 562 | "@eslint-community/regexpp" "^4.5.1" 563 | "@typescript-eslint/scope-manager" "6.5.0" 564 | "@typescript-eslint/type-utils" "6.5.0" 565 | "@typescript-eslint/utils" "6.5.0" 566 | "@typescript-eslint/visitor-keys" "6.5.0" 567 | debug "^4.3.4" 568 | graphemer "^1.4.0" 569 | ignore "^5.2.4" 570 | natural-compare "^1.4.0" 571 | semver "^7.5.4" 572 | ts-api-utils "^1.0.1" 573 | 574 | "@typescript-eslint/parser@^6.5.0": 575 | version "6.5.0" 576 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.5.0.tgz#3d6ed231c5e307c5f5f4a0d86893ec01e92b8c77" 577 | integrity sha512-LMAVtR5GN8nY0G0BadkG0XIe4AcNMeyEy3DyhKGAh9k4pLSMBO7rF29JvDBpZGCmp5Pgz5RLHP6eCpSYZJQDuQ== 578 | dependencies: 579 | "@typescript-eslint/scope-manager" "6.5.0" 580 | "@typescript-eslint/types" "6.5.0" 581 | "@typescript-eslint/typescript-estree" "6.5.0" 582 | "@typescript-eslint/visitor-keys" "6.5.0" 583 | debug "^4.3.4" 584 | 585 | "@typescript-eslint/scope-manager@6.5.0": 586 | version "6.5.0" 587 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.5.0.tgz#f2cb20895aaad41b3ad27cc3a338ce8598f261c5" 588 | integrity sha512-A8hZ7OlxURricpycp5kdPTH3XnjG85UpJS6Fn4VzeoH4T388gQJ/PGP4ole5NfKt4WDVhmLaQ/dBLNDC4Xl/Kw== 589 | dependencies: 590 | "@typescript-eslint/types" "6.5.0" 591 | "@typescript-eslint/visitor-keys" "6.5.0" 592 | 593 | "@typescript-eslint/type-utils@6.5.0": 594 | version "6.5.0" 595 | resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.5.0.tgz#6d246c93739282bc0d2e623f28d0dec6cfcc38d7" 596 | integrity sha512-f7OcZOkRivtujIBQ4yrJNIuwyCQO1OjocVqntl9dgSIZAdKqicj3xFDqDOzHDlGCZX990LqhLQXWRnQvsapq8A== 597 | dependencies: 598 | "@typescript-eslint/typescript-estree" "6.5.0" 599 | "@typescript-eslint/utils" "6.5.0" 600 | debug "^4.3.4" 601 | ts-api-utils "^1.0.1" 602 | 603 | "@typescript-eslint/types@6.5.0": 604 | version "6.5.0" 605 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.5.0.tgz#f4e55cfd99ac5346ea772770bf212a3e689a8f04" 606 | integrity sha512-eqLLOEF5/lU8jW3Bw+8auf4lZSbbljHR2saKnYqON12G/WsJrGeeDHWuQePoEf9ro22+JkbPfWQwKEC5WwLQ3w== 607 | 608 | "@typescript-eslint/typescript-estree@6.5.0": 609 | version "6.5.0" 610 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.5.0.tgz#1cef6bc822585e9ef89d88834bc902d911d747ed" 611 | integrity sha512-q0rGwSe9e5Kk/XzliB9h2LBc9tmXX25G0833r7kffbl5437FPWb2tbpIV9wAATebC/018pGa9fwPDuvGN+LxWQ== 612 | dependencies: 613 | "@typescript-eslint/types" "6.5.0" 614 | "@typescript-eslint/visitor-keys" "6.5.0" 615 | debug "^4.3.4" 616 | globby "^11.1.0" 617 | is-glob "^4.0.3" 618 | semver "^7.5.4" 619 | ts-api-utils "^1.0.1" 620 | 621 | "@typescript-eslint/utils@6.5.0": 622 | version "6.5.0" 623 | resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.5.0.tgz#6668bee4f7f24978b11df8a2ea42d56eebc4662c" 624 | integrity sha512-9nqtjkNykFzeVtt9Pj6lyR9WEdd8npPhhIPM992FWVkZuS6tmxHfGVnlUcjpUP2hv8r4w35nT33mlxd+Be1ACQ== 625 | dependencies: 626 | "@eslint-community/eslint-utils" "^4.4.0" 627 | "@types/json-schema" "^7.0.12" 628 | "@types/semver" "^7.5.0" 629 | "@typescript-eslint/scope-manager" "6.5.0" 630 | "@typescript-eslint/types" "6.5.0" 631 | "@typescript-eslint/typescript-estree" "6.5.0" 632 | semver "^7.5.4" 633 | 634 | "@typescript-eslint/visitor-keys@6.5.0": 635 | version "6.5.0" 636 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.5.0.tgz#1a6f474a0170a447b76f0699ce6700110fd11436" 637 | integrity sha512-yCB/2wkbv3hPsh02ZS8dFQnij9VVQXJMN/gbQsaaY+zxALkZnxa/wagvLEFsAWMPv7d7lxQmNsIzGU1w/T/WyA== 638 | dependencies: 639 | "@typescript-eslint/types" "6.5.0" 640 | eslint-visitor-keys "^3.4.1" 641 | 642 | "@uiw/react-textarea-code-editor@^2.1.7": 643 | version "2.1.7" 644 | resolved "https://registry.yarnpkg.com/@uiw/react-textarea-code-editor/-/react-textarea-code-editor-2.1.7.tgz#f67a190e3f2b4627268e0d17600bbbe396545c33" 645 | integrity sha512-mh3+PLiWPM9eclpdQ16jhm1mlS9IEwwiNkfQX34RACB9M0p7JoSI8Tq0T+3sTgbGzgwkrruOvsXUY6NKYLohZQ== 646 | dependencies: 647 | "@babel/runtime" "^7.18.6" 648 | rehype "~12.0.1" 649 | rehype-prism-plus "1.5.0" 650 | 651 | "@vitejs/plugin-react@^4.0.4": 652 | version "4.0.4" 653 | resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.0.4.tgz#31c3f779dc534e045c4b134e7cf7b150af0a7646" 654 | integrity sha512-7wU921ABnNYkETiMaZy7XqpueMnpu5VxvVps13MjmCo+utBdD79sZzrApHawHtVX66cCJQQTXFcjH0y9dSUK8g== 655 | dependencies: 656 | "@babel/core" "^7.22.9" 657 | "@babel/plugin-transform-react-jsx-self" "^7.22.5" 658 | "@babel/plugin-transform-react-jsx-source" "^7.22.5" 659 | react-refresh "^0.14.0" 660 | 661 | acorn-jsx@^5.3.2: 662 | version "5.3.2" 663 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 664 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 665 | 666 | acorn@^8.9.0: 667 | version "8.10.0" 668 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" 669 | integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== 670 | 671 | ajv@^6.12.4: 672 | version "6.12.6" 673 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 674 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 675 | dependencies: 676 | fast-deep-equal "^3.1.1" 677 | fast-json-stable-stringify "^2.0.0" 678 | json-schema-traverse "^0.4.1" 679 | uri-js "^4.2.2" 680 | 681 | ansi-regex@^5.0.1: 682 | version "5.0.1" 683 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 684 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 685 | 686 | ansi-styles@^3.2.1: 687 | version "3.2.1" 688 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 689 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 690 | dependencies: 691 | color-convert "^1.9.0" 692 | 693 | ansi-styles@^4.1.0: 694 | version "4.3.0" 695 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 696 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 697 | dependencies: 698 | color-convert "^2.0.1" 699 | 700 | argparse@^2.0.1: 701 | version "2.0.1" 702 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 703 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 704 | 705 | array-union@^2.1.0: 706 | version "2.1.0" 707 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 708 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 709 | 710 | "babel-plugin-styled-components@>= 1.12.0": 711 | version "2.1.4" 712 | resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.4.tgz#9a1f37c7f32ef927b4b008b529feb4a2c82b1092" 713 | integrity sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g== 714 | dependencies: 715 | "@babel/helper-annotate-as-pure" "^7.22.5" 716 | "@babel/helper-module-imports" "^7.22.5" 717 | "@babel/plugin-syntax-jsx" "^7.22.5" 718 | lodash "^4.17.21" 719 | picomatch "^2.3.1" 720 | 721 | bail@^2.0.0: 722 | version "2.0.2" 723 | resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" 724 | integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== 725 | 726 | balanced-match@^1.0.0: 727 | version "1.0.2" 728 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 729 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 730 | 731 | brace-expansion@^1.1.7: 732 | version "1.1.11" 733 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 734 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 735 | dependencies: 736 | balanced-match "^1.0.0" 737 | concat-map "0.0.1" 738 | 739 | braces@^3.0.2: 740 | version "3.0.2" 741 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 742 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 743 | dependencies: 744 | fill-range "^7.0.1" 745 | 746 | browserslist@^4.21.9: 747 | version "4.21.10" 748 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.10.tgz#dbbac576628c13d3b2231332cb2ec5a46e015bb0" 749 | integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ== 750 | dependencies: 751 | caniuse-lite "^1.0.30001517" 752 | electron-to-chromium "^1.4.477" 753 | node-releases "^2.0.13" 754 | update-browserslist-db "^1.0.11" 755 | 756 | callsites@^3.0.0: 757 | version "3.1.0" 758 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 759 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 760 | 761 | camelize@^1.0.0: 762 | version "1.0.1" 763 | resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" 764 | integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== 765 | 766 | caniuse-lite@^1.0.30001517: 767 | version "1.0.30001519" 768 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz#3e7b8b8a7077e78b0eb054d69e6edf5c7df35601" 769 | integrity sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg== 770 | 771 | ccount@^2.0.0: 772 | version "2.0.1" 773 | resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" 774 | integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== 775 | 776 | chalk@^2.0.0: 777 | version "2.4.2" 778 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 779 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 780 | dependencies: 781 | ansi-styles "^3.2.1" 782 | escape-string-regexp "^1.0.5" 783 | supports-color "^5.3.0" 784 | 785 | chalk@^4.0.0: 786 | version "4.1.2" 787 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 788 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 789 | dependencies: 790 | ansi-styles "^4.1.0" 791 | supports-color "^7.1.0" 792 | 793 | character-entities-html4@^2.0.0: 794 | version "2.1.0" 795 | resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b" 796 | integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== 797 | 798 | character-entities-legacy@^3.0.0: 799 | version "3.0.0" 800 | resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" 801 | integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== 802 | 803 | character-entities@^2.0.0: 804 | version "2.0.2" 805 | resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" 806 | integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== 807 | 808 | character-reference-invalid@^2.0.0: 809 | version "2.0.1" 810 | resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz#85c66b041e43b47210faf401278abf808ac45cb9" 811 | integrity sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw== 812 | 813 | color-convert@^1.9.0: 814 | version "1.9.3" 815 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 816 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 817 | dependencies: 818 | color-name "1.1.3" 819 | 820 | color-convert@^2.0.1: 821 | version "2.0.1" 822 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 823 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 824 | dependencies: 825 | color-name "~1.1.4" 826 | 827 | color-name@1.1.3: 828 | version "1.1.3" 829 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 830 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 831 | 832 | color-name@~1.1.4: 833 | version "1.1.4" 834 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 835 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 836 | 837 | comma-separated-tokens@^2.0.0: 838 | version "2.0.3" 839 | resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" 840 | integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== 841 | 842 | comment-parser@^1.4.0: 843 | version "1.4.0" 844 | resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.4.0.tgz#0f8c560f59698193854f12884c20c0e39a26d32c" 845 | integrity sha512-QLyTNiZ2KDOibvFPlZ6ZngVsZ/0gYnE6uTXi5aoDg8ed3AkJAz4sEje3Y8a29hQ1s6A99MZXe47fLAXQ1rTqaw== 846 | 847 | concat-map@0.0.1: 848 | version "0.0.1" 849 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 850 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 851 | 852 | convert-source-map@^1.7.0: 853 | version "1.9.0" 854 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" 855 | integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== 856 | 857 | cross-spawn@^7.0.2: 858 | version "7.0.3" 859 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 860 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 861 | dependencies: 862 | path-key "^3.1.0" 863 | shebang-command "^2.0.0" 864 | which "^2.0.1" 865 | 866 | css-color-keywords@^1.0.0: 867 | version "1.0.0" 868 | resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" 869 | integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== 870 | 871 | css-to-react-native@^3.0.0: 872 | version "3.2.0" 873 | resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32" 874 | integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ== 875 | dependencies: 876 | camelize "^1.0.0" 877 | css-color-keywords "^1.0.0" 878 | postcss-value-parser "^4.0.2" 879 | 880 | csstype@^3.0.2: 881 | version "3.1.2" 882 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" 883 | integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== 884 | 885 | debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: 886 | version "4.3.4" 887 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 888 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 889 | dependencies: 890 | ms "2.1.2" 891 | 892 | decode-named-character-reference@^1.0.0: 893 | version "1.0.2" 894 | resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e" 895 | integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg== 896 | dependencies: 897 | character-entities "^2.0.0" 898 | 899 | deep-is@^0.1.3: 900 | version "0.1.4" 901 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 902 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 903 | 904 | dir-glob@^3.0.1: 905 | version "3.0.1" 906 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 907 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 908 | dependencies: 909 | path-type "^4.0.0" 910 | 911 | doctrine@^3.0.0: 912 | version "3.0.0" 913 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 914 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 915 | dependencies: 916 | esutils "^2.0.2" 917 | 918 | electron-to-chromium@^1.4.477: 919 | version "1.4.484" 920 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.484.tgz#770358eba089471c5dae5719db3a5a4fbf02bfb2" 921 | integrity sha512-nO3ZEomTK2PO/3TUXgEx0A97xZTpKVf4p427lABHuCpT1IQ2N+njVh29DkQkCk6Q4m2wjU+faK4xAcfFndwjvw== 922 | 923 | esbuild@^0.18.10: 924 | version "0.18.17" 925 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.17.tgz#2aaf6bc6759b0c605777fdc435fea3969e091cad" 926 | integrity sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg== 927 | optionalDependencies: 928 | "@esbuild/android-arm" "0.18.17" 929 | "@esbuild/android-arm64" "0.18.17" 930 | "@esbuild/android-x64" "0.18.17" 931 | "@esbuild/darwin-arm64" "0.18.17" 932 | "@esbuild/darwin-x64" "0.18.17" 933 | "@esbuild/freebsd-arm64" "0.18.17" 934 | "@esbuild/freebsd-x64" "0.18.17" 935 | "@esbuild/linux-arm" "0.18.17" 936 | "@esbuild/linux-arm64" "0.18.17" 937 | "@esbuild/linux-ia32" "0.18.17" 938 | "@esbuild/linux-loong64" "0.18.17" 939 | "@esbuild/linux-mips64el" "0.18.17" 940 | "@esbuild/linux-ppc64" "0.18.17" 941 | "@esbuild/linux-riscv64" "0.18.17" 942 | "@esbuild/linux-s390x" "0.18.17" 943 | "@esbuild/linux-x64" "0.18.17" 944 | "@esbuild/netbsd-x64" "0.18.17" 945 | "@esbuild/openbsd-x64" "0.18.17" 946 | "@esbuild/sunos-x64" "0.18.17" 947 | "@esbuild/win32-arm64" "0.18.17" 948 | "@esbuild/win32-ia32" "0.18.17" 949 | "@esbuild/win32-x64" "0.18.17" 950 | 951 | escalade@^3.1.1: 952 | version "3.1.1" 953 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 954 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 955 | 956 | escape-string-regexp@^1.0.5: 957 | version "1.0.5" 958 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 959 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 960 | 961 | escape-string-regexp@^4.0.0: 962 | version "4.0.0" 963 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 964 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 965 | 966 | eslint-plugin-react-hooks@^4.6.0: 967 | version "4.6.0" 968 | resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" 969 | integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== 970 | 971 | eslint-plugin-react-refresh@^0.4.3: 972 | version "0.4.3" 973 | resolved "https://registry.yarnpkg.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.3.tgz#59dae8c00a119f06ea16b1d3e6891df3775947c7" 974 | integrity sha512-Hh0wv8bUNY877+sI0BlCUlsS0TYYQqvzEwJsJJPM2WF4RnTStSnSR3zdJYa2nPOJgg3UghXi54lVyMSmpCalzA== 975 | 976 | eslint-scope@^7.2.2: 977 | version "7.2.2" 978 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" 979 | integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== 980 | dependencies: 981 | esrecurse "^4.3.0" 982 | estraverse "^5.2.0" 983 | 984 | eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: 985 | version "3.4.2" 986 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz#8c2095440eca8c933bedcadf16fefa44dbe9ba5f" 987 | integrity sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw== 988 | 989 | eslint-visitor-keys@^3.4.3: 990 | version "3.4.3" 991 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" 992 | integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== 993 | 994 | eslint@^8.48.0: 995 | version "8.48.0" 996 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.48.0.tgz#bf9998ba520063907ba7bfe4c480dc8be03c2155" 997 | integrity sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg== 998 | dependencies: 999 | "@eslint-community/eslint-utils" "^4.2.0" 1000 | "@eslint-community/regexpp" "^4.6.1" 1001 | "@eslint/eslintrc" "^2.1.2" 1002 | "@eslint/js" "8.48.0" 1003 | "@humanwhocodes/config-array" "^0.11.10" 1004 | "@humanwhocodes/module-importer" "^1.0.1" 1005 | "@nodelib/fs.walk" "^1.2.8" 1006 | ajv "^6.12.4" 1007 | chalk "^4.0.0" 1008 | cross-spawn "^7.0.2" 1009 | debug "^4.3.2" 1010 | doctrine "^3.0.0" 1011 | escape-string-regexp "^4.0.0" 1012 | eslint-scope "^7.2.2" 1013 | eslint-visitor-keys "^3.4.3" 1014 | espree "^9.6.1" 1015 | esquery "^1.4.2" 1016 | esutils "^2.0.2" 1017 | fast-deep-equal "^3.1.3" 1018 | file-entry-cache "^6.0.1" 1019 | find-up "^5.0.0" 1020 | glob-parent "^6.0.2" 1021 | globals "^13.19.0" 1022 | graphemer "^1.4.0" 1023 | ignore "^5.2.0" 1024 | imurmurhash "^0.1.4" 1025 | is-glob "^4.0.0" 1026 | is-path-inside "^3.0.3" 1027 | js-yaml "^4.1.0" 1028 | json-stable-stringify-without-jsonify "^1.0.1" 1029 | levn "^0.4.1" 1030 | lodash.merge "^4.6.2" 1031 | minimatch "^3.1.2" 1032 | natural-compare "^1.4.0" 1033 | optionator "^0.9.3" 1034 | strip-ansi "^6.0.1" 1035 | text-table "^0.2.0" 1036 | 1037 | espree@^9.6.0, espree@^9.6.1: 1038 | version "9.6.1" 1039 | resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" 1040 | integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== 1041 | dependencies: 1042 | acorn "^8.9.0" 1043 | acorn-jsx "^5.3.2" 1044 | eslint-visitor-keys "^3.4.1" 1045 | 1046 | esquery@^1.4.2: 1047 | version "1.5.0" 1048 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" 1049 | integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== 1050 | dependencies: 1051 | estraverse "^5.1.0" 1052 | 1053 | esrecurse@^4.3.0: 1054 | version "4.3.0" 1055 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 1056 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 1057 | dependencies: 1058 | estraverse "^5.2.0" 1059 | 1060 | estraverse@^5.1.0, estraverse@^5.2.0: 1061 | version "5.3.0" 1062 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 1063 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 1064 | 1065 | esutils@^2.0.2: 1066 | version "2.0.3" 1067 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 1068 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 1069 | 1070 | extend@^3.0.0: 1071 | version "3.0.2" 1072 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 1073 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 1074 | 1075 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 1076 | version "3.1.3" 1077 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 1078 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 1079 | 1080 | fast-glob@^3.2.9: 1081 | version "3.3.1" 1082 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" 1083 | integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== 1084 | dependencies: 1085 | "@nodelib/fs.stat" "^2.0.2" 1086 | "@nodelib/fs.walk" "^1.2.3" 1087 | glob-parent "^5.1.2" 1088 | merge2 "^1.3.0" 1089 | micromatch "^4.0.4" 1090 | 1091 | fast-json-stable-stringify@^2.0.0: 1092 | version "2.1.0" 1093 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 1094 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 1095 | 1096 | fast-levenshtein@^2.0.6: 1097 | version "2.0.6" 1098 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 1099 | integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== 1100 | 1101 | fastq@^1.6.0: 1102 | version "1.15.0" 1103 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" 1104 | integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== 1105 | dependencies: 1106 | reusify "^1.0.4" 1107 | 1108 | file-entry-cache@^6.0.1: 1109 | version "6.0.1" 1110 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 1111 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 1112 | dependencies: 1113 | flat-cache "^3.0.4" 1114 | 1115 | fill-range@^7.0.1: 1116 | version "7.0.1" 1117 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 1118 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 1119 | dependencies: 1120 | to-regex-range "^5.0.1" 1121 | 1122 | find-up@^5.0.0: 1123 | version "5.0.0" 1124 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 1125 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 1126 | dependencies: 1127 | locate-path "^6.0.0" 1128 | path-exists "^4.0.0" 1129 | 1130 | flat-cache@^3.0.4: 1131 | version "3.0.4" 1132 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 1133 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 1134 | dependencies: 1135 | flatted "^3.1.0" 1136 | rimraf "^3.0.2" 1137 | 1138 | flatted@^3.1.0: 1139 | version "3.2.7" 1140 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" 1141 | integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== 1142 | 1143 | fs.realpath@^1.0.0: 1144 | version "1.0.0" 1145 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1146 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 1147 | 1148 | fsevents@~2.3.2: 1149 | version "2.3.2" 1150 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 1151 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 1152 | 1153 | gensync@^1.0.0-beta.2: 1154 | version "1.0.0-beta.2" 1155 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" 1156 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 1157 | 1158 | glob-parent@^5.1.2: 1159 | version "5.1.2" 1160 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 1161 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 1162 | dependencies: 1163 | is-glob "^4.0.1" 1164 | 1165 | glob-parent@^6.0.2: 1166 | version "6.0.2" 1167 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" 1168 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 1169 | dependencies: 1170 | is-glob "^4.0.3" 1171 | 1172 | glob@^7.1.3: 1173 | version "7.2.3" 1174 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 1175 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 1176 | dependencies: 1177 | fs.realpath "^1.0.0" 1178 | inflight "^1.0.4" 1179 | inherits "2" 1180 | minimatch "^3.1.1" 1181 | once "^1.3.0" 1182 | path-is-absolute "^1.0.0" 1183 | 1184 | globals@^11.1.0: 1185 | version "11.12.0" 1186 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 1187 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 1188 | 1189 | globals@^13.19.0: 1190 | version "13.20.0" 1191 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" 1192 | integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== 1193 | dependencies: 1194 | type-fest "^0.20.2" 1195 | 1196 | globby@^11.1.0: 1197 | version "11.1.0" 1198 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" 1199 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== 1200 | dependencies: 1201 | array-union "^2.1.0" 1202 | dir-glob "^3.0.1" 1203 | fast-glob "^3.2.9" 1204 | ignore "^5.2.0" 1205 | merge2 "^1.4.1" 1206 | slash "^3.0.0" 1207 | 1208 | graphemer@^1.4.0: 1209 | version "1.4.0" 1210 | resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" 1211 | integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== 1212 | 1213 | has-flag@^3.0.0: 1214 | version "3.0.0" 1215 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1216 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 1217 | 1218 | has-flag@^4.0.0: 1219 | version "4.0.0" 1220 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1221 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1222 | 1223 | hast-util-from-parse5@^7.0.0: 1224 | version "7.1.2" 1225 | resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz#aecfef73e3ceafdfa4550716443e4eb7b02e22b0" 1226 | integrity sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw== 1227 | dependencies: 1228 | "@types/hast" "^2.0.0" 1229 | "@types/unist" "^2.0.0" 1230 | hastscript "^7.0.0" 1231 | property-information "^6.0.0" 1232 | vfile "^5.0.0" 1233 | vfile-location "^4.0.0" 1234 | web-namespaces "^2.0.0" 1235 | 1236 | hast-util-parse-selector@^3.0.0: 1237 | version "3.1.1" 1238 | resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz#25ab00ae9e75cbc62cf7a901f68a247eade659e2" 1239 | integrity sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA== 1240 | dependencies: 1241 | "@types/hast" "^2.0.0" 1242 | 1243 | hast-util-raw@^7.0.0: 1244 | version "7.2.3" 1245 | resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-7.2.3.tgz#dcb5b22a22073436dbdc4aa09660a644f4991d99" 1246 | integrity sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg== 1247 | dependencies: 1248 | "@types/hast" "^2.0.0" 1249 | "@types/parse5" "^6.0.0" 1250 | hast-util-from-parse5 "^7.0.0" 1251 | hast-util-to-parse5 "^7.0.0" 1252 | html-void-elements "^2.0.0" 1253 | parse5 "^6.0.0" 1254 | unist-util-position "^4.0.0" 1255 | unist-util-visit "^4.0.0" 1256 | vfile "^5.0.0" 1257 | web-namespaces "^2.0.0" 1258 | zwitch "^2.0.0" 1259 | 1260 | hast-util-to-html@^8.0.0: 1261 | version "8.0.4" 1262 | resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-8.0.4.tgz#0269ef33fa3f6599b260a8dc94f733b8e39e41fc" 1263 | integrity sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA== 1264 | dependencies: 1265 | "@types/hast" "^2.0.0" 1266 | "@types/unist" "^2.0.0" 1267 | ccount "^2.0.0" 1268 | comma-separated-tokens "^2.0.0" 1269 | hast-util-raw "^7.0.0" 1270 | hast-util-whitespace "^2.0.0" 1271 | html-void-elements "^2.0.0" 1272 | property-information "^6.0.0" 1273 | space-separated-tokens "^2.0.0" 1274 | stringify-entities "^4.0.0" 1275 | zwitch "^2.0.4" 1276 | 1277 | hast-util-to-parse5@^7.0.0: 1278 | version "7.1.0" 1279 | resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-7.1.0.tgz#c49391bf8f151973e0c9adcd116b561e8daf29f3" 1280 | integrity sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw== 1281 | dependencies: 1282 | "@types/hast" "^2.0.0" 1283 | comma-separated-tokens "^2.0.0" 1284 | property-information "^6.0.0" 1285 | space-separated-tokens "^2.0.0" 1286 | web-namespaces "^2.0.0" 1287 | zwitch "^2.0.0" 1288 | 1289 | hast-util-to-string@^2.0.0: 1290 | version "2.0.0" 1291 | resolved "https://registry.yarnpkg.com/hast-util-to-string/-/hast-util-to-string-2.0.0.tgz#b008b0a4ea472bf34dd390b7eea1018726ae152a" 1292 | integrity sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A== 1293 | dependencies: 1294 | "@types/hast" "^2.0.0" 1295 | 1296 | hast-util-whitespace@^2.0.0: 1297 | version "2.0.1" 1298 | resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz#0ec64e257e6fc216c7d14c8a1b74d27d650b4557" 1299 | integrity sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng== 1300 | 1301 | hastscript@^7.0.0: 1302 | version "7.2.0" 1303 | resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-7.2.0.tgz#0eafb7afb153d047077fa2a833dc9b7ec604d10b" 1304 | integrity sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw== 1305 | dependencies: 1306 | "@types/hast" "^2.0.0" 1307 | comma-separated-tokens "^2.0.0" 1308 | hast-util-parse-selector "^3.0.0" 1309 | property-information "^6.0.0" 1310 | space-separated-tokens "^2.0.0" 1311 | 1312 | hoist-non-react-statics@^3.0.0: 1313 | version "3.3.2" 1314 | resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" 1315 | integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== 1316 | dependencies: 1317 | react-is "^16.7.0" 1318 | 1319 | html-void-elements@^2.0.0: 1320 | version "2.0.1" 1321 | resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-2.0.1.tgz#29459b8b05c200b6c5ee98743c41b979d577549f" 1322 | integrity sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A== 1323 | 1324 | ignore@^5.2.0, ignore@^5.2.4: 1325 | version "5.2.4" 1326 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" 1327 | integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== 1328 | 1329 | import-fresh@^3.2.1: 1330 | version "3.3.0" 1331 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 1332 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 1333 | dependencies: 1334 | parent-module "^1.0.0" 1335 | resolve-from "^4.0.0" 1336 | 1337 | imurmurhash@^0.1.4: 1338 | version "0.1.4" 1339 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1340 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== 1341 | 1342 | inflight@^1.0.4: 1343 | version "1.0.6" 1344 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1345 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 1346 | dependencies: 1347 | once "^1.3.0" 1348 | wrappy "1" 1349 | 1350 | inherits@2: 1351 | version "2.0.4" 1352 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1353 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1354 | 1355 | is-alphabetical@^2.0.0: 1356 | version "2.0.1" 1357 | resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-2.0.1.tgz#01072053ea7c1036df3c7d19a6daaec7f19e789b" 1358 | integrity sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ== 1359 | 1360 | is-alphanumerical@^2.0.0: 1361 | version "2.0.1" 1362 | resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz#7c03fbe96e3e931113e57f964b0a368cc2dfd875" 1363 | integrity sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw== 1364 | dependencies: 1365 | is-alphabetical "^2.0.0" 1366 | is-decimal "^2.0.0" 1367 | 1368 | is-buffer@^2.0.0: 1369 | version "2.0.5" 1370 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" 1371 | integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== 1372 | 1373 | is-decimal@^2.0.0: 1374 | version "2.0.1" 1375 | resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-2.0.1.tgz#9469d2dc190d0214fd87d78b78caecc0cc14eef7" 1376 | integrity sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A== 1377 | 1378 | is-extglob@^2.1.1: 1379 | version "2.1.1" 1380 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1381 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 1382 | 1383 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: 1384 | version "4.0.3" 1385 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 1386 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 1387 | dependencies: 1388 | is-extglob "^2.1.1" 1389 | 1390 | is-hexadecimal@^2.0.0: 1391 | version "2.0.1" 1392 | resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027" 1393 | integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg== 1394 | 1395 | is-number@^7.0.0: 1396 | version "7.0.0" 1397 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1398 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1399 | 1400 | is-path-inside@^3.0.3: 1401 | version "3.0.3" 1402 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" 1403 | integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== 1404 | 1405 | is-plain-obj@^4.0.0: 1406 | version "4.1.0" 1407 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" 1408 | integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== 1409 | 1410 | isexe@^2.0.0: 1411 | version "2.0.0" 1412 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1413 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 1414 | 1415 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: 1416 | version "4.0.0" 1417 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1418 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1419 | 1420 | js-yaml@^4.1.0: 1421 | version "4.1.0" 1422 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 1423 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 1424 | dependencies: 1425 | argparse "^2.0.1" 1426 | 1427 | jsesc@^2.5.1: 1428 | version "2.5.2" 1429 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 1430 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 1431 | 1432 | json-schema-traverse@^0.4.1: 1433 | version "0.4.1" 1434 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1435 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1436 | 1437 | json-stable-stringify-without-jsonify@^1.0.1: 1438 | version "1.0.1" 1439 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1440 | integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== 1441 | 1442 | json5@^2.2.2: 1443 | version "2.2.3" 1444 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" 1445 | integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== 1446 | 1447 | levn@^0.4.1: 1448 | version "0.4.1" 1449 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 1450 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 1451 | dependencies: 1452 | prelude-ls "^1.2.1" 1453 | type-check "~0.4.0" 1454 | 1455 | locate-path@^6.0.0: 1456 | version "6.0.0" 1457 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 1458 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 1459 | dependencies: 1460 | p-locate "^5.0.0" 1461 | 1462 | lodash.merge@^4.6.2: 1463 | version "4.6.2" 1464 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 1465 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 1466 | 1467 | lodash@^4.17.21: 1468 | version "4.17.21" 1469 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 1470 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 1471 | 1472 | loose-envify@^1.1.0: 1473 | version "1.4.0" 1474 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 1475 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 1476 | dependencies: 1477 | js-tokens "^3.0.0 || ^4.0.0" 1478 | 1479 | lru-cache@^5.1.1: 1480 | version "5.1.1" 1481 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" 1482 | integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== 1483 | dependencies: 1484 | yallist "^3.0.2" 1485 | 1486 | lru-cache@^6.0.0: 1487 | version "6.0.0" 1488 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 1489 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 1490 | dependencies: 1491 | yallist "^4.0.0" 1492 | 1493 | merge2@^1.3.0, merge2@^1.4.1: 1494 | version "1.4.1" 1495 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 1496 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 1497 | 1498 | micromatch@^4.0.4: 1499 | version "4.0.5" 1500 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" 1501 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 1502 | dependencies: 1503 | braces "^3.0.2" 1504 | picomatch "^2.3.1" 1505 | 1506 | minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: 1507 | version "3.1.2" 1508 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 1509 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1510 | dependencies: 1511 | brace-expansion "^1.1.7" 1512 | 1513 | ms@2.1.2: 1514 | version "2.1.2" 1515 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1516 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1517 | 1518 | nanoid@^3.3.6: 1519 | version "3.3.6" 1520 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" 1521 | integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== 1522 | 1523 | natural-compare@^1.4.0: 1524 | version "1.4.0" 1525 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1526 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== 1527 | 1528 | node-releases@^2.0.13: 1529 | version "2.0.13" 1530 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" 1531 | integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== 1532 | 1533 | once@^1.3.0: 1534 | version "1.4.0" 1535 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1536 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 1537 | dependencies: 1538 | wrappy "1" 1539 | 1540 | optionator@^0.9.3: 1541 | version "0.9.3" 1542 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" 1543 | integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== 1544 | dependencies: 1545 | "@aashutoshrathi/word-wrap" "^1.2.3" 1546 | deep-is "^0.1.3" 1547 | fast-levenshtein "^2.0.6" 1548 | levn "^0.4.1" 1549 | prelude-ls "^1.2.1" 1550 | type-check "^0.4.0" 1551 | 1552 | p-limit@^3.0.2: 1553 | version "3.1.0" 1554 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 1555 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1556 | dependencies: 1557 | yocto-queue "^0.1.0" 1558 | 1559 | p-locate@^5.0.0: 1560 | version "5.0.0" 1561 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 1562 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 1563 | dependencies: 1564 | p-limit "^3.0.2" 1565 | 1566 | parent-module@^1.0.0: 1567 | version "1.0.1" 1568 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1569 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1570 | dependencies: 1571 | callsites "^3.0.0" 1572 | 1573 | parse-entities@^4.0.0: 1574 | version "4.0.1" 1575 | resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-4.0.1.tgz#4e2a01111fb1c986549b944af39eeda258fc9e4e" 1576 | integrity sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w== 1577 | dependencies: 1578 | "@types/unist" "^2.0.0" 1579 | character-entities "^2.0.0" 1580 | character-entities-legacy "^3.0.0" 1581 | character-reference-invalid "^2.0.0" 1582 | decode-named-character-reference "^1.0.0" 1583 | is-alphanumerical "^2.0.0" 1584 | is-decimal "^2.0.0" 1585 | is-hexadecimal "^2.0.0" 1586 | 1587 | parse-numeric-range@^1.3.0: 1588 | version "1.3.0" 1589 | resolved "https://registry.yarnpkg.com/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz#7c63b61190d61e4d53a1197f0c83c47bb670ffa3" 1590 | integrity sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ== 1591 | 1592 | parse5@^6.0.0: 1593 | version "6.0.1" 1594 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" 1595 | integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== 1596 | 1597 | path-exists@^4.0.0: 1598 | version "4.0.0" 1599 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1600 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1601 | 1602 | path-is-absolute@^1.0.0: 1603 | version "1.0.1" 1604 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1605 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 1606 | 1607 | path-key@^3.1.0: 1608 | version "3.1.1" 1609 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1610 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1611 | 1612 | path-type@^4.0.0: 1613 | version "4.0.0" 1614 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 1615 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 1616 | 1617 | picocolors@^1.0.0: 1618 | version "1.0.0" 1619 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 1620 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 1621 | 1622 | picomatch@^2.3.1: 1623 | version "2.3.1" 1624 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1625 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1626 | 1627 | postcss-value-parser@^4.0.2: 1628 | version "4.2.0" 1629 | resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" 1630 | integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== 1631 | 1632 | postcss@^8.4.27: 1633 | version "8.4.28" 1634 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.28.tgz#c6cc681ed00109072816e1557f889ef51cf950a5" 1635 | integrity sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw== 1636 | dependencies: 1637 | nanoid "^3.3.6" 1638 | picocolors "^1.0.0" 1639 | source-map-js "^1.0.2" 1640 | 1641 | prelude-ls@^1.2.1: 1642 | version "1.2.1" 1643 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 1644 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1645 | 1646 | property-information@^6.0.0: 1647 | version "6.2.0" 1648 | resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.2.0.tgz#b74f522c31c097b5149e3c3cb8d7f3defd986a1d" 1649 | integrity sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg== 1650 | 1651 | punycode@^2.1.0: 1652 | version "2.3.0" 1653 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" 1654 | integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== 1655 | 1656 | queue-microtask@^1.2.2: 1657 | version "1.2.3" 1658 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 1659 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 1660 | 1661 | react-dom@^18.2.0: 1662 | version "18.2.0" 1663 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" 1664 | integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== 1665 | dependencies: 1666 | loose-envify "^1.1.0" 1667 | scheduler "^0.23.0" 1668 | 1669 | react-github-fork-banner@^1.1.3: 1670 | version "1.1.3" 1671 | resolved "https://registry.yarnpkg.com/react-github-fork-banner/-/react-github-fork-banner-1.1.3.tgz#9342eaa3c333d60aed1bd24db7504c585a15cec8" 1672 | integrity sha512-SLZqpjJnqVU7EYkhgea6j4COsHx8k6W45+5tHeQhQTg0n5AI+5lzNHWdQnFTBHwYB5V9whLcIAq4dwBaeIVg0A== 1673 | dependencies: 1674 | styled-components "^5.3.3" 1675 | 1676 | react-is@^16.7.0: 1677 | version "16.13.1" 1678 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" 1679 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== 1680 | 1681 | react-refresh@^0.14.0: 1682 | version "0.14.0" 1683 | resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" 1684 | integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== 1685 | 1686 | react@^18.2.0: 1687 | version "18.2.0" 1688 | resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" 1689 | integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== 1690 | dependencies: 1691 | loose-envify "^1.1.0" 1692 | 1693 | refractor@^4.7.0: 1694 | version "4.8.1" 1695 | resolved "https://registry.yarnpkg.com/refractor/-/refractor-4.8.1.tgz#fbdd889333a3d86c9c864479622855c9b38e9d42" 1696 | integrity sha512-/fk5sI0iTgFYlmVGYVew90AoYnNMP6pooClx/XKqyeeCQXrL0Kvgn8V0VEht5ccdljbzzF1i3Q213gcntkRExg== 1697 | dependencies: 1698 | "@types/hast" "^2.0.0" 1699 | "@types/prismjs" "^1.0.0" 1700 | hastscript "^7.0.0" 1701 | parse-entities "^4.0.0" 1702 | 1703 | regenerator-runtime@^0.13.11: 1704 | version "0.13.11" 1705 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" 1706 | integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== 1707 | 1708 | rehype-parse@^8.0.0, rehype-parse@^8.0.2: 1709 | version "8.0.4" 1710 | resolved "https://registry.yarnpkg.com/rehype-parse/-/rehype-parse-8.0.4.tgz#3d17c9ff16ddfef6bbcc8e6a25a99467b482d688" 1711 | integrity sha512-MJJKONunHjoTh4kc3dsM1v3C9kGrrxvA3U8PxZlP2SjH8RNUSrb+lF7Y0KVaUDnGH2QZ5vAn7ulkiajM9ifuqg== 1712 | dependencies: 1713 | "@types/hast" "^2.0.0" 1714 | hast-util-from-parse5 "^7.0.0" 1715 | parse5 "^6.0.0" 1716 | unified "^10.0.0" 1717 | 1718 | rehype-prism-plus@1.5.0: 1719 | version "1.5.0" 1720 | resolved "https://registry.yarnpkg.com/rehype-prism-plus/-/rehype-prism-plus-1.5.0.tgz#113aae19687c0f8faf6f5fb16964ff1527d130d7" 1721 | integrity sha512-KNJYMQHqN+53ZbT5Pa/lO7uorMpBIR3x9RjFeG1lPlQherZDZiPqyOFS464L4BniZ4VG5PnG5DXVqjGtwxWJew== 1722 | dependencies: 1723 | hast-util-to-string "^2.0.0" 1724 | parse-numeric-range "^1.3.0" 1725 | refractor "^4.7.0" 1726 | rehype-parse "^8.0.2" 1727 | unist-util-filter "^4.0.0" 1728 | unist-util-visit "^4.0.0" 1729 | 1730 | rehype-stringify@^9.0.0: 1731 | version "9.0.3" 1732 | resolved "https://registry.yarnpkg.com/rehype-stringify/-/rehype-stringify-9.0.3.tgz#70e3bd6d4d29e7acf36b802deed350305d2c3c17" 1733 | integrity sha512-kWiZ1bgyWlgOxpqD5HnxShKAdXtb2IUljn3hQAhySeak6IOQPPt6DeGnsIh4ixm7yKJWzm8TXFuC/lPfcWHJqw== 1734 | dependencies: 1735 | "@types/hast" "^2.0.0" 1736 | hast-util-to-html "^8.0.0" 1737 | unified "^10.0.0" 1738 | 1739 | rehype@~12.0.1: 1740 | version "12.0.1" 1741 | resolved "https://registry.yarnpkg.com/rehype/-/rehype-12.0.1.tgz#68a317662576dcaa2565a3952e149d6900096bf6" 1742 | integrity sha512-ey6kAqwLM3X6QnMDILJthGvG1m1ULROS9NT4uG9IDCuv08SFyLlreSuvOa//DgEvbXx62DS6elGVqusWhRUbgw== 1743 | dependencies: 1744 | "@types/hast" "^2.0.0" 1745 | rehype-parse "^8.0.0" 1746 | rehype-stringify "^9.0.0" 1747 | unified "^10.0.0" 1748 | 1749 | resolve-from@^4.0.0: 1750 | version "4.0.0" 1751 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1752 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1753 | 1754 | reusify@^1.0.4: 1755 | version "1.0.4" 1756 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 1757 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 1758 | 1759 | rimraf@^3.0.2: 1760 | version "3.0.2" 1761 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1762 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1763 | dependencies: 1764 | glob "^7.1.3" 1765 | 1766 | rollup@^3.27.1: 1767 | version "3.28.1" 1768 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.28.1.tgz#fb44aa6d5e65c7e13fd5bcfff266d0c4ea9ba433" 1769 | integrity sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw== 1770 | optionalDependencies: 1771 | fsevents "~2.3.2" 1772 | 1773 | run-parallel@^1.1.9: 1774 | version "1.2.0" 1775 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 1776 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 1777 | dependencies: 1778 | queue-microtask "^1.2.2" 1779 | 1780 | scheduler@^0.23.0: 1781 | version "0.23.0" 1782 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" 1783 | integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== 1784 | dependencies: 1785 | loose-envify "^1.1.0" 1786 | 1787 | semver@^6.3.1: 1788 | version "6.3.1" 1789 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" 1790 | integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== 1791 | 1792 | semver@^7.5.4: 1793 | version "7.5.4" 1794 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" 1795 | integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== 1796 | dependencies: 1797 | lru-cache "^6.0.0" 1798 | 1799 | shallowequal@^1.1.0: 1800 | version "1.1.0" 1801 | resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" 1802 | integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== 1803 | 1804 | shebang-command@^2.0.0: 1805 | version "2.0.0" 1806 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1807 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1808 | dependencies: 1809 | shebang-regex "^3.0.0" 1810 | 1811 | shebang-regex@^3.0.0: 1812 | version "3.0.0" 1813 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1814 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1815 | 1816 | slash@^3.0.0: 1817 | version "3.0.0" 1818 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 1819 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 1820 | 1821 | source-map-js@^1.0.2: 1822 | version "1.0.2" 1823 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" 1824 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 1825 | 1826 | space-separated-tokens@^2.0.0: 1827 | version "2.0.2" 1828 | resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f" 1829 | integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== 1830 | 1831 | stringify-entities@^4.0.0: 1832 | version "4.0.3" 1833 | resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.3.tgz#cfabd7039d22ad30f3cc435b0ca2c1574fc88ef8" 1834 | integrity sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g== 1835 | dependencies: 1836 | character-entities-html4 "^2.0.0" 1837 | character-entities-legacy "^3.0.0" 1838 | 1839 | strip-ansi@^6.0.1: 1840 | version "6.0.1" 1841 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1842 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1843 | dependencies: 1844 | ansi-regex "^5.0.1" 1845 | 1846 | strip-json-comments@^3.1.1: 1847 | version "3.1.1" 1848 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1849 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1850 | 1851 | styled-components@^5.3.3: 1852 | version "5.3.11" 1853 | resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.11.tgz#9fda7bf1108e39bf3f3e612fcc18170dedcd57a8" 1854 | integrity sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw== 1855 | dependencies: 1856 | "@babel/helper-module-imports" "^7.0.0" 1857 | "@babel/traverse" "^7.4.5" 1858 | "@emotion/is-prop-valid" "^1.1.0" 1859 | "@emotion/stylis" "^0.8.4" 1860 | "@emotion/unitless" "^0.7.4" 1861 | babel-plugin-styled-components ">= 1.12.0" 1862 | css-to-react-native "^3.0.0" 1863 | hoist-non-react-statics "^3.0.0" 1864 | shallowequal "^1.1.0" 1865 | supports-color "^5.5.0" 1866 | 1867 | supports-color@^5.3.0, supports-color@^5.5.0: 1868 | version "5.5.0" 1869 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1870 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1871 | dependencies: 1872 | has-flag "^3.0.0" 1873 | 1874 | supports-color@^7.1.0: 1875 | version "7.2.0" 1876 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1877 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1878 | dependencies: 1879 | has-flag "^4.0.0" 1880 | 1881 | text-table@^0.2.0: 1882 | version "0.2.0" 1883 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1884 | integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== 1885 | 1886 | to-fast-properties@^2.0.0: 1887 | version "2.0.0" 1888 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 1889 | integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== 1890 | 1891 | to-regex-range@^5.0.1: 1892 | version "5.0.1" 1893 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1894 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1895 | dependencies: 1896 | is-number "^7.0.0" 1897 | 1898 | trough@^2.0.0: 1899 | version "2.1.0" 1900 | resolved "https://registry.yarnpkg.com/trough/-/trough-2.1.0.tgz#0f7b511a4fde65a46f18477ab38849b22c554876" 1901 | integrity sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g== 1902 | 1903 | ts-api-utils@^1.0.1: 1904 | version "1.0.1" 1905 | resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.1.tgz#8144e811d44c749cd65b2da305a032510774452d" 1906 | integrity sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A== 1907 | 1908 | type-check@^0.4.0, type-check@~0.4.0: 1909 | version "0.4.0" 1910 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1911 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1912 | dependencies: 1913 | prelude-ls "^1.2.1" 1914 | 1915 | type-fest@^0.20.2: 1916 | version "0.20.2" 1917 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 1918 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 1919 | 1920 | typescript@^5.2.2: 1921 | version "5.2.2" 1922 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" 1923 | integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== 1924 | 1925 | unified@^10.0.0: 1926 | version "10.1.2" 1927 | resolved "https://registry.yarnpkg.com/unified/-/unified-10.1.2.tgz#b1d64e55dafe1f0b98bb6c719881103ecf6c86df" 1928 | integrity sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q== 1929 | dependencies: 1930 | "@types/unist" "^2.0.0" 1931 | bail "^2.0.0" 1932 | extend "^3.0.0" 1933 | is-buffer "^2.0.0" 1934 | is-plain-obj "^4.0.0" 1935 | trough "^2.0.0" 1936 | vfile "^5.0.0" 1937 | 1938 | unist-util-filter@^4.0.0: 1939 | version "4.0.1" 1940 | resolved "https://registry.yarnpkg.com/unist-util-filter/-/unist-util-filter-4.0.1.tgz#fd885dd48adaad345de5f5dc706ec4ff44a8d074" 1941 | integrity sha512-RynicUM/vbOSTSiUK+BnaK9XMfmQUh6gyi7L6taNgc7FIf84GukXVV3ucGzEN/PhUUkdP5hb1MmXc+3cvPUm5Q== 1942 | dependencies: 1943 | "@types/unist" "^2.0.0" 1944 | unist-util-is "^5.0.0" 1945 | unist-util-visit-parents "^5.0.0" 1946 | 1947 | unist-util-is@^5.0.0: 1948 | version "5.2.1" 1949 | resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-5.2.1.tgz#b74960e145c18dcb6226bc57933597f5486deae9" 1950 | integrity sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw== 1951 | dependencies: 1952 | "@types/unist" "^2.0.0" 1953 | 1954 | unist-util-position@^4.0.0: 1955 | version "4.0.4" 1956 | resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-4.0.4.tgz#93f6d8c7d6b373d9b825844645877c127455f037" 1957 | integrity sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg== 1958 | dependencies: 1959 | "@types/unist" "^2.0.0" 1960 | 1961 | unist-util-stringify-position@^3.0.0: 1962 | version "3.0.3" 1963 | resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz#03ad3348210c2d930772d64b489580c13a7db39d" 1964 | integrity sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg== 1965 | dependencies: 1966 | "@types/unist" "^2.0.0" 1967 | 1968 | unist-util-visit-parents@^5.0.0, unist-util-visit-parents@^5.1.1: 1969 | version "5.1.3" 1970 | resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz#b4520811b0ca34285633785045df7a8d6776cfeb" 1971 | integrity sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg== 1972 | dependencies: 1973 | "@types/unist" "^2.0.0" 1974 | unist-util-is "^5.0.0" 1975 | 1976 | unist-util-visit@^4.0.0: 1977 | version "4.1.2" 1978 | resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-4.1.2.tgz#125a42d1eb876283715a3cb5cceaa531828c72e2" 1979 | integrity sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg== 1980 | dependencies: 1981 | "@types/unist" "^2.0.0" 1982 | unist-util-is "^5.0.0" 1983 | unist-util-visit-parents "^5.1.1" 1984 | 1985 | update-browserslist-db@^1.0.11: 1986 | version "1.0.11" 1987 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" 1988 | integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== 1989 | dependencies: 1990 | escalade "^3.1.1" 1991 | picocolors "^1.0.0" 1992 | 1993 | uri-js@^4.2.2: 1994 | version "4.4.1" 1995 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1996 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1997 | dependencies: 1998 | punycode "^2.1.0" 1999 | 2000 | vfile-location@^4.0.0: 2001 | version "4.1.0" 2002 | resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-4.1.0.tgz#69df82fb9ef0a38d0d02b90dd84620e120050dd0" 2003 | integrity sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw== 2004 | dependencies: 2005 | "@types/unist" "^2.0.0" 2006 | vfile "^5.0.0" 2007 | 2008 | vfile-message@^3.0.0: 2009 | version "3.1.4" 2010 | resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-3.1.4.tgz#15a50816ae7d7c2d1fa87090a7f9f96612b59dea" 2011 | integrity sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw== 2012 | dependencies: 2013 | "@types/unist" "^2.0.0" 2014 | unist-util-stringify-position "^3.0.0" 2015 | 2016 | vfile@^5.0.0: 2017 | version "5.3.7" 2018 | resolved "https://registry.yarnpkg.com/vfile/-/vfile-5.3.7.tgz#de0677e6683e3380fafc46544cfe603118826ab7" 2019 | integrity sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g== 2020 | dependencies: 2021 | "@types/unist" "^2.0.0" 2022 | is-buffer "^2.0.0" 2023 | unist-util-stringify-position "^3.0.0" 2024 | vfile-message "^3.0.0" 2025 | 2026 | vite@^4.4.9: 2027 | version "4.4.9" 2028 | resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.9.tgz#1402423f1a2f8d66fd8d15e351127c7236d29d3d" 2029 | integrity sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA== 2030 | dependencies: 2031 | esbuild "^0.18.10" 2032 | postcss "^8.4.27" 2033 | rollup "^3.27.1" 2034 | optionalDependencies: 2035 | fsevents "~2.3.2" 2036 | 2037 | web-namespaces@^2.0.0: 2038 | version "2.0.1" 2039 | resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692" 2040 | integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== 2041 | 2042 | which@^2.0.1: 2043 | version "2.0.2" 2044 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 2045 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 2046 | dependencies: 2047 | isexe "^2.0.0" 2048 | 2049 | wrappy@1: 2050 | version "1.0.2" 2051 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2052 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 2053 | 2054 | yallist@^3.0.2: 2055 | version "3.1.1" 2056 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" 2057 | integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== 2058 | 2059 | yallist@^4.0.0: 2060 | version "4.0.0" 2061 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 2062 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 2063 | 2064 | yaml@^2.3.2: 2065 | version "2.3.2" 2066 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.2.tgz#f522db4313c671a0ca963a75670f1c12ea909144" 2067 | integrity sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg== 2068 | 2069 | yocto-queue@^0.1.0: 2070 | version "0.1.0" 2071 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 2072 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 2073 | 2074 | zwitch@^2.0.0, zwitch@^2.0.4: 2075 | version "2.0.4" 2076 | resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" 2077 | integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A== 2078 | --------------------------------------------------------------------------------